• ベストアンサー

エクセルVBAについて

エクセルVBAについての質問です。A1、B1と順に入力していき、最終 F1列にカーソルがいったときに(F1を空欄のまま)エンターキーを押すと次の行のD2にカーソルが飛ぶ、そしてD2、E2に入力をして、G列にカーソルを動かしエンターキーで次の行のA列にカーソルが移動する、こんな操作をしたいのですが。つまりF列にカーソルがいったらカーソルは次の行のD列に飛び、G列にカーソルがいったら次の行の先頭つまりA列にカーソルが移動するように。VBA初心者でもつくれるかどうか、よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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で移動してくれます。 どうでしょうか。

derdasdie
質問者

お礼

回答ありがとうございました。 初心者ですが、じっくり考えてやってみます。

その他の回答 (1)

回答No.1

私なら、、、 入力箇所がある程度有限ならプログラムで制御せずにセルの保護を使って実現します。 人はミスをするものですので、入力しなおしがどのように発生するか予想できません。 また、意外にも Excel VBA ではセル上で発生するイベントを制御するのが面倒だったり、そのイベントを利用しても理想通りの動きをさせるのが難しかったりします。 または「1行に入力する箇所はスライドするが、1行で入力するセルの数は固定」というのであれば、入力箇所の数だけテキストボックスを備えたユーザーフォームを使うって手もあります。 これなら「現在の入力行番号」をプログラム側で控えておけば、「何列目から入力するのか」を計算で出せます。

derdasdie
質問者

お礼

参考にさせていただきます。 回答をいただきありがとうございました。

関連するQ&A