• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2007のマクロ、2動作ができない)

エクセル2007のマクロ、2動作ができない

このQ&Aのポイント
  • Okwaveで教えていただいたマクロを一つのボタンで動かそうとしています。
  • ステップインで動かすと希望の動作をするのですが実行すると途中で止まります。
  • 点検用紙をコピーして日付と曜日を入れようとしています。

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.6

No.2 さんへの補足のコードについてですが 今月のシートが無くてエラーが発生したとき 新たに作成して、何事もなかったかのように処理を続ける、 ということですよね? > errhandle: > Worksheets("月次点検用紙").Copy before:=Worksheets(2) > ActiveSheet.Name = s  Resume '<--- この行追加 > End Sub エラーの起きた行からやり直しする必要があります。 それ以外のエラーが起きた場合に無限ループになる恐れがありますが。 (まあ。無いでしょうけど)

stardelta
質問者

お礼

回答ありがとうございます。希望した通りに動作します。 エラー処理を今月のシートがない場合に限るような処理にすれば無限ループの心配がないですね。 自分ではできないですが。

その他の回答 (5)

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

No.3・4です! 補足を読ませていただきました。 >現状は24年3月のシートができますがB46を選択した状態で止まります の件は 「次月点検用紙」SheetがB46セルを選択した状態では? それがそのまま追加したSheetにコピーされているだけだと思います。 お示しのマクロをもう一度実行するとご希望の動きにならないでしょうか? それを一度に!というコトであれば No.4でコードを載せていますので それに訂正してみてください。 なんとかご希望通りの動きになれば良いのですが・・・m(_ _)m

stardelta
質問者

お礼

何度もありがとうございます。 2度クリックするのもそう手間でないので大丈夫です。

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

No.3です! 補足に >思ったような動きをしない! とありますが、思ったような動きとはどのような動きなのか・・・ こちらでは判断しかねますが もしかして、追加したSheetのA7~E7セルをコードの最初に書いてあるようにしたいというコトですかね? もしそうであれば エラー処理部分を errhandle: Worksheets("月次点検用紙").Copy before:=Worksheets(2) ActiveSheet.Name = s With ActiveSheet.Range("A7:D7") .Value = Date .NumberFormatLocal = "ggge年m月d日" End With With ActiveSheet.Range("E7") .Value = Date .NumberFormatLocal = "aaa曜" .Select End With としてみては? ※ 「思ったような動き」というのがどのような動きをご希望なのか? 具体的に書かれると他の方からも適切なアドバイスがあると思いますよ。m(_ _)m

stardelta
質問者

補足

すみません、月次点検用紙をコピーしてシート名を24年3月のように本日の年月にし、A7に本日日付、E7に本日の曜日を入れたいのです。 現状は24年3月のシートができますがB46を選択した状態で止まります。 エラーは表示されません。 よろしくお願いいたします。

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

こんばんは! どこでマクロが中断するのでしょうか? VBE画面で黄色になっていると思います。 気になる点が二点あります。 (1)With~End With で挟まれている各行の最初にピリオドがない点。 (2)Sheet名に「○○年△月」のSheet名がない場合(エラーの場合)に 新たにSheetを追加していますが、そちらのコードを errhandle: Worksheets.Add before:=Worksheets(2) Worksheets("月次点検用紙").Cells.Copy Destination:=Worksheets(2).Cells(1, 1) ActiveSheet.Name = s としてみてはどうでしょうか? ※ 他のところでコードが中断していたらごめんなさいね。m(_ _)m

stardelta
質問者

補足

すみません、ドットはあります。 中断するのではなく正常終了に見えるのですが思った動作をしないのです。 よろしくお願いいたします。

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

処理が間に合っていないからシートがSelectできないのでエラーとなっていると思います。 シートのSelectは削除して、With Range("A7:D7")、range("E7")をWith WorkSheets(s).Range~としてみて下さい。

stardelta
質問者

お礼

素早い回答ありがとうございます。

stardelta
質問者

補足

一度うまく動いたのですが、どこが変わったのかこれで動きません。(並びを整えたりしました。) B46を選択した状態で止まります。 Sub macro1() Dim s As String s = Format(Date, "e年m月") On Error GoTo errhandle 'Worksheets(s).Select With Worksheets(s).Range("A7:D7") .Value = Date .NumberFormatLocal = "ggge年m月d日" End With With Range("E7") .Value = Date .NumberFormatLocal = "aaa曜" .Select End With Exit Sub errhandle: Worksheets("月次点検用紙").Copy before:=Worksheets(2) ActiveSheet.Name = s End Sub すみません、よろしくお願いいたします。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

う~ん With の後に .が抜けているだけという落ちはないですよね With Range("A7:D7") .Value = Date .NumberFormatLocal = "ggge年m月d日" End With With Range("E7") .Value = Date .NumberFormatLocal = "aaa曜" .Select End With

stardelta
質問者

お礼

素早い回答ありがとうございました。

関連するQ&A