- ベストアンサー
SheetsクラスのSelectメソッドが失敗
- Excelファイルのマクロで、SheetsクラスのSelectメソッドが失敗しましたのエラーが出ます
- 原因はSelectしているSheetの中に非表示なシートがあるのが原因です
- このケースはsheet4~sheet10までのシートを選択して、選択した全てのシートの特定部分を消去し、選択していないシートに入って選択を解除し基本となるシートに戻るというマクロです
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
NO2です。 シート名を以下のコメントコード内の文字列にカンマ区切りで設定して下さい。 Sub sample() Dim i As Integer, ws ws = Split("aaa,bbb,ccc,ddd,eee,fff,ggg", ",") 'シート名配列の作成 For i = 0 To UBound(ws) Debug.Print ws(i) With Sheets(ws(i)) Union( _ .Range("F109:BO109,F112:BO112,F115:BO115,F118:BO118,F121:BO121"), _ .Range("FJ225:GS225,FJ228:GS228,FJ231:GS231,FJ234:GS234,FJ237:GS237"), _ .Range("OA535:PD535,OA538:PD538,OA541:PD541,OA544:PD544,OA547:PD547")). _ ClearContents End With Next Sheets("sheet6").Select Range("J1:L1").Select End Sub
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 環境を間違えましたので訂正です。 ub sample() Dim i As Integer For i = 4 To 10 With Sheets("sheet" & i) Union( _ .Range("F109:BO109,F112:BO112,F115:BO115,F118:BO118,F121:BO121"), _ .Range("FJ225:GS225,FJ228:GS228,FJ231:GS231,FJ234:GS234,FJ237:GS237"), _ .Range("OA535:PD535,OA538:PD538,OA541:PD541,OA544:PD544,OA547:PD547")). _ ClearContents End With Next Sheets("sheet6").Select Range("J1:L1").Select End Sub
お礼
補足ではまずかったのかな? 初めて、投稿したのでまだよくわかりません。すみません。 補足では Dim i As Integer With Sheets("sheet4","sheet5","sheet6","sheet7",........) と書き込みましたが、変数を使用しないので Dim i As Integer もいらないですね ほんとに初心者ですみませんです。
補足
早速の回答ありがとうございます。 Dim i As Integer For i = 4 To 10 With Sheets("sheet" & i) とは、下記のように変更しても大丈夫ですか? Dim i As Integer With Sheets("sheet4","sheet5","sheet6","sheet7",........) というのも、説明が不足していましたが、シート名規則性がないばらばらなためです。
- mu2011
- ベストアンサー率38% (1910/4994)
ご例示のマクロですが、Sheet6しかクリアしないのでは? 一例です。 Sub sample() Dim i As Integer For i = 1 To 3 With Sheets("sheet" & i) Union( _ .Range("F109:BO109,F112:BO112,F115:BO115,F118:BO118,F121:BO121"), _ .Range("FJ225:GS225,FJ228:GS228,FJ231:GS231,FJ234:GS234,FJ237:GS237"), _ .Range("OA535:PD535,OA538:PD538,OA541:PD541,OA544:PD544,OA547:PD547")). _ ClearContents End With Next Sheets("sheet3").Select Range("J1:L1").Select End Sub
お礼
ありがとうございます。 最悪一つ一つシートをActivateして同じ処理をするのかと思っていましたが これで、簡単にできそうです。 他にもExcelファイルで非表示にしたいのがあったので、これを応用したいと思います。 本当にありがとうございました。 追伸、それぞれの関数の意味はちょっとまだ解りませんが、一つ一つ確認してみたいと思います。