• 締切済み

数値入力後のセルの変則移動

office XPを使用してます。 タイトルのとおりマクロにて、セルの変則移動のプログラムについて宜しくお願いします。B5からスタートします。 B5に数値入力→ENTER→B9に入力→ENTER→D6に入力→ENTER→G6に入力→ENTER→D9に入力→ENTER→E9に入力→ENTERで終了です。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

標準モジュールに 以下を追加してやればいいでしょう また シートの保護を使って 許可したセル以外には移動できないようにしておきましょう B5,B9,D6,G6,D9,E9をCtrl押しながら選択して 書式 > セルの 保護タブの ロックのチェックを外して OK 次に ツール > 保護 > シートの保護で 『ロックされたセル範囲の選択』のチェックを外してOK これで B5,B9,D6,G6,D9,E9 以外のセルは選択不可になります VBEで標準モジュールを追加し、以下のプロシージャを記述します Enterキー機能を変更するには Macro1を実行 元に戻すには Macro2を実行します なお、エラー処理などはしていませんので シートを限定したり チェック項目以外のセルが選択された場合などを考慮しておりません ' Enterキーの機能を mySelectに変更 Sub Macro1   ' メインキーの Enterキー   Application.OnKey "~", "mySelect"   ' テンキー側の Enterキー   Application.OnKey "{ENTER}", "mySelect" End Sub ' Enterキーの機能を Excelの標準状態に戻す Sub Macro2   ' メインキーの Enterキー   Application.OnKey "~", ""   ' テンキー側の Enterキー   Application.OnKey "{ENTER}", "" End Sub Sub mySelect()   Dim oTarget As Range   Set oTarget = ActiveCell   Select Case oTarget.Address(0, 0)     ' Enterキーが押された場合のセルにより場合分けする     Case "B5"       Set oTarget = Range("B9")     Case "B9"       Set oTarget = Range("D6")     Case "D6"       Set oTarget = Range("G9")     Case "G9"       Set oTarget = Range("D9")     Case "D9"       Set oTarget = Range("E9")     Case "E9"       ' E9で終了なので 選択セルを指定しない       Set oTarget = Nothing   End Select   If Not oTarget Is Nothing Then     ' 次のセルを選択する     oTarget.Select   End If End Sub # 字下げ(インデント)には全角空白を使用しています # 置換などで半角空白に置き換えて使用してください

gensanpapa
質問者

お礼

丁寧なご指導ありがとう。 明日、挑戦します。

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

それくらいなら、わざわざマクロをつかわなくても、 B5セルを選択し、Ctrlキーを押したまま、続けてB9、D6、G6、D9、E9を選択(クリック)し、まずTabキーを押してあげると、B5に入力できる状態になります。Tabを押すとB9に移動しますので、入力し、Tabキーという流れを繰り返せばいいかと思います。

gensanpapa
質問者

お礼

さっそくの回答ありがとうございました。どうしてもマクロを使ってみたくて

関連するQ&A