• ベストアンサー

VBAについて

ExcelのVBAで、ブック内のシートに飛ぶハイパーリンクを設定するマクロを組みたいんですが、シート名に変数を使うと、変数として認識されません。ためしにシート名を指定してみるとうまくいくんですが、どうしても変数を使いたいのです。いい方法ありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1です。 引数名と変数の指定がおかしいのです。 SubAdress → SubAddress 、 "シート番号!A1" → シート番号 & "!A1" つまり SubAddress:= シート番号 & "!A1" にすると動くと思います。 ちなみに以下はサンプルです。 一番左のシートの A4 以降に、2枚目以降のシート名を入れてリンクします。 シートが追加されても、シート名が変更されても、再実行すれば直します。 試すならテスト環境のブックで。 Sub Test1() Dim i As Integer, r As Range  With Worksheets(1)   .Hyperlinks.Delete   .Range("A4:A65536").ClearContents   For i = 2 To Worksheets.Count    Set r = .Cells(i + 2, 1)    r.Value = Worksheets(i).Name    .Hyperlinks.Add Anchor:=r, Address:="", _      SubAddress:=Worksheets(i).Name & "!A1"   Next i  End With End Sub

foolyfool
質問者

お礼

ありがとうございます、早速職場に行って試して見ます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

どのように書いていて、どう言う結果を期待しているのかと、具体的なコードを書いた方がレスしやすいです。 Sub Test() Dim sName As String, r As Range  Set r = ActiveCell  sName = "Sheet1" & "!A1"  ActiveSheet.Hyperlinks.Add r, "", sName End Sub

foolyfool
質問者

補足

Sub ハイパーリンク() Dim 行番号 As Integer Dim シート総数 As Integer Dim シート番号 As Integer シート総数 = Worksheets.Count For 行番号 = 4 To シート総数 + 2 シート番号 = 行番号 - 2 Cells(行番号,1).Select ActiveSheet.Hyperlinks.AddAnchor:=Selection, _ Address:="", SubAdress:= "シート番号!A1" next 行番号 End Sub  このように記述してます。ブックの構成は1シート目に索引があってA列に一連番号、B列に件名が入ってます。2シート目以降は同じ定型で内容が異なるものです。ブックによってシートの総数は変わりますが、索引+定型とゆう形は変わりません。  1シート目の索引の一連番号をクリックすれば、それに対応するシートに飛ぶようにしたいのです。あと、マクロを実行してもフォント変わってしまわないようにしたいです。  作業の関係で、シートの順番が入れ替わったり、間にシートを挿入したりするので、シート名を一連番号にするマクロと、並び替えたシート順で索引簿を作るマクロは完成してます。  長く見にくい説明で申し訳ありませんがよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAのハイパーリンクについて質問です

    こんばんわ。 VBA初心者です。調べてみて分からない箇所がありましたので教えてください m(_ _)m マクロを作成しているブックを、リスト.xls とします。 リストのマクロを実行して、別のブックを開く動作を行います。 開くブックは毎回違い、シートも複数あります。 条件にあてはまるシートをリスト.xls のシート2にハイパーリンクを追加したいと思っています。 ブック、シート名を指定すればリンクを追加できるのですが、毎回ブックもシート名も違うので 変数を使用しなければならないと思うのですがどのように書いていいのかわかりません。 出来れば簡単な解説付きだと嬉しいです。 よろしくお願いします。

  • VBA コピー&ペースト

    次の作業をVBAでマクロを組みたいのですが、どのような構文にすればよいでしょうか。VBA初心者のため、お知恵を拝借させてください。 [目的] 1.ブックA(コピー先)に設定したハイパーリンク先のブックB(コピー元)へジャンプ 2.ブックBへジャンプ後、特定のセルの値をコピー 3.コピーした値をブックAの特定セルへペースト 4. 1.~3.の作業をリピート 対象は、上の作業が未完(ブックAのペースト先のセルがブランク)のもの [詳細] ・ブックB(リンク先)の保存先はサーバー ・リンク先はブックBの特定のシート ・ブックAで設定したハイパーリンクのセルの値がリンク先のシート名 ・ブックBは複数、リンク先のシートも複数(ハイパーリンクごとにリンク先が異なる) ・ブックBにはマクロが設定、開くたびにマクロ有効無効のメッセージ(Excel2003のため) ・コピペする項目は3つ ・ブックA,Bともに開いた状態で、2.~4.のリピートというマクロでも構いません。 以上ですが、他に情報が必要でしたらお申しつけください。 よろしくお願いいたします。

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • エクセルVBA

    エクセルの一部セルを指定してマクロで、新しいブックにコピーしたいと思っています コピー&貼り付けの方法は知っていますが、ワンクリックの方法(指定範囲が広いため)を考えています 色々とVBAの専門書を見ましたが、シートまるごとコピーは複数の書物に載っていますが、見られたくない部分もあります よろしくお願いします

  • エクセルVBAのCall

    エクセルのデザインモードでシートにコマンドボタンを貼り付けて、個人用マクロブック内のマクロを起動する設定をしたいのですが。 Callでマクロを指定する時に、単にマクロ名だけを指定するとマクロが呼び出されないのですが。 個人用マクロの場合は、フルパスみたいな感じで指定する必要があるのでしょうか? その場合どのような指定の仕方になるのでしょうか?

  • マクロ無しのbookでVBAを使う方法

    マクロなしbook1があります。 このbook1をマクロで参照するには 1.book1で、VBAを使う 2.VBAで新規にbook2を開き、book1のシートを取り込む の方法を考えました。 2.は多分できるかとおもうのですが、1.のbook1でVBAを開く方法がわかりません。 VBAはずいぶん昔なので、今はVBAを使うBOOKの作り方をネットで学んだところです。(excelの神髄など) 1.の方法の手順を教えてください。 この手順がわかる良いサイトが教えていただけてもよいです。

  • エクセルVBAについて

    今、エクセルVBAでマクロの作成を行っています マクロの中で、作業用に別なエクセルとシートを作成したのですが マクロの最後でその作業用のエクセルとシートを削除する用にしました。 その際に、エクセルがメッセージボックスが開き 『このエクセルブックを閉じますか』や『このシートを削除してよろしいですか』などと聞いてきます。 このボックスを出さないように強制的に消すことは出来ないのでしょうか? 出来るのであれば、やり方を教えてください。

  • VBA 固定セルから可変セルへのハイパーリンク

    VBA、マクロの記述方法を教えてください ハイパーリンク元:ワークシート1のA1セル ハイパーリンク先:ワークシート2のcells(リンク先セルの行番号,リンク先セルの列番号) リンク先セルの行番号、リンク先セルの列番号はいずれもINTEGERの変数名、でハイパーリンクを張ろうとする時点(段階)でマクロによって値が定義(付与)されているもの、とします

  • VBAからEXCELの新規ファイルを作成する

    VB6.0 Excel2000を使用しています。 VBAからEXCELファイルを参照する方法は前回教えていただきましたが 新規にEXCELファイルを作成する方法がわからないので教えてください。 【やりたいこと】 ・ファイル名は、ダイアログボックスから入力され、フルパスで変数に  格納されています。 ・シート名は固定文字で指定します。 (↑ここまではできています) (↓ここからわかりません) ・セルの内容を編集したあと、指定のファイル名・シート名で保存したい よろしくお願いします。

  • エクセル 非表示のシートをハイパーリンクで表示できますか?

    こんにちは。 エクセルのブック内で、目次シートが1枚、詳細シートが3枚あります。目次の中の項目をクリックすると各詳細シートが開くようにハイパーリンクを設定してあります。 このままでも使えますが、詳細シート3枚を非表示にするとハイパーリンクが機能せず詳細シートが出てきません。 これはエクセルの仕様なんでしょうか?それとも設定の仕方が悪いんでしょうか? ちなみに友人が作ったVBAで設定したらうまくいきました。VBA以外に設定できる方法があるのであれば教えて頂ければ幸いです。 よろしくお願い致します。

専門家に質問してみよう