- ベストアンサー
VBA Offsetで可視セルだけを移動
VBA Offsetで可視セルだけを移動 エクセル2016のマクロで、現在アクティブのセルから3マス左に移動させたいです。 以下ですと、今いるG1セルからA1セルに移動したいです。 / A B C D E F G 1 表示 表示 非表示 表示 非表示 非表示 今いるセル 分かりづらい質問で申し訳ありません。。 質問の趣旨をおわかりいただけるでしょうか? 方法等調べましたがほしい情報が見当たらず、お知恵をお貸しください。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下で試してみて下さい。選択されているセルから3セル左に移動します。 Sub test() Dim i As Long, j As Long j = -1 For i = Selection.Column To Range("A1").Column Step -1 If Columns(i).Hidden = False Then j = j + 1 If j = 3 Then Cells(Selection.Row, i).Select Exit For End If End If Next End Sub
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1742/2617)
> jが3なら移動先のセルを選択する (←この3は移動したい数を入れればいい) はい > ちなみに、jが-1から始まってるのは「今選択しているセルを見ないようにしているから」なのでしょうか? はい、選択しているセルからループが始まるので選択セルをカウントしたときにj=0になるようにしています。 j = -1 をやめて i = Selection.Column - 1 でループを始めるとか j = j + 1 を j = j + 1 End If Next と、上記の場所にするとか もあるのですが、なんとなく目立つかなと思ってそのようにしただけですので感覚にあわせて変更してください。
お礼
承知しました! 色々詳細に回答していただき 本当にありがとうございました!
- kkkkkm
- ベストアンサー率66% (1742/2617)
No.2の追加です。 現状はG列より左のセルが選択された状態で実行したときには移動しませんが、A列を選択したい場合は最後に以下を追加してください。 If j < 3 Then Cells(Selection.Row, "A").Select End If
- kon555
- ベストアンサー率51% (1848/3569)
こちらの記事が参考になると思います。 https://www.relief.jp/docs/excel-vba-for-each-loop-visible-cells.html
お礼
非表示箇所を判断する分岐が必要そうですね、、ありがとうございます!
補足
ありがとうございます!動作しました!! 動作の認識としては以下で合ってますでしょうか? ************ 今選択しているセルからA1セルまでをループ(左に移動するので増減数は-1) i列が非表示ではなかったらj+1 jが3なら移動先のセルを選択する (←この3は移動したい数を入れればいい) ************ ちなみに、jが-1から始まってるのは「今選択しているセルを見ないようにしているから」なのでしょうか? 知識不足で申し訳ありません。 よろしくお願いいたします。