• ベストアンサー

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