• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2003 1つのマクロを複数シートで実施)

Excel2003のVBAで複数シートでマクロを実行する方法

このQ&Aのポイント
  • Excel2003のVBAで1つのマクロを複数のシートで実行したいですが、方法が分かりません
  • 具体的には、指定したシート(例:シート2,5,8)でマクロを実行したいです
  • VBA初心者ですので、1文ごとに簡単なコメントや参考書やURLも教えていただきたいです

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

NO2です。 一例です。 全シートを検索して対象のシート("Sheet2", "Sheet5", "Sheet8")に日付を展開します。 Sub カレンダー作成2() Dim 日付, i As Integer 日付 = Application.InputBox _ ("yyyy/m 形式の年月を半角で入力してください" & Chr(10) _ & " 例)2013年の1月 → 2013/1") If 日付 = False Or IsDate(日付) = False Then Exit Sub For i = 1 To Sheets.Count With Sheets(i) Select Case .Name Case "Sheet2", "Sheet5", "Sheet8" .Range("G5").Resize(, 31).ClearContents .Range("C3,G5").Value = DateSerial(Year(日付), Month(日付), 1) .Range("G5").AutoFill Destination:=.Range("G5"). _ Resize(, Day(DateSerial(Year(日付), Month(日付) + 1, 0))) End Select End With Next End Sub

rosso13
質問者

お礼

ご連絡が遅くなってしまい、本当に申し訳ありません。 できました!感動です!すごいです!  正直に申し上げて、内容理解にはまだ時間がかかりますが、 いずれにしましても、解決いたしました。  本当にありがとうございます。数ある質問の中で、私が 掲載した質問に目を留めていただけた事に深く感謝いたします。  今後も引き続き、色々と質問を掲載する機会があるとは 思いますが、ご縁がありましたらぜひまたお願いいたします。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! すでにマクロがありますので、 >1つのマクロを複数のシートで実行したいのですが・・・ とありますが、別マクロを標準モジュールに作り、今のマクロを実行させる方法はどうでしょうか? Alt+F11キー → すでにあるマクロの下に下のコードをコピー&ペーストして 追加した「複数Sheet操作」マクロを実行してみてください。 Sub 複数Sheet操作() Dim k As Long, str As String, myArray str = Application.InputBox("操作したいSheet番号を" & vbCrLf & _ "2,4,5のようにカンマ区切りで入力してください。") 'インプットボックスにカンマ入力があれば If InStr(str, ",") > 0 Then 'カンマで入力値を区切って、格納する myArray = Split(str, ",") 'カンマで区切った最初の文字~最後の文字まで For k = 0 To UBound(myArray) 'k番目のSheetをactiveに Worksheets(Val(myArray(k))).Activate 'マクロを実行 Call カレンダー作成G5 '次のSheetに! Next k 'インプットボックスにカンマ入力がない場合(一つのSheetのみに場合) Else 'アクティブなSheetにマクロを実行 Call カレンダー作成G5 End If End Sub こんな感じではどうでしょうか?m(_ _)m

rosso13
質問者

お礼

 ご連絡が遅くなってしまい、申し訳ありません。 また、非常に丁寧なコメントまで掲載していただき、 重ねて御礼申し上げます。  「なるほど!」の一言に尽きます。感服いたしました。  こういった方法もあるのですね。1つの目的に対して、 さまざまなアプローチの仕方があるのだと、今回お教え いただいた内容を拝見し、思いました。  まだまだVBAに対して、駆け出しどころか「準備運動」の 状態ですので、しっかりと勉強したいと思います。  貴重なお時間をいただき、ご教授いただきまして、 本当にありがとうございました。今後もVBA関連で質問させて いただくことがあると思います。この名前を見たときには、 ぜひまたよろしくお願いいたします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

>1つのマクロを複数のシートで実行したい  ⇒各シートで実行したいのなら、標準モジュールに登録して、対象シートをアクティブにして実行すればOKです。   それとも1回の年月入力で複数の固定シートに同一カレンダを展開したいのでしょうか。

rosso13
質問者

お礼

コメントいただきありがとうございます。 心よりお礼申し上げます。 その上で、お教えください。 >それとも1回の年月入力で複数の固定シートに同一カレンダを >展開したいのでしょうか。 ⇒ご推察の通りです。まさに仰っている形にしたいのですが、  お恥ずかしい話なのですが、  私の知識では到底できるはずがない状況でございます。  もしも可能であれば、質問させていただいた記述に対して、 付記していただく形で、ご教授願えないでしょうか? ご面倒をおかけすることを承知で、ご無理を申し上げております。 ぜひとも、よろしくお願いいたします。

回答No.1

マクロは標準モジュールだとして、activesheet.nameにより実行を制御すればイイのでは??

rosso13
質問者

お礼

コメントいただきありがとうございます。 心よりお礼申し上げます。  その上で、さらにご教授いただきたく。 >マクロは標準モジュールだとして、activesheet.nameにより >実行を制御すればイイのでは?? ⇒ 仰るとおり、マクロは標準モジュールに設定されています。  後半部の「activesheet.nameにより~」の部分が、  申し訳ありません。よく・・・分かりません。  大変お手数だとは思うのですが、私が記述いたしました 内容に「追記」していただく形で、ご教授願えないでしょうか? ぜひとも、よろしくお願いいたします。

関連するQ&A