Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Microsoft 365)
エンターキーをトリガーにするVBA
投稿日時: 24/02/22 01:37:17
投稿者: やっ

セルA1でエンターキーを押すとセルB2を選択中にして
A2だとB3といった具合に、A列のセルでエンターキーを押すと、
一つ下のB列のセルを選択中にするVBAはどのように書いたらいいですか?

回答
投稿日時: 24/02/22 09:31:51
投稿者: WinArrow

前提となる
 

引用:

セルA1でエンターキーを押す

は、セルA1が更新されたという認識ですか?
更新されなかった場合は、対処が難しいです。

回答
投稿日時: 24/02/22 09:39:33
投稿者: simple

他掲示板の記事で恐縮ですが、
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11240630996
を参考にしてトライしてみてください。
 
要するに、Application.OnKeyメソッドを使って、
Enterキー(RETURNキー)を押したときに「特定のプロシージャー」を実行するように
キー割り当てを仕込んでおく、というのが基本的アイデアです。
 
あなたのほうで、その「特定のプロシージャ」を書いてください。
キーが押されたときのSelectionの列がA列なら、右下のセルを選択するようにしてください。
 
# しかし、こうしたことが本当に便利なことなのか、個人的には疑問があります。
# 予想もしていないときに妙な動きと感じることが多く、結果、
# 有難迷惑になることは割とよくある話です。
# 事情が変わってA列に連続して入力したいと思ったら、逐一B列に動いてしまう、とか。
# まあ、そうした観点も頭の片隅に入れておいてください。

回答
投稿日時: 24/02/22 09:54:05
投稿者: Suzu

どうしても と言うなら、
 入力したいセルの、セルのロックを解除し
 ワークシート保護 時 、 ロックされたセル範囲の選択 のチェックを解除し、ワークシート保護でしょうか。
 
 
多分
 1件 2行にわたる データーの入力の省力化 の為 と推測しますが
 印刷時は良いでしょうが、今回の入力や、データ検索では 悩みの種にしかなりません。
 素直に、1件 1行のデータ形式にし
 印刷時のみ、複数行へ整形した方が VBAらしいと思います。

回答
投稿日時: 24/02/22 10:02:25
投稿者: QooApp

それは必ずしも右下にずれなければならない話でしょうか。
 
操作可能なセルだけをセルの書式設定から保護解除しておき、
それ以外のセルはロックにチェックを入れておいて、
一時的にシートを保護すれば解決しませんか。
 
例えばマクロを仕込んだボタン(セル保護)と(保護解除)を作って、
・保護範囲をA列、B列以外全セルをロックする
 
・セル保護マクロを実行すると対象シートの保護設定を起動する
 手動でシートの保護設定をするとわかりますが、
 「ロックされたセルの選択を許可する」のチェックを外す
 それと同じ設定をマクロで実行できるようにする
 
・カーソル位置からTabキーで横セルへ移動を実行する
 1行の右端セルの選択がこれ以上不可能な場合、
 仕様で次の行に勝手にずれる
 
・作業が終わったら保護解除マクロでシート保護を解除する
 
こんな感じで構成すれば、セルの選択の移動順序が
A1 > B1 > A2 > B2 > A3 > B3
と列方向の入力が終わると行方向の移動ができます。
 
そうすればTabさえクリックしてれば対象セルの移動ができます。
戻るときはShift + Tabで逆方向に戻ることもできますし。

回答
投稿日時: 24/02/22 10:04:42
投稿者: QooApp

お詫び:時間差でSuzuさんと同一方法を書いてしましました。失礼いたしました。

トピックに返信