.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之前就已经被定义了。
对不起,如果这是不正确的我发布这个答案。