【问题标题】:Worksheet Name in Variable Includes Filepath变量中的工作表名称包括文件路径
【发布时间】:2021-09-02 11:55:43
【问题描述】:

我将工作表名称存储在变量中。当我使用该变量创建超链接时,生成的链接包含我不想要的文件路径,我只想要工作表名称。非常感谢任何帮助。

Dim wsname as string

wsname = ActiveSheet.Name  ' at this point wsname = "sheetname"

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=wsname, SubAddress:= _
        "", TextToDisplay:="Tasks" 

链接创建为"C:\\.....\filename\\"sheetname"

我也尝试过将 wsname 声明为 Worksheet (Dim wsname As Worksheet)。

【问题讨论】:

  • 认为超链接必须指向单元格,而不是工作表,并且您需要使用SubAddress。你试过吗?

标签: excel vba hyperlink


【解决方案1】:

您可以改用hyperlink 函数。在公式中添加# 将创建一个指向没有文件路径的工作表的链接。

Selection.Cells = "=HYPERLINK(""#" & wsname & "!A1"",""Tasks"")"

【讨论】:

  • 谢谢!正是我想要的! (不知道#)。
【解决方案2】:

到另一个工作表(一个单元格)的超链接

  • 第一个示例在Selection(如果是范围)的第一个单元格中创建一个超链接,链接到同一工作表中的单元格A1
  • 第二个示例在Selection(如果是范围)的第一个单元格中创建一个超链接,链接到同一工作簿的Sheet2 中的单元格A1 (ActiveWorkbook)。
Option Explicit

Sub addHyperlink()
        
    Const dAddress As String = "A1"
        
    If TypeName(Selection) = "Range" Then
        
        Dim sws As Worksheet: Set sws = ActiveSheet
        Dim sCell As Range: Set sCell = Selection.Cells(1)
   
        sws.Hyperlinks.Add _
            Anchor:=sCell, _
            Address:="", _
            SubAddress:="'" & sws.Name & "'!" & dAddress, _
            TextToDisplay:="Tasks"
    
    End If

End Sub

Sub addHyperlink2()
        
    Const dName As String = "Sheet2"
    Const dAddress As String = "A1"
        
    If TypeName(Selection) = "Range" Then
        
        Dim sws As Worksheet: Set sws = ActiveSheet
        Dim sCell As Range: Set sCell = Selection.Cells(1)
        
        On Error Resume Next
        Dim dws As Worksheet: Set dws = sws.Parent.Worksheets(dName)
        On Error GoTo 0
        
        If Not dws Is Nothing Then
            sws.Hyperlinks.Add _
                Anchor:=sCell, _
                Address:="", _
                SubAddress:="'" & dws.Name & "'!" & dAddress, _
                TextToDisplay:="Tasks"
        Else
            MsgBox "The worksheet '" & dName & "' does not exist.", _
                vbCritical, "Add Hyperlink"
        End If
    
    Else
    
        MsgBox "The current selection is not a range.", _
            vbCritical, "Add Hyperlink"
    
    End If

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2019-03-30
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    相关资源
    最近更新 更多