• ベストアンサー

EXCELのシート名を指定してそのシートを開くマクロ、VBA?

いつもお世話になります。 次々とシートを追加していくブックがあります。 Sheet1にマクロボタンを作成して、例えばSheet1のA1に「5」と入力すればSheet5が、「8」と入力すればSheet8が、開くようにしたいのですがそのようなマクロは可能でしょうか? (シートのハイパーリンクを利用した目次ではありません。) 初心者ですがよろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 私もフォーム・ボタンにしてみました。フォーム・ボタンは、マクロの設定が自動で出来るからです。ボタンを付けたら、「ボタン作成」のマクロは、削除して構いません。 両方とも、「標準モジュール」に登録してください。 現在は、ボタンは、Sheet1 の H1 につけるようになっています。 '<標準モジュール> Sub ボタン作成()  Dim Lp As Double, Tp As Double, Wd As Double, Ht As Double  '  Const ボタン場所 As String = "H1"  With Worksheets("Sheet1")   .Select   With .Range(ボタン場所)   If Not IsEmpty(Range(ボタン場所).CurrentRegion) Then _   MsgBox "空いている場所に設定してください": Exit Sub   Lp = .Left: Tp = .Top + 1: Wd = .Width: Ht = .Height * 2   End With   With .Buttons.Add(Lp, Tp, Wd, Ht)    .OnAction = "ジャンプ"    .Caption = "ジャンプ"    .Visible = True   End With  End With End Sub '------------------------------------------------- '<標準モジュール> Private Sub ジャンプ()  Dim num As String  With Worksheets("Sheet1")   If IsEmpty(Range("A1")) Then    MsgBox "シート番号を、A1 に入力してください", vbInformation    Exit Sub   End If   num = StrConv(Range("A1").Value, vbNarrow)   On Error Resume Next   Application.Goto Worksheets("Sheet" & num).Range("A1")   If Err() > 0 Then    If Err.Number = 9 Then     MsgBox "シートが見つかりません。", vbCritical     Exit Sub     Else     '非表示シートに対して、こういう反応があります。     MsgBox "シートにアクセスできる状態ではないようです。", vbCritical    End If   End If   On Error GoTo 0   num = vbNull  End With End Sub

haasan99
質問者

お礼

詳細なご回答大変ありがとうございました。 完璧にできました。

その他の回答 (3)

noname#12068
noname#12068
回答No.3

こちらの利用は初めてです。どうぞよろしく。 ほかの方も回答されていますが、自分のも参考にどうぞ。 手順: 1.マクロ用のボタンをフォームツールバーから1つ作ってください 2.ツールバーはツールバーの上で右クリックし、フォームを選んでください 3.表示されたツールバーからボタンを選択し、適当なところへ配置します 4.「マクロの登録」ダイアログが表示されたら新規作成を押し、以下のコードを貼り付けます 5.フォームツールバーを閉じます 6.セルA1に適当な番号を入力します 7.ボタンを押します 入力するコード: Sub ボタン1_Click() ' Sheet1のA1セルに入力された番号のシートに切り替えます Dim SheetName As String On Error GoTo ErrMsg ' シート切り替えに失敗したときのメッセージ SheetName = "Sheet" & StrConv(Sheets("Sheet1").Range("A1").Value, vbNarrow) Sheets(SheetName).Activate ' 該当するシートに切り替える Exit Sub ' 抜ける ErrMsg: ' エラーが発生した際にメッセージを表示する MsgBox "該当するシートが見つからないため、切り替えに失敗しました", vbCritical + vbOKOnly, "切り替え失敗" End Sub

haasan99
質問者

お礼

ありがとうございます。 思い通りにできました!

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

こんなとろころでしょうか。 Sub test1() Dim Num As String Num = Range("A1") On Error GoTo Err Sheets("Sheet" & Num).Select Err: End Sub

haasan99
質問者

お礼

ご回答ありがとうございます。 参考になりました。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

コントロールツールボックスのコマンドボタンを使った例です。 クリックしたらセルA1の値をインデックス値(シートの配列順)にとるシートをアクティブにします。全角数字や数値オーバーの場合は無視されます。 Private Sub CommandButton1_Click() On Error Resume Next ActiveCell.Activate Sheets(Range("a1").Value).Activate End Sub

haasan99
質問者

お礼

早速のご回答ありがとうございました。 大変参考になりました。

関連するQ&A

  • excelでマクロシートをコピーしたとき

    excelでbook1のsheet1のセルA1に「1」を入力→プリントアウト→A1に「11」を入力→プリントアウト・・・以下「31」まで繰り返し。 というマクロが組んであります。 (ボタンにマクロが登録されています。) このシートをbook2にコピーをしたときに マクロを実行する(ボタンを押す)とbook1が開いてしまいます。 これをbook1を開かずにbook2でマクロを実行するには どのようにしたらよいでしょうか。 book2でマクロを作成し直して さらにボタンにマクロを登録していますが、 bookの数が多いのでけっこうな手間になります。 簡単な方法があれば教えて下さい。

  • Excel97でTOPPAGEを開くマクロ

    Excel97を使っています。 ある価格表を作成しました。 Sheet1に目次を作り、ハイパーリンクで 各価格表のSheetに移動するようにしています。 そこで、どこのSheetを開いている状態で閉じても 必ず開いた時にはSheet1の目次が開くようにしたい のですが、何か良い方法はあるでしょうか。 マクロになるかと思いますが、 その場合、どういったマクロをどのように登録すれば いいのかも教えて頂けたら、と思います。 簡単なマクロをボタンに登録、しかしたことないです。 宜しくお願い致します。

  • Excelマクロ シートの移動をするマクロ

    1つのブックに60のシートがあり、 目次シートに1~60のボタンを作って、 ボタンを押せば指定されたシートに飛ぶようなマクロを作りたいのですが どのような構文になるでしょうか? 最初は自動記録でやっていたのですが、 シートの数が多く大変なので何か良い方法がありましたら教えていただけないでしょうか。 宜しくお願い致します。

  • EXCEL VBA シートの名前を指定してコピー

    EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。 コピーされた後のシートにはマクロボタンは削除したいと考えています。 また,コピーした後のアクティブシートは「原本」のシートにしたいのですが これを全部いれたコマンドはどのようになるのでしょうか。 似たような質問だったり,回答があるのですが, どのように組み合わせたらいいのかよく分かりません。 どなたかお助けいただけないでしょうか。 よろしくお願いします。

  • エクセルでシートを追加するマクロについて

    マクロ初心者ですよろしくお願いします エクセルでシート1は名前などの入力用、シート2はフォーム用として作成しております シート1のA1から最大でA20(変動あり)に名前を入力すると名前の数だけシート2のコピーが追加され、シート名も入力した名前に変更する場合のマクロはどうすれば良いのでしょうか? またシート2のB1にも入力した名前を表示させたいです ご教授お願いいたします

  • EXCELのシート名を一括変更するマクロ

    マクロの超初心者ですが、EXCELのシート名を一括変更するマクロを考えてます。 例えば、1つのBOOKで「1」~「31」までの名前が入っているシートを予め用意しておいて、マクロを実行するとメッセージボックスがでてきて、そこに200806と入力するとシート名の「1」が『20080601』に、「2」が『20080602』という感じで31日分自動でできるような方法はないでしょうか?いつも手入力でやっていて大変なので、なにか方法があれば教えて欲しいです。お願いします。

  • エクセル VBA設定について

    初めまして VBAは使ったことがあるのですがほぼ初心者で コードなどを教えて頂きたいのですが エクセルで表を作成しました。 シート名:目次 目次にA2~A7に1月~6月    B2~B7に7月~12月    C2~C7に情報、コスト、計画、1,2,3、 と書いてハイパーリンクで飛ぶようにし、とんだ先からも目次に戻るハイパーリンク を設定しました。シートも同じ名でそれぞれあります。 目次以外を非表示にして見せないようにしたのですが ハイパーリンクが飛ばなくなりました。 目次から移動したときは表示され戻ったときは非表示に戻る 設定をできないか伝授してほしいのですが 宜しくお願い致します。 もしできるならシートの1,2,3はパスワードとか設定して自分しか見れないように できることができるのなら教えて頂きたいです。 皆様お手数ですがよろしくお願い致します。

  • エクセルマクロのことです

    通常使っていたマクロを間違えて消してしまい、その上再構築できなくて困っています。 こんなマクロだったですが。 ブック内に複数のシートが入っています。新しくSheetを追加してA2セル(他のセルの時もあります)をアクティブにします。 Alt+F8→実行でA2セルから下へ、そのブック内の全ての「シート名」が書き出されるというマクロだったのです。 マクロ初心者です、どなたかアドバイスをお願いします。

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

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

  • EXCELマクロ シートの追加、シート名の変更

    おはようございます。 1つのブックで1ヶ月分のシートをつくるマクロを考えています。 月次処理シートのA列に例えば8月であれば、 0801 0802 0803・・・と入力。(もしくは0801から0831までをマクロで自動表示) シートを1ヶ月分自動で生成するマクロを実行して、シート名を0801、0802、・・・とそれぞれ自動で変更。 1ヶ月分のブックの完成としたいのですが、どういうマクロを組めばよいでしょうか。

専門家に質問してみよう