- ベストアンサー
エクセルVBAについて
エクセルVBAについての質問です。A1、B1と順に入力していき、最終 F1列にカーソルがいったときに(F1を空欄のまま)エンターキーを押すと次の行のD2にカーソルが飛ぶ、そしてD2、E2に入力をして、G列にカーソルを動かしエンターキーで次の行のA列にカーソルが移動する、こんな操作をしたいのですが。つまりF列にカーソルがいったらカーソルは次の行のD列に飛び、G列にカーソルがいったら次の行の先頭つまりA列にカーソルが移動するように。VBA初心者でもつくれるかどうか、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1でおっしゃっているように、むつかしい、危うい点がありますが ツールーオプションー編集ー移動方向ー右に設定して(VBAでもできますが)おいて Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row Mod 2 = 1 Then If Target.Column = 6 Then Cells(Target.Row + 1, Target.Column - 1).Select End If Else If Target.Column = 7 Then Cells(Target.Row + 1, 1).Select End If End If End Sub これで A列 B C D E F G a b c d e f g h i j k l m n ・・ のようにENTERで移動してくれます。 どうでしょうか。
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
私なら、、、 入力箇所がある程度有限ならプログラムで制御せずにセルの保護を使って実現します。 人はミスをするものですので、入力しなおしがどのように発生するか予想できません。 また、意外にも Excel VBA ではセル上で発生するイベントを制御するのが面倒だったり、そのイベントを利用しても理想通りの動きをさせるのが難しかったりします。 または「1行に入力する箇所はスライドするが、1行で入力するセルの数は固定」というのであれば、入力箇所の数だけテキストボックスを備えたユーザーフォームを使うって手もあります。 これなら「現在の入力行番号」をプログラム側で控えておけば、「何列目から入力するのか」を計算で出せます。
お礼
参考にさせていただきます。 回答をいただきありがとうございました。
お礼
回答ありがとうございました。 初心者ですが、じっくり考えてやってみます。