No.1
- 回答日時:
シートのActivateイベントに記述します(Sheet1の場合)
-----------------------------------
Private Sub Worksheet_Activate()
If Range("A1") <> 0 Then
任意のマクロ
Else
Sheets("Sheet2").Select 'ここをSheet毎に変える
End If
End Sub
ありがとうございました。
標準モジュールでの希望でしたので、ポイントできませんでしたが、
とても参考になりました。感謝いたします。
No.2
- 回答日時:
Sub test06()
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Range("A1") <> 0 Then
MsgBox sh.Name
'AAA
Else
End If
Next
End Sub
ーーー
初心者には突飛かも知れないが、常套手段です。
In ActiveWorkBookでなくIn Worksheetsです。
AAAのところに、コメントをはずし、モジュール・ルーチン名を入れてください。
この回答への補足
さっそくのご指導をありがとうございます。
あまりに勉強が不足しているとお叱りをいただきそうですが、重ねてご指導をよろしくお願いいたします。
任意のマクロを「Macro1」とするとき、
Sub test06()
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Range("A1") <> 0 Then
MsgBox sh.Name
Macro1
Else
End If
Next
End Sub
でやってみましたが、うまくできませんでした。何か間違いがありますでしょうか?
お礼欄をつかって恐縮ですが、
(1)A1が空白のときにうまくいかないような気がします。
(2)私の質問の仕方が悪かったのかもしれませんが、
ご指導いただいたコードではアクティブシートでマクロが繰り返されてしまうようです。それぞれのシート上でのマクロ実行がうまくいきませんでした。よろしければ更なるご指導をよろしくお願いいたします。
No.3
- 回答日時:
必要であれば補足をお願いします
1)A1の値が0以外で「任意のマクロ」を実行した時、次のシートも処理するのですか(そこで終わりですか?)
2)質問のマクロを実行するときSheet1が必ず選択されているのですか
3)Sheet1は一番左はじにありますか
4)「次のシート」はWorksheet(n+1)で良いですか? それとも見た目通りの順番で「次」ですか?(Sheet番号通りにSheetが並んでいるとは限らないので)
色々と疑問はありますが「Sheet1は一番左端にある。任意のマクロが実行された時点で次のシートは処理しない。次のシートとは見た目の次のシートとする」前提でマクロを書きます
Sub Macro1()
Dim CntSheet, idx As Integer
CntSheet = Worksheets.Count
Sheets("Sheet1").Activate
For idx = 1 To CntSheet
If ActiveSheet.Range("A1") <> 0 Then
Call 任意のマクロ名
Exit For
Else
If idx < CntSheet Then
ActiveSheet.Next.Select
End If
End If
Next idx
End Sub
この回答への補足
補足要求ありがとうございます。
尚、ご指導お願いいたします。
(1)A1の値が0以外で「任意のマクロ」を実行した時、次のシートも処理します。(そこで終わりではありません)
(2)マクロを実行するときSheet1が必ず選択されているとは限りません。
(3)Sheet1は一番左はじにありません。
(4)「次のシート」はWorksheet(n+1)で良いです。
★さらに、sheet1~sheet50ではマクロを実行したいのですが、そのほかのシート(いくつかあり、いろいろ名前をつけています)はマクロを実行したくはないのです。
そのような条件で可能でしょうか。よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
#03です。
補足ありがとうございました。全てのシートに対して実行するなら#02さんの回答のFor Each文を利用するのが定石と思いますが、先の回答に手を入れたものを再掲します。
変更したのは2点です。
1)Range("A1").Formula で判定するようにした
2)シート名(SheetXX)のXXを取り出して条件判定に加えた
Sub Macro1()
Dim CntSheet, idx As Integer, RES
CntSheet = Worksheets.Count
idx = 1
Do While idx <= CntSheet
Worksheets(idx).Select
If ActiveSheet.Range("A1").Formula <> 0 Then
RES = Val(Application.Substitute(ActiveSheet.Name, "Sheet", "")) ’シート名からSheetを抜いた結果→RES
If RES > 0 And RES < 51 Then
Call 任意のマクロ名
End If
End If
idx = idx + 1
Loop
End Sub
ありがとうございました。希望通りの結果がでました。
シンプルなコードですので、勉強させていただくにも理解しやすく感謝です。
心から感謝申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのセル値に対応してマクロを実行する方法を教えてください セルA1が「1」の時にマクロ名「マク 2 2022/06/19 18:45
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) VBAにてエクセルをpdf化する方法 1 2023/03/10 16:20
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートのクリ...
-
Excelで数字を入れたら対応する...
-
Excelのシート上のShapeにイベ...
-
Excel VBAでのWorksheet_Change...
-
エクセルファイルを開いた回数...
-
エクセルで○をつけるマクロ設定
-
エクセル シート内の一番下のセ...
-
excel定数の違いについて。xlAu...
-
長い時間かかるマクロが実行中...
-
エクセル:セル内の文字列の最...
-
フォルダ内にある全ファイルの...
-
エクセルのワークシート(テン...
-
Excelでセル内の文字をファイル...
-
【エクセル】フリーワード検索...
-
複数のブックに一括で値入力す...
-
エクセルで特定の行だけ行削除...
-
エクセルでマクロを作りすぎた...
-
指定値をマクロで検索&シート移動
-
エクセルのマクロでコマンドボ...
-
Excelマクロでブック全体を検索...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでのWorksheet_Change...
-
Excelで数字を入れたら対応する...
-
エクセルで複数のシートのクリ...
-
エクセルファイルを開いた回数...
-
Excelのシート上のShapeにイベ...
-
エクセルで特定の行だけ行削除...
-
長い時間かかるマクロが実行中...
-
エクセル シート内の一番下のセ...
-
【エクセル】フリーワード検索...
-
Excelでセル内の文字をファイル...
-
【エクセル】「実行時エラー’10...
-
シートではなくBOOK間で重複し...
-
フォルダ内にある全ファイルの...
-
EXCELのダイアログシートって、...
-
エクセル:セル内の文字列の最...
-
自分の専門分野の仕事。初見で...
-
セルの一部分だけを太字にする方法
-
エクセルで○をつけるマクロ設定
-
エクセル マクロ 一定時間おき...
-
Excelにて、同じ画像を複数のセ...
おすすめ情報