如何使用VBA设置Excel单元的名称

nim*_*imo 1 excel vba

我需要为调用特定用户定义函数的单元格设置唯一名称.所以我试着在函数中设置一个名称,如下所示

Dim r As Range
set r = Application.Caller

r.Name = "Unique"
Run Code Online (Sandbox Code Playgroud)

但这不起作用.请帮忙

谢谢

Ale*_*x P 6

以下代码将单元格A1设置为名称"MyUniqueName":

Private Sub NameCell()

Dim rng As Range
Set rng = Range("A1")
rng.Name = "MyUniqueName"

End Sub
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?

编辑

我不确定如何以简单的方式,优雅的方式实现您的需求.我确实管理过这个黑客 - 看看这是否有帮助,但你很可能想要扩充我的解决方案.

假设我在VBA中有以下用户定义的函数,我在工作表中引用:

Public Function MyCustomCalc(Input1 As Integer, Input2 As Integer, Input3 As Integer) As Integer

MyCustomCalc = (Input1 + Input2) - Input3

End Function
Run Code Online (Sandbox Code Playgroud)

每次调用此函数时,我都希望为该函数调用的单元格指定一个名称.为此,如果您在VBA项目中转到"ThisWorkbook"并选择"SheetChange"事件,则可以添加以下内容:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Left$(Target.Formula, 13) = "=MyCustomCalc" Then
    Target.Name = "MyUniqueName"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)

简而言之,此代码检查调用范围是否使用用户定义的函数,然后在此实例中为范围指定名称(MyUniqueName).

正如我所说,上述情况并不好,但它可能会给你一个开始.我找不到一种方法将代码嵌入用户定义的函数并直接设置范围名称,例如使用Application.Caller.AddressApplication.Caller.Cells(1,1)等等.我确定有一种方法,但我担心我在VBA上生锈了...

  • 还有另一种(虽然不太友好)添加命名范围的方法:ActiveWorkbook.Names.Add Name:="myName",RefersToR1C1:= MyArea.请参阅http://www.mrexcel.com/td0131.html (3认同)