.Hyperlinks.Add Excel 2010 VBA:.Names.Add不起作用

我在Windows 7 64位版本的Excel 2010 VBA中遇到了一个问题,而我无法解决这个问题。 通过将下面的代码粘贴到新工作簿的模块中并运行,可以轻松地重新创build问题。

我想要做的是循环通过一些工作表,并在每张表上添加一个定义的名称和一个超链接。

Sub Test() Dim i As Integer Dim ws As Worksheet Dim defName As String For i = 1 To 2 Set ws = Sheets(i) defName = "Name_" & ws.Name ws.Names.Add Name:=defName, RefersToR1C1:="=OFFSET(Sheet3!R1C1,0,0,1)" ws.Hyperlinks.Add Anchor:=ws.Range("A1"), _ Address:="", SubAddress:="=Sheet3!A1" Next i End Sub 

运行代码在第二次迭代上在ws.Names.Add调用上出现以下错误:运行时错误“1004:您键入的公式包含错误。

执行以下任何操作都会使错误消失:

  • 将迭代更改为“i = 1到1”或“i = 2到2”
  • 在for循环中放置一个debugging断点,并在停止时按下F5
  • 将单元格引用更改为ws.Names.Add Name:=defName, RefersToR1C1:="=Sheet3!R1C1" ,即删除OFFSET命令

DoEvents添加到for循环的第一行或设置Application.EnableEvents = False不能解决问题。

有谁知道这个错误的原因或如何解决它? 我很感激任何帮助。

编辑:无论超链接链接到什么问题都会发生。 更改以下超链接不能解决问题

ws.Hyperlinks.Add Anchor:=ws.Range("A1"), Address:="http://www.google.com"

Edit2:pipe理用一个更简单的代码重新创build问题:

 Sub Test() With Sheets(1) .Hyperlinks.Add Anchor:=.Range("A1"), Address:="http://www.google.com" .Names.Add Name:="myDefName", RefersToR1C1:="=OFFSET(Sheet1!R1C1,0,0,1)" End With End Sub 

我通过将for循环分成两个循环来解决这个问题,一个用于.names.add调用,另一个用于hyperlinks.add调用。 这样所有的名字在第一个超链接创build之前就已经被定义了。

对不起,如果这是不正确的我发布这个答案。