- ベストアンサー
エクセル2007 セルの移動に関して 2つの移動方法の共存はできますか?
エクセル2007 セルの移動に関して 2つの移動方法の共存はできますか? 同一シートに2つの移動方法を共存させたいのですが・・・ ※入力するセルはロックをはずしてのシートの保護をしています。 ■移動 → が 以下 B2→ D2→ F2→ H2 B4→ D4→ F4→ H4 ■移動 ↓ が以下 B6 D6 ↓ ↓ B8 D8 ↓ ↓ B10 D10 TAB と Enter での移動変化だけだとうまくいかないもので いい方法が ございましたら ご教授 おねがい いたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
この場合2つ右、二つ下ですので 下のコードでできます。 Enter とTabを使いたければ{right}{down}の部分を書き換えてください。 Sub 移動() Application.OnKey "{right}", "右矢印" Application.OnKey "{down}", "下矢印" End Sub Sub 右矢印() Cells(ActiveCell.Row, ActiveCell.Column + 2).Activate End Sub Sub 下矢印() Cells(ActiveCell.Row + 2, ActiveCell.Column).Activate End Sub Sub 移動解除() Application.OnKey "{right}" Application.OnKey "{down}" End Sub {解説」 Onkeyメソッドを使うと指定されたキーが押されたときに指定されたSUBに制御が移ります。 Application.OnKey "{right}", "右矢印" は右矢印が押されたとき"右矢印" というSubを実行します。 つまり”移動"を実行した後は右矢印を押すたびに"右矢印"が実行され現在の列(Activecell.Column)の2つ右の列をActiveにします。 移動不定の場合はセルアドレスを配列に記憶してそれを参照するようにします。 処理が終わったら"移動解除"を実行して本来のExcelのキー割り当てに戻します。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
設定や操作では出来ないでしょう。 ーーー VBAでやってみた Sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ext Application.EnableEvents = False If Application.MoveAfterReturnDirection = xlToRight Then '右 Target.Offset(0, 2).Select If Selection.Column > Range("H1").Column Then Cells(Target.Row + 1, 1).Select End If Else '下 Target.Offset(2, 0).Select If Selection.Row > 10 Then Cells(6, Target.Column + 2).Select End If End If ext: Application.EnableEvents = True End Sub ーー 利用の場合の前提など ●最初のセルはユーザー指定すること。 ●10行目より上、H列より左を動くの縛りを入れている(プログラムを変えると可変)。 ●必要な方にツールーオプションー編集ー入力後セルを移動するを、ユーザーが設定しなおす。 (コマンドボタンでもクリックで切り替えるようにしないと使い勝手が悪いと思う。コード略) ●結構難しかった。イベント関係というのは、操作で思わぬ事態が起こるかもしれない。I列以右でスタートすると、上記では十分考えていないが。 ●もし(エラー事態で)イベントが効かなくなったら 標準モジュールの Sub test01() Application.EnableEvents = True End Sub を実行のこと。
お礼
imogasi さん 大変 お礼のほうが 遅くなり 失礼しました。
- rivoisu
- ベストアンサー率36% (97/264)
マクロがつかえるならOnkeyメソッドを使います。 マクロで処理する気があるなら例になるコードを書きますが。。。 どうします?
補足
rivoisuさん 回答ありがとうございます。 Onkeyメソッドなるもの 恥ずかしい話、はじめて耳にしました。 ショートカットキーにマクロを登録するんですね。 >http://www6.plala.or.jp/MilkHouse/begin/contents207/contents207 04.html コードの修正とかは 厳しいですが よろしければ お願いします。
- maron--5
- ベストアンサー率36% (321/877)
【任意のセルへの移動】 ■手順■ 1)Ctrlを押しながら、マウスで入力順の2番目からセルを1つずつ入力順に指定していきます 2)最後に、入力順1番目のセルを指定します 3)指定したセルが反転し、最後に指定したセルは白になります 4)この状態で、指定した範囲に「◆入力順」と名前をつけます(名前は、なんでもいいです!) 5)左上の「名前ボックス」から、「◆入力順」を選択すると、先程のセルが指定状態になります 6)Enter をおすと、セルが指定順に移動します 7)なお、名前を定義するときに、参照範囲の式の、$A$1 を $A1 とすると、「◆入力順」を選択した時の行が起点になります!
補足
maron--5さん 回答ありがとうございます。 この方法も あるのは 検索で見つけたのですが・・・ 最初に名前定義を 選択しなくては いけないんですもんね。 この処理もできれば 省きたいところなんです。 今回は 回答ありがとうございます。
- HERO TKS(@HERO_TKS)
- ベストアンサー率34% (146/422)
質問の意図がはっきりしませんが… 入力するセルだけ移動するとして… 保護をかけるときに「ロックされていないセル範囲の選択」にチェックマークを入れてはいかがでしょうか?
- hana-hana3
- ベストアンサー率31% (4940/15541)
マクロ(Worksheet_SelectionChange)のイベントを使うしか無いと思います。
補足
hana-さん 回答ありがとうございます。 Worksheet_SelectionChange について 検索してみます。 ありがとうございます。
お礼
rivoisuさん 大変 お礼のほうが おくれてしまい 失礼しました。もうすこし エクセルの精進を したいとおもいます。 ありがとうございました。