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

Hyperlink code shows Subscript out of range error vba excel

我有一个超链接 vba 代码,单击它会激活隐藏的工作表。但出于某种原因,每次我 运行 我都会收到一条错误消息

"Subscript out of Range"

在代码行 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

您应该避免使用变量名,例如 "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

另外,作为建议,

  • 在 VBA 的开头使用 "OPTION EXPLICIT" 强制您显式声明变量
  • 使用符合内容的变量名。您调用变量 "Name" 但实际上您将感叹号在超链接目标中的位置存储在其中...有点令人困惑...

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