こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2005-07-05 12:31:32

QNo.1493101

困ってます

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

こんにちは。

私もフォーム・ボタンにしてみました。フォーム・ボタンは、マクロの設定が自動で出来るからです。ボタンを付けたら、「ボタン作成」のマクロは、削除して構いません。
両方とも、「標準モジュール」に登録してください。

現在は、ボタンは、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

投稿日時 - 2005-07-05 14:12:16

お礼

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

投稿日時 - 2005-07-05 16:58:56

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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

投稿日時 - 2005-07-05 13:13:06

お礼

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

投稿日時 - 2005-07-05 16:57:54

ANo.2

こんなとろころでしょうか。

Sub test1()

Dim Num As String

Num = Range("A1")
On Error GoTo Err
Sheets("Sheet" & Num).Select

Err:

End Sub

投稿日時 - 2005-07-05 12:58:54

お礼

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

投稿日時 - 2005-07-05 16:56:14

ANo.1

コントロールツールボックスのコマンドボタンを使った例です。
クリックしたらセルA1の値をインデックス値(シートの配列順)にとるシートをアクティブにします。全角数字や数値オーバーの場合は無視されます。

Private Sub CommandButton1_Click()
On Error Resume Next
ActiveCell.Activate
Sheets(Range("a1").Value).Activate
End Sub

投稿日時 - 2005-07-05 12:51:35

お礼

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

投稿日時 - 2005-07-05 16:55:29

あなたにオススメの質問