• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAマクロがうまく動きません)

VBAマクロがうまく動かない原因と修正方法

このQ&Aのポイント
  • VBAマクロを使用してエクセル2010で特定のブックの全シートに対して同じ作業を行いたいが、1シート目で止まってしまう問題が発生しています。エラー表示もなく原因がわからず、修正方法を教えていただきたいです。
  • VBAマクロを使用してエクセル2010で特定のブックの全シートに対して同じ作業を行いたいが、1シート目で止まってしまう問題が発生しています。エラー表示もなく、どのように修正するか困っています。解決策を教えてください。
  • VBAマクロを使用してエクセル2010で特定のブックの全シートに対して同じ作業を行っていますが、1シート目で止まってしまう問題があります。エラー表示もなく、原因がわからず困っています。解決方法を教えてください。

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

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

A列挿入は全シートされていますか? 列挿入はされているがオートフィルがされていない、という場合は、 Cells.Rows.Count の所もWorksheets(i). Cells.Rows.Count としてみてください。 これでダメだったら私もお手上げです。 列挿入もされていない、という場合はちょっと私にもわかりません。

braidal
質問者

お礼

ありがとうございます!解決しました!

braidal
質問者

補足

For i = 1 To ThisWorkbook.Worksheets.Count が間違っていたようで、 For i = 1 To Worksheets.Count としたら動きました、、、 色々指定すれば良いというものでもなかったようです。 プログラムは奥が深いですね。 ありがとうございます。

その他の回答 (2)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.2

すみません。説明不足でした。 すべてのRangeの前にWorksheets(i).をつけるので、 Worksheets(i).Range("A12").AutoFill Destination:=Worksheets(i).Range("A12:A" & Worksheets(i).Range("D" & Cells.Rows.Count).End(xlUp).Row), Type:=xlFillCopy のようにしてみてください。

braidal
質問者

補足

Dim i As Integer ' 現在のブックのシート数を取得 For i = 1 To ThisWorkbook.Worksheets.Count '保護解除 Worksheets(i).Unprotect Password:="" '非表示列を表示 Worksheets(i).Columns.Hidden = False 'A列挿入数式コピー、オートフィル Worksheets(i).Columns(1).Insert Worksheets(i).Range("A12") = "=B12&C12" Worksheets(i).Range("A12").AutoFill Destination:=Worksheets(i).Range("A12:A" & Worksheets(i).Range("D" & Cells.Rows.Count).End(xlUp).Row), Type:=xlFillCopy Next i End Sub 全ての選択の前にワークシート指定が必要なんですね。 構文の先頭だけでいいと思っていました。 上記のように直しましたが、変わらず1シートで止まってしまいます(涙)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

Range("A12") = "=B12&C12" Range("A12").AutoFill Destination:=Range("A12:A" & Range("D" & Cells.Rows.Count).End(xlUp).Row), Type:=xlFillCopy ここの部分、ワークシートが明示されていないのでアクティブシートに対して操作されているのではないでしょうか。Worksheets(i).Range("A12")のようにしてみてください。

braidal
質問者

補足

ありがとうございます。 以下のように修正しましたが、やはり1シート目で終わってしまいます…。 Dim i As Integer ' 現在のブックのシート数を取得 For i = 1 To ThisWorkbook.Worksheets.Count '保護解除 Worksheets(i).Unprotect Password:="" '非表示列を表示 Worksheets(i).Columns.Hidden = False 'A列挿入数式コピー、オートフィル Worksheets(i).Columns(1).Insert Worksheets(i).Range("A12") = "=B12&C12" Worksheets(i).Range("A12").AutoFill Destination:=Range("A12:A" & Range("D" & Cells.Rows.Count).End(xlUp).Row), Type:=xlFillCopy Next i End Sub 何がいけないのでしょうか…。(涙)

関連するQ&A