0

私はしばらくこれに取り組んできましたが、vba の使用方法がよくわかりません。しばらくの間、Web で解決策を探していましたが、成功しませんでした。これが私がやりたいことです:

ワークシート (「PartSheet」という名前) をコピーしてワークシートのリストの最後に配置するマクロがあるので、マクロを押し続けると、次のようにページが作成されます。

タブ名の PartSheet (2)、PartSheet (3) など。

今、このマクロにハイパーリンクを追加しようとしています。新しいコピーを作成するたびに、最初のワークシート (「概要」という名前) へのハイパーリンクも作成されます。

ここに私が書いたコードがあります:

Sub Test2()
    Sheets(Sheets.Count).Select
    Name = ActiveSheet.Name
    Sheets("Summary").Select
    Range("A10").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A10").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        " 'Name' !A1 ", TextToDisplay:="Link"
End Sub

マクロを実行すると、ハイパーリンクが作成されますが、無効な参照になります。

4

2 に答える 2

3

コードを次のように置き換えます。PartSheet の新しいコピーを作成した直後に呼び出すようにしてください。

Sub AddHyperlink()
    Dim targetSheet As Worksheet
    Dim targetRange As Range
    Dim linkedSheet As Worksheet
    Dim linkRange As Range

    'set variable to the sheet the hyperlink will link to
    Set targetSheet = ThisWorkbook.Sheets(ActiveSheet.Name)

    ' specify the range on the summary sheet to link to
    Set targetRange = targetSheet.Range("A1")

    ' set variable to sheet that will have the hyperlink
    Set linkedSheet = ThisWorkbook.Sheets("Summary")

    ' specify where on that sheet we'll create the hyperlink
    Set linkRange = linkedSheet.Range("B4")

    ' create the hypperlink on the copied sheet pointing
    ' back to the summary sheet
    linkedSheet.Hyperlinks.Add Anchor:=linkRange, Address:="", SubAddress:= _
        "'" & targetSheet.Name & "'!" & targetRange.Address, _
        TextToDisplay:="Go To " & targetSheet.Name

End Sub

バグ回避のヒント:

  1. Excel VBA コードを記述するときは、何かを選択したりアクティブにしたりしないでください。
  2. 変数の宣言を常に要求する (VBE で、[ツール] --> [オプション] で、[変数の宣言が必要]の横にあるボックスをオンにします。
于 2013-07-17T03:33:06.567 に答える
1

「SubAddress」の設定方法により動作しません。これを次のように変更します。

Sub Test2()
    Dim Name As String

    Sheets(Sheets.Count).Select
    Name = ActiveSheet.Name
    Sheets("Summary").Select
    Range("A10").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A10").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Name & "!A1", TextToDisplay:="Link"
End Sub
于 2013-07-17T01:53:39.373 に答える