• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでUsedRange内の可視セルを指定する方法)

エクセルVBAでUsedRange内の可視セルを指定する方法

このQ&Aのポイント
  • エクセルVBAを使用して、UsedRange内の可視セルを指定する方法について教えてください。
  • また、ロックされていないセルに対してデータをクリアする方法も教えていただきたいです。
  • 上記のコードを使用しているのですが、SpecialCellsのところでコンパイルエラーが発生してしまいます。どのように修正すれば良いでしょうか?

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

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

以下のように直してみてください。 For Each c In Intersect(SpecialCells(xlCellTypeVisible), ActiveSheet.UsedRange) | V For Each c In Intersect(ActiveSheet.Cells.SpecialCells(xlCellTypeVisible), ActiveSheet.UsedRange)

merlionXX
質問者

お礼

有難うございました。 例にあげた質問には入れていませんでしたが、さらに「定数」も条件に加え、以下のようにしてうまく行きました。 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

merlionXX
質問者

補足

出来た!  と喜んだのもつかの間。 シートに保護をかけていざ本番!となったら実行時エラーです。 エクセル2000では保護したシートにSpecialCellsは使えないようです。 まあ、これは何とか対応できましたが。 一応、ご報告いたします。

関連するQ&A

専門家に質問してみよう