- ベストアンサー
エクセル2007のマクロ、2動作ができない
- Okwaveで教えていただいたマクロを一つのボタンで動かそうとしています。
- ステップインで動かすと希望の動作をするのですが実行すると途中で止まります。
- 点検用紙をコピーして日付と曜日を入れようとしています。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.2 さんへの補足のコードについてですが 今月のシートが無くてエラーが発生したとき 新たに作成して、何事もなかったかのように処理を続ける、 ということですよね? > errhandle: > Worksheets("月次点検用紙").Copy before:=Worksheets(2) > ActiveSheet.Name = s Resume '<--- この行追加 > End Sub エラーの起きた行からやり直しする必要があります。 それ以外のエラーが起きた場合に無限ループになる恐れがありますが。 (まあ。無いでしょうけど)
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
No.3・4です! 補足を読ませていただきました。 >現状は24年3月のシートができますがB46を選択した状態で止まります の件は 「次月点検用紙」SheetがB46セルを選択した状態では? それがそのまま追加したSheetにコピーされているだけだと思います。 お示しのマクロをもう一度実行するとご希望の動きにならないでしょうか? それを一度に!というコトであれば No.4でコードを載せていますので それに訂正してみてください。 なんとかご希望通りの動きになれば良いのですが・・・m(_ _)m
お礼
何度もありがとうございます。 2度クリックするのもそう手間でないので大丈夫です。
- tom04
- ベストアンサー率49% (2537/5117)
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
補足
すみません、月次点検用紙をコピーしてシート名を24年3月のように本日の年月にし、A7に本日日付、E7に本日の曜日を入れたいのです。 現状は24年3月のシートができますがB46を選択した状態で止まります。 エラーは表示されません。 よろしくお願いいたします。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! どこでマクロが中断するのでしょうか? 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
補足
すみません、ドットはあります。 中断するのではなく正常終了に見えるのですが思った動作をしないのです。 よろしくお願いいたします。
- mu2011
- ベストアンサー率38% (1910/4994)
処理が間に合っていないからシートがSelectできないのでエラーとなっていると思います。 シートのSelectは削除して、With Range("A7:D7")、range("E7")をWith WorkSheets(s).Range~としてみて下さい。
お礼
素早い回答ありがとうございます。
補足
一度うまく動いたのですが、どこが変わったのかこれで動きません。(並びを整えたりしました。) 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)
う~ん With の後に .が抜けているだけという落ちはないですよね With Range("A7:D7") .Value = Date .NumberFormatLocal = "ggge年m月d日" End With With Range("E7") .Value = Date .NumberFormatLocal = "aaa曜" .Select End With
お礼
素早い回答ありがとうございました。
お礼
回答ありがとうございます。希望した通りに動作します。 エラー処理を今月のシートがない場合に限るような処理にすれば無限ループの心配がないですね。 自分ではできないですが。