超链接代码显示下标超出范围错误vba excel

时间:2015-08-17 14:25:21

标签: excel-vba hyperlink vba excel

我有一个超链接vba代码,可在单击时激活隐藏的工作表。但由于某些原因,每次我跑,我都会收到一个错误

  

"下标超出范围"

代码行Worksheets(MySheet).Visible = xlSheetVisible

代码是

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Linkto = Target.SubAddress
Name = InStr(1, Linkto, "!")
If Name > 0 Then
    MySheet = Left(Linkto, Name - 1)
    Worksheets(MySheet).Visible = xlSheetVisible
    Worksheets(MySheet).Select
    MyAddr = Mid(Linkto, Name + 1)

    Worksheets(MySheet).Range(MyAddr).Select
 End If
End Sub

1 个答案:

答案 0 :(得分:2)

您应该避免使用变量名称,例如" Name"这可能是保留的话。在这种特殊情况下,我猜Name会引用当前的工作表(设置超链接的工作表)

通过替换变量" Name"来尝试相同的代码。例如," myName"

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

  Linkto = Target.SubAddress
  myName = InStr(1, Linkto, "!")
  If myName > 0 Then

      MySheet = Left(Linkto, myName - 1)
      Worksheets(MySheet).Visible = xlSheetVisible
      Worksheets(MySheet).Select
      MyAddr = Mid(Linkto, myName + 1)
      Worksheets(MySheet).Range(MyAddr).Select

  End If
end sub

并且,作为建议,

  • 使用" OPTION EXPLICIT"在你的VBA开头强制你明确声明变量
  • 使用与内容一致的变量名称。你可以调用变量" Name"但你实际上存储了超链接目标中感叹号的位置......有点令人困惑......

希望能解决您的问题......