excel Vba:向通过变量传递的命名范围添加注解

carvr3hs  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(122)

无法找到对尝试将注解分配给命名范围时收到的“1004”运行时错误的答案。我试图从一个名为范围的电子表格中的列表创建。在电子表格中,我在3列中提供了“名称”,“范围”,“注解”,其中“名称”和“注解”是字符串,“范围”是一个公式,通常包含OFFSET。
Sample

Sub FromListCreateNamedRanges()
    Dim wks As Worksheet
    Dim i As Long
    Set wks = ThisWorkbook.Worksheets("Settings")
    For i = 2 To LastRow2(wks, 5)
        CreateNamedRanges wks.Cells(i, 5), wks.Cells(i, 6).Formula, wks.Cells(i, 7)
    Next
End Sub

Sub CreateNamedRanges(str_rngname As String, var_formula As Variant, Optional str_comment As String)
    ThisWorkbook.Names.Add Name:=str_rngname, RefersTo:=var_formula
    ThisWorkbook.Names(str_rngname).Comment = str_comment
End Sub

LastRow2是确定给定列的最后一行的用户函数。一切工作都不使用

ThisWorkbook.Names(str_rngname).Comment = str_comment

在上面的行中,我收到一条错误消息。我将感谢您的帮助、建议和想法。

hmae6n7t

hmae6n7t1#

修改命名范围上的注解时的这种奇怪行为是由.RefersTo中的公式触发的
当公式过于复杂时,当您尝试修改注解时会抛出运行时错误,但当您尝试修改引用时不会抛出运行时错误
一个简单的解决方法是
1.在.RefersTo属性中放置临时简单引用
1.根据需要修改.comment属性
1.将永久复杂引用放入.RefersTo属性中

相关问题