- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでUsedRange内の可視セルを指定する方法)
エクセルVBAでUsedRange内の可視セルを指定する方法
このQ&Aのポイント
- エクセルVBAを使用して、UsedRange内の可視セルを指定する方法について教えてください。
- また、ロックされていないセルに対してデータをクリアする方法も教えていただきたいです。
- 上記のコードを使用しているのですが、SpecialCellsのところでコンパイルエラーが発生してしまいます。どのように修正すれば良いでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
以下のように直してみてください。 For Each c In Intersect(SpecialCells(xlCellTypeVisible), ActiveSheet.UsedRange) | V For Each c In Intersect(ActiveSheet.Cells.SpecialCells(xlCellTypeVisible), ActiveSheet.UsedRange)
お礼
有難うございました。 例にあげた質問には入れていませんでしたが、さらに「定数」も条件に加え、以下のようにしてうまく行きました。 Sub シートクリア() With Application .Calculation = xlCalculationManual .EnableEvents = False With ActiveSheet ' For Each c In .UsedRange.SpecialCells(xlCellTypeVisible) For Each c In Intersect( _ .Cells.SpecialCells(xlCellTypeConstants, 23), _ .Cells.SpecialCells(xlCellTypeVisible), .UsedRange) If c.Locked = False Then c.MergeArea.ClearContents End If Next End With .Calculation = xlCalculationAutomatic .EnableEvents = True End With End Sub
補足
出来た! と喜んだのもつかの間。 シートに保護をかけていざ本番!となったら実行時エラーです。 エクセル2000では保護したシートにSpecialCellsは使えないようです。 まあ、これは何とか対応できましたが。 一応、ご報告いたします。