我在Windows 7 64位版本的Excel 2010 VBA中遇到了一个我无法解决的问题。通过将下面的代码粘贴到新工作簿中的模块中并运行它,可以轻松地重新创建该问题。
我想要做的是循环遍历多张工作表,并在每张工作表上添加已定义的名称和超链接。
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:您键入的公式包含错误。
执行以下任何操作都会使错误消失:
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:管理用更简单的代码重新创建问题:
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
答案 0 :(得分:0)
我通过将for循环分成两个循环来解决这个问题,一个用于.names.add调用,另一个用于hyperlinks.add调用。这样就可以在创建第一个超链接之前定义所有名称。
很抱歉,我发布此答案是不对的。