2017-02-13 6 views
1

は私のコードです:ExcelのVBAでサブアドレスとしてワークシート名を設定できませんか?ここで

Dim wsVar As Worksheet 
For Each wsVar In ThisWorkbook.Sheets 
    With wsVar 
.Hyperlinks.Add Anchor:=.Range("G1"), _ 
Address:="", _ 
SubAddress:=Sheets("Table of Contents").Name & "!A1", _ 
TextToDisplay:="Table of Contents" 
    End With 
Next wsVar 

あり、それ以上の他のコードですが、それは私のすべての問題とは無関係です。サブアドレスの行を参照してください。 私は、このサブブックがこの同じブックの目次と呼ばれるワークシートを参照するようにするために、基本的にすべてを試しました。それは動作しません(なぜ私は "!A1"が必要なのかわかりませんが、他の場所から見ていますのでそこにあります)。 正常に動作しても、ハイパーリンクが作成されますが、そのハイパーリンクをクリックすると参照が無効となります。だから私はそれがこのコード行であることを知っています。

+0

は、多分それは私だけだが、私はのために '見つけます各シート... 'For Each wsVar ...よりもはるかにクリーン - 地方とパラメータは単に' camelCase' IMOでなければなりません。ハンガリー語の接頭辞は付きません。インデントはいくつかの助けを得ることができます(http:// rubberduckvba.com/Indentation)も!また、ワークシートの 'Worksheets'コレクションを反復する必要があります。' Sheets'コレクションには 'Worksheet'オブジェクト、yes、さらに' Chart'シートが含まれています。あなたが望むものが*ワークシート*であれば、「ワークシート」を反復してください。 ;-) 'SubAddress:= Sheets(...)'に暗黙のうちに 'ActiveWorkbook'も参照してください。 –

答えて

3

シート名にスペースとその他の特殊文字が含まれている場合は、一重引用符で囲む必要があります(例:SubAddress:="'Table of Contents'!A1")。

(あるいはSubAddress:="'" & Sheets("Table of Contents").Name & "'!A1"が、それはあなたがSheetsコレクションのインデックスとして使用される名前を取得するためにSheetオブジェクトの.Nameプロパティを使用するように少し冗長です。)

関連する問題