- ベストアンサー
VBAマクロがうまく動かない原因と修正方法
- VBAマクロを使用してエクセル2010で特定のブックの全シートに対して同じ作業を行いたいが、1シート目で止まってしまう問題が発生しています。エラー表示もなく原因がわからず、修正方法を教えていただきたいです。
- VBAマクロを使用してエクセル2010で特定のブックの全シートに対して同じ作業を行いたいが、1シート目で止まってしまう問題が発生しています。エラー表示もなく、どのように修正するか困っています。解決策を教えてください。
- VBAマクロを使用してエクセル2010で特定のブックの全シートに対して同じ作業を行っていますが、1シート目で止まってしまう問題があります。エラー表示もなく、原因がわからず困っています。解決方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
A列挿入は全シートされていますか? 列挿入はされているがオートフィルがされていない、という場合は、 Cells.Rows.Count の所もWorksheets(i). Cells.Rows.Count としてみてください。 これでダメだったら私もお手上げです。 列挿入もされていない、という場合はちょっと私にもわかりません。
その他の回答 (2)
- MSZ006
- ベストアンサー率38% (390/1011)
すみません。説明不足でした。 すべての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 のようにしてみてください。
補足
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)
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")のようにしてみてください。
補足
ありがとうございます。 以下のように修正しましたが、やはり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 何がいけないのでしょうか…。(涙)
お礼
ありがとうございます!解決しました!
補足
For i = 1 To ThisWorkbook.Worksheets.Count が間違っていたようで、 For i = 1 To Worksheets.Count としたら動きました、、、 色々指定すれば良いというものでもなかったようです。 プログラムは奥が深いですね。 ありがとうございます。