ボタンが1シート目に28個並んでいます。
ボタンには、「あああ」「いいい」など、名前が表記されており、まだ「マクロの登録」を行っていません。
「ボタンをクリックすると、ボタンと同じ名前のシートをアクティブにする」
というマクロを、ボタンに登録したいです。
また、常に28個ボタンがあるというわけではありません。25個や、26個になる場合もあります。
※1シート目にボタンを作り、そのボタンに名前を付ける作業は、
前回教えていただいた下記のマクロを行いました。
Sub ボタン設置()
With Worksheets(1)
For i = 1 To (Worksheets.Count - 1)
nX = 145 * (1 + ((i - 1) Mod 8))
nY = 30 * (1 + Int(i / 8))
.Buttons.Add(nX, nY, 140, 20).Text = Worksheets(i + 1).Range("I2").Value
Next i
End With
End Sub
No.1ベストアンサー
- 回答日時:
一例です。
Sub ボタン設置()
Dim i As Long, nX As Long, nY As Long
Dim Obj As Object
'前回のボタン削除
For Each Obj In ActiveSheet.Buttons
Obj.Delete
Next Obj
'ボタン登録
For i = 1 To (Worksheets.Count - 1)
nX = 145 * (1 + ((i - 1) Mod 8))
nY = 30 * (1 + Int(i / 8))
With Worksheets(1).Buttons.Add(nX, nY, 140, 20)
.Text = Worksheets(i + 1).Range("I2").Value
.Name = i + 1
.OnAction = "移動"
End With
Next i
End Sub
Sub 移動()
Dim i As Long, btn As String
btn = Application.Caller
i = CLng(ActiveSheet.Buttons(btn).Name)
Worksheets(i).Select
End Sub
No.3
- 回答日時:
だいぶ苦労されておられるようですが
考え方を変えませんか。
要するにシートが沢山あって移動するのが大変と云う事ですよね。
一案ですが
ユーザーフォームを作成
その中に ComboBoxを一つ作成
Private Sub ComboBox1_Change()
Sheets(ComboBox1.Value).Activate
Unload Me
End Sub
Private Sub UserForm_Initialize()
With ComboBox1
For i = 1 To Worksheets.Count
.AddItem Sheets(i).Name
Next
End With
End Sub
こんな感じで、ユーザーフォームを開く(UserForm_Initialize)と
、シート名を全て取り込む
ComboBoxでシート名を選択すると
選択したシートへ移動してユーザーフォームを閉じる。
各シートにボタンを配置するか、リボンに登録するかでも良いかと
ユーザーフォームを表示させるボタンは
Sub ボタン1_Click()
UserForm1.Show
End Sub
全てのシートにボタンだけ張り付けるでばOKだと思います。
リボンにマクロを表示させる方法も検討されてはどうでしょう。
ご回答、ご提案ありがとうございます。
お恥ずかしながら、Excel自体が初心者で、ユーザーフォームの存在も初めて知りました。
回答者様に教えていただいたことは、今後の参考にしたいと思います。
丁寧にご教授くださり、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- Visual Basic(VBA) ※初心者です マクロVBAについて 3 2022/11/05 12:53
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
UPS警告音を止めたい
-
【Excel VBA】マクロボタンを表...
-
Excelで、ボタンにコメントをつ...
-
Excelにストップウオッチ?をつ...
-
フォームコントロールから作っ...
-
VBA 図の削除
-
エクセルの画面にユーザーフォ...
-
エクセルで、オプションボタン...
-
ユーザーフォームをショートカ...
-
マクロ初心者です。 msgboxのre...
-
excel 2000でのマクロボタン作成で
-
VBAでオプションボタンなどそれ...
-
エクセルでマクロボタンを押す...
-
excel スクロールしても常にボ...
-
エクセル ボタンによるチェッ...
-
Access VBAでボタンの背景色を...
-
Accessのフォームでタブの色
-
エクセルでグループボックスを...
-
エクセルマクロ 自動でMSGボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
UPS警告音を止めたい
-
複数シートのボタンに同一の動...
-
ユーザーフォームをショートカ...
-
Excelで、ボタンにコメントをつ...
-
マクロで作ったボタンのサイズ...
-
フォームコントロールから作っ...
-
Excel ラジオボタンのリセット...
-
【Excel VBA】マクロボタンを表...
-
excel スクロールしても常にボ...
-
エクセルで、オプションボタン...
-
EXCELの塗りつぶしのボタ...
-
EXCELのマクロが 実行時エラー5...
-
Accessのフォームでタブの色
-
マクロ初心者です。 msgboxのre...
-
入力済み、選択したセルに連動...
-
Access VBAでボタンの背景色を...
-
エクセルでマクロボタンを押す...
-
エクセルVBA フォームへ動...
おすすめ情報
ご回答ありがとうございます。
教えていただいたマクロを行ってみましたが、
Worksheets(CInt(Application.Caller)).Select
の部分でエラーになってしまいます。
なぜなのかがわかりません。
もし原因が分かるのであれば、ご教授いただきたいです。
せっかく教えていただいたのに、また質問してしまいすみません。