「ボタンを押すと、指定の各シートがアクティブになる」というマクロを実行したいです。
下記のマクロを実行したところ、
シートの1枚目に、ボタンが作成(シートの枚数分)され、各シートの名前が表示されています。
また、そのボタンをクリックすると、名前が同じシートをアクティブにします。
実行してみると、
シート名に「大文字の英語」が使われているものはエラーになりました。
他の漢字やカタカナなどのシート名のボタンをクリックすると、きちんとアクティブになります。
原因として考えられる事を教えていただき、下記のマクロを修正していただけたら幸いです。
※下記のマクロは以前の質問より、回答者様が作ってくださったマクロです。
↓≪回答者様の説明≫
指定のシートを選択する「シート選択」と言うマクロを用意し、
ボタン設置の時にそのマクロに引数でシート名を渡す様に設定しています。
Worksheets(n).Nameでシート名が取得されています。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub ボタン設置()
With Worksheets(1)
For i = 1 To (Worksheets.Count - 1)
nX = 145 * (1 + ((i - 1) Mod 8))
nY = 30 * (1 + Int(i / 8))
sName = Worksheets(i + 1).Name
With .Buttons.Add(nX, nY, 140, 20)
.Text = sName
.OnAction = "'シート選択""" & sName & """'"
End With
Next i
End With
End Sub
Sub シート選択(sShtName As String)
Worksheets(sShtName).Select
End Sub
No.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))
sname = Worksheets(i + 1).Name
sno = i + 1
With .Buttons.Add(nX, nY, 140, 20)
.Text = sname
.OnAction = "'シート選択""" & sno & """'"
End With
Next i
End With
End Sub
Sub シート選択(sShtNo As Integer)
Worksheets(sShtNo).Select
End Sub
------------------------------------------------------ここまで
シート名でうまくいかないので、シート番号にしてみました。
No.2
- 回答日時:
#1です。
元のマクロで「ボタン設置の時にそのマクロに引数でシート名を渡す様に設定」されており、
シート名が全角アルファベットの場合に、正しく渡されてないようだったので、
回答ではボタン用のマクロを変更し、シートの名前ではなくシート番号にて渡すようにしました。
ボタンの表記はシート名のまま、内部のマクロだけ変更したので、見た目は同じで動きも同じだと思います。
No.3ベストアンサー
- 回答日時:
シート名に全角の英数字があると半角に変換されますね。
エクセルの仕様なのかバグなのか分かりません。
シート名をボタンから取得すれば、質問のエラーは回避できるのでは。
Sub シート選択(sShtName As String)
'Worksheets(sShtName).Select
On Error GoTo ErrorHandler
a = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
Worksheets(a).Select
Exit Sub
ErrorHandler:
MsgBox "シート名が見つかりません。"
End Sub
あと、質問のサンプルだと8個目のボタンの位置がずれます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
エクセルで、マクロボタンの表...
-
シートを保護した時でも並べ替...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートの並び替えで...
-
EXCELでマクロを使わずに図形の...
-
VBAでユーザーに別ファイルのシ...
-
VBAで条件によってシート見出し...
-
マクロを特定の複数シートで実...
-
EXCELの起動時に常に同じ...
-
EXCELでワークシートを開いたら...
-
複数シートの保護・解除
-
【 Excel】シートの見出しに自...
-
エクセルで回数をカウントする...
-
Excelで,特定のシートを開いた...
-
VBAマクロが動きません
-
Excelのマクロの呼び出し元を知...
-
エクセル・複数のシートを一度...
-
EXCELのエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロを複数シートに実行する...
-
コマンドボタンがデザインモー...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
EXCELでワークシートを開いたら...
-
エクセルでシートの並び替えで...
-
VBAで条件によってシート見出し...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
エクセルの複数のワークシート...
-
複数シートの保護・解除
-
シートを保護した時でも並べ替...
-
EXCELのエラー
-
エクセルで複数のSheetを一括フ...
-
エクセルで回数をカウントする...
-
EXCELの起動時に常に同じ...
-
VBA シート名を先月の名前に...
-
エクセル2013でマクロのボタン...
-
Excelのマクロの呼び出し元を知...
-
Excelで,特定のシートを開いた...
おすすめ情報
※説明がわかりづらかったので訂正します。質問したいことは以下の通りです。
「ボタンを押すと、ボタン名とシート名が一致するシートがアクティブになる」というマクロを実行したいです。
下記のマクロを実行すると、
①シートの1枚目に、ボタンが作成(シートの枚数分)され、各シートの名前が表示される。
②また、そのボタンをクリックすると、名前が同じシートをアクティブにする。
となる予定でした。
実行してみると、
シート名に「大文字の英語」が使われているボタンをクリックするとエラーになった。
※他の漢字やカタカナなどのシート名のボタンをクリックすると、きちんとアクティブになる。
となりました。
原因として考えられる事を教えていただき、下記のマクロを修正していただけたら幸いです。