繁体   English   中英

VBA Excel-具有= HYPERLINK的应用程序或对象错误

[英]VBA Excel - Application or object oriented error with =HYPERLINK

我在Excel 2016中基于VBA的超链接有问题。我想在所有其他工作表的前面添加“导航”工作表,但是“ = HYPERLINK”有问题。 我的代码如下:

Dim wbBook As workbook

Dim wsActive As Worksheet
Dim wsSheet As Worksheet

Dim lnRow As Long
Dim lnPages As Long
Dim lnCount As Long

Dim temp As Variant

Set wbBook = ActiveWorkbook

wbBook.Sheets.Add(Before:=Worksheets(1)).Name = "Navigation"

Set wsActive = wbBook.ActiveSheet

With wsActive
    .Name = "Navigation"
    With .Range("A1:A1")
        .Value = VBA.Array("Mitarbeiter")
        .Font.Bold = True
    End With
End With

lnRow = 2
lnCount = 1

For Each wsSheet In wbBook.Worksheets
    If wsSheet.Name <> wsActive.Name Then
        wsSheet.Activate
        With wsActive
            Worksheets("Navigation").Cells(lnRow, 1).Formula = _
            "=HYPERLINK(" & Chr(34) & "#" & "'" & wsSheet.Name & "'" & "!A" & lnRow & Chr(34) & ";" & Chr(34) & wsSheet.Name & Chr(34) & ")"      
        End With
        lnRow = lnRow + 1
        lnCount = lnCount + 1
    End If
Next wsSheet

我遇到的问题是,当我在HYPERLINK前面添加“ =”时,会弹出错误“ Anwendungsoder objektorientierter Fehler”(应用程序或面向对象的错误)。 如果运行不带“ =”的宏,则该程序可以运行,但是我必须手动在导航表中添加方程式符号。

提前加油!

由于您已经在使用VBA,为什么不使用添加超链接的VBA功能(使用.Hyperlinks.Add )。

您可以在MSDN上了解更多信息

我减少了ActiveSheetActivate

Option Explicit

Sub TestHyperlink()

Dim wbBook As Workbook
Dim wsActive As Worksheet
Dim wsSheet As Worksheet

Dim lnRow As Long
Dim lnPages As Long
Dim lnCount As Long
Dim temp As Variant

Set wbBook = ActiveWorkbook
Set wsActive = wbBook.Sheets.Add(Before:=Worksheets(1))
With wsActive
    .Name = "Navigation"
    With .Range("A1:A1")
        .Value = VBA.Array("Mitarbeiter")
        .Font.Bold = True
    End With
End With

lnRow = 2
lnCount = 1

For Each wsSheet In wbBook.Worksheets
    If wsSheet.Name <> wsActive.Name Then
        With wsSheet
            .Hyperlinks.Add Anchor:=Worksheets("Navigation").Range("A" & lnRow), _
                Address:="", SubAddress:="'" & .Name & "'!" & .Range("A" & lnRow).Address, _
                TextToDisplay:="#" & .Name
        End With
        lnRow = lnRow + 1
        lnCount = lnCount + 1
    End If
Next wsSheet

End Sub

尝试使用逗号分隔公式的参数,而不要使用分号。 我认为将公式强制插入像这样的单元格会忽略本地化。

    With wsActive
        Worksheets("Navigation").Cells(lnRow, 1).Formula = _
        "=HYPERLINK(" & Chr(34) & "#" & "'" & wsSheet.Name & "'" & "!A" & lnRow & Chr(34) & "," & Chr(34) & wsSheet.Name & Chr(34) & ")"      
    End With

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM