2017-02-23 10 views
0

を使用したアプリケーションまたはオブジェクト指向のエラー私は他のすべてのシートの前で「ナビゲーション」シートを追加したいが、私は "との問題を持っているエクセル2016でVBAベースのハイパーリンクに問題があります=ハイパーリンク "。私のコードは次のようである: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の前に、エラー(アプリケーションまたはオブジェクト指向誤差)ポップアップ表示「Fehlerがobjektorientierter Anwendungs-オーデル」を追加したときにということです。 "="を付けずにマクロを実行すると、プログラムは機能しますが、手動でナビゲーションシートに方程式記号を追加する必要があります。

事前に乾杯!

答えて

0

すでにVBAを使用しているので、なぜ(.Hyperlinks.Addで)ハイパーリンクを追加するのではないVBA機能。

あなたは、私がActiveSheetの使用を低減し、かつActivateMSDN

にもっとそれについて読むことができます。

コード

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 
+0

は、あなたの迅速な応答をありがとう! .Addメソッドも試しましたが、うまくいきませんでした。そのため、私は "手動で"解決しようとしました。あなたのコードを実行すると、次のメッセージが表示されます。 サーバーがビジー状態です。他のアプリケーションがビジー状態であるため、処理を完了できません。他のアプリケーションをアクティブにして問題を解決するには...に変更してください。 しかし、私は押し続けた場合、「Wechseln ZU ...」、何も起こりません。 私は、MS-プロジェクトでマクロを実行していることを言及する必要がありますが、私はEXCLEファイルに書いているように、問題になることはありません。 – Chris

+0

@Chris MS Project ???このコードは? –

+0

はい、このコードはMS ProjectのVBAの一部です。マクロを介してMS Projectからデータをエクスポートし、Excelファイルに書き出します。 HYPERLINKの前にある方程式の記号がちょっとした問題を引き起こすだけで、すべてうまく動作します。私が方程式記号を残すと、プログラムは動作しますが、すでに言及したように、手動で "="を追加して式を得る必要があります。これは便利ではありません。 – Chris

0

式の代わりに、セミコロンのパラメータを区切るためにコンマを使用してみてください。私は、このような式をセルに強制することは、ローカリゼーションを無視すると考えています。

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 
+0

残念ながら、私はドイツ語版のExcelを持っているので、セミコロンが必要です。そうしないと、ハイパーリンクは機能しません。 これはExcelで必要な方程式です: ** = HYPERLINK( "# 'Shee1'!A4"; "Sheet1")** – Chris

+0

@Chrisは式をFormulaLocalに置き換えて動作するはずです –

+0

@Shaiコードを変更しました**ワークシート( "ナビゲーション")。セル(lnRow、1).FormulaLocal = _ **しかし、 "サーバービジー"エラーが表示されます。 – Chris