とりにくを好きな人がVBAを勉強しています。

VBAを中心に、その他日々の生活で感じていることを書いていきます。

【Excel】【VBA】オートフィルターしている時に可視セルだけを移動する

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

最近はVBA100本ノックを終えて、実務でもVBAをいじりまくっています。


先日、オートフィルターをしている時にOffsetを使用してセルの移動をしてみたら、非表示セルに移動してしまいました。


その解決方法について解説します。

今回使用するサンプルはこちらです。


f:id:mayo032j:20210310064328p:plain



グループAで絞り込むと次のようになります。


f:id:mayo032j:20210310064344p:plain


ここで普通にOffsetしてしまうと、


f:id:mayo032j:20210310064503p:plain



非表示セルに移動してしまいます。


f:id:mayo032j:20210310064516p:plain



Web検索してみたらば、次のようなコードがありました。
f:id:mayo032j:20210310064545p:plain



なるほど、可視セルにあたるまでループを回すのかと。


実際に使ってみるとうまくいきました!


f:id:mayo032j:20210310064601p:plain



なぜこのような処理をしたかったかというと、絞り込んだ行のある列に対してリスト入力をするようなユーザーフォームを作っていたからです。


次のようなイメージです。


f:id:mayo032j:20210310064610p:plain




入力作業がめちゃくちゃ捗りました。