【问题标题】:VBA error adding a Name with a formula in the referenceVBA 错误在参考中添加带有公式的名称
【发布时间】:2016-11-04 07:38:48
【问题描述】:

我正在尝试将Name 添加到我的工作簿中。该参考有一个INDEX 公式。我在这行代码上遇到错误:

ActiveWorkbook.Names.Add Name:=RangeName, RefersTo:=Reference

我尝试使用ActiveWorkbook 并尝试定义工作表。

我猜它不起作用,因为名称范围无法与工作表匹配,因为它有一个功能,但我不知道如何解决。有人有什么建议吗?

Sub NameRange_Add3()
Dim RangeName As String
Dim Reference As String
Dim i As Integer


For i = 2 To 6
    RangeName = "list" & i
    Reference = "=INDEX(tabla_1;;MATCH(" & "hszis" & i & ";hszi_list;0))"
    ActiveWorkbook.Names.Add Name:=RangeName, RefersTo:=Reference
Next i

End Sub

【问题讨论】:

    标签: vba excel worksheet-function


    【解决方案1】:

    当您在 VBA 中使用创建公式时,您需要使用英文表示法,这意味着点作为小数分隔符,逗号作为函数参数分隔符。

    你可以做 @brettdj 所做的事情并使用逗号

    Reference = "=INDEX(tabla_1,,MATCH(" & "hszis" & 1 & ",hszi_list,0))"
    

    或使用RefersToLocal 代替RefersTo

    ActiveWorkbook.Names.Add Name:=RangeName, RefersToLocal:=Reference
    

    我更喜欢第一种解决方案,否则如果您在具有不同语言设置的机器上执行宏,它可能会失败。

    【讨论】:

      【解决方案2】:

      我用它运行过

      Reference = "=INDEX(tabla_1,MATCH(" & "hszis" & i & ",hszi_list,0))"

      它奏效了。建议您尝试删除奖金;

      Reference = "=INDEX(tabla_1;MATCH(" & "hszis" & i & ";hszi_list;0))"

      【讨论】:

      • 你的意思是奖金;
      • ActiveWorkbook.Names.Add Name:=RangeName, RefersTo:=Reference
      猜你喜欢
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多