- 締切済み
数値入力後のセルの変則移動
office XPを使用してます。 タイトルのとおりマクロにて、セルの変則移動のプログラムについて宜しくお願いします。B5からスタートします。 B5に数値入力→ENTER→B9に入力→ENTER→D6に入力→ENTER→G6に入力→ENTER→D9に入力→ENTER→E9に入力→ENTERで終了です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
標準モジュールに 以下を追加してやればいいでしょう また シートの保護を使って 許可したセル以外には移動できないようにしておきましょう 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 # 字下げ(インデント)には全角空白を使用しています # 置換などで半角空白に置き換えて使用してください
- jo-zen
- ベストアンサー率42% (848/1995)
それくらいなら、わざわざマクロをつかわなくても、 B5セルを選択し、Ctrlキーを押したまま、続けてB9、D6、G6、D9、E9を選択(クリック)し、まずTabキーを押してあげると、B5に入力できる状態になります。Tabを押すとB9に移動しますので、入力し、Tabキーという流れを繰り返せばいいかと思います。
お礼
さっそくの回答ありがとうございました。どうしてもマクロを使ってみたくて
お礼
丁寧なご指導ありがとう。 明日、挑戦します。