- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA 選択範囲のループ処理ができない)
Excel VBAで選択範囲のループ処理がうまくいかない
このQ&Aのポイント
- Excelのバージョンは2007、OSはWindows Vistaです。セルの選択範囲をループ処理しようとした際、全行分ループしてしまいます。画面上の選択範囲は正しいのに、なぜ正しくループさせることができないのか、教えてください。
- Excel VBAで選択範囲のループ処理に関して困っています。セルの選択範囲を正しくループさせる方法が分からず、全行分ループしてしまいます。なぜ選択範囲が正しくループされないのか、教えていただけないでしょうか。
- Excel VBAで選択範囲のループ処理に関して質問があります。セルの選択範囲をループさせる際、全行分ループしてしまい、正しくループさせることができません。画面上の選択範囲が正しいのに、なぜ正しくループされないのでしょうか。お知恵をお貸しください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
可視セルを使えば良いと思います。 下記操作を「マクロの記録」すれば参考コードが得られます。 A列のオートフィルタ範囲を選択 Ctrl+G (ジャンプ) Alt+S (セルの選択) Y (可視セル) Enter (確定) 得られたコードが上手く適用出来ない場合、遠慮なく捕捉質問してください。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
回答No.2
こんばんは。 #1さんの指示で間違いありませんし、マクロが出来ている以上、実際のコードを書くまでもないとは思いますが、記録マクロでは解決できない、2点ほど気をつけなくてはならない点があります。 SpecialCells で、Visible セルを選択する、というものには、タイトル(フィールド)行を含めていますから、その次のセルからです。タイトル行を含めないと、エラーを生じることがあります。 選択された範囲は、Range 型ですが、取得した範囲の末尾に、Cells を付けないと、ループすると、Area(複数のセル) になる可能性があります。 例: Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells
質問者
補足
アドバイスありがとうございます。 Each xxx in Selection~Next でループするより、 rng1 = Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells Each xxx in rng1 ... Next としたほうが安全ってことですよね。
お礼
できました! SpecialCellsで選択範囲を可視セルだけにすることで出来るんですね。 大変助かりました。ありがとうございました。