- ベストアンサー
エクセル2003 セルの移動の仕方
エクセル2003で、EnterキーまたはTabキーを押した時に 指定した場所をアクティブな状態にするには どのようにしたら良いでしょうか? 例えば・・・ C7からG2その後、B11、C11,E11,B14,C14,C15,I14,J14・・・ というように、一定に移動させるのではなくて バラバラにいどうしたいのですが。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
少々手間はかかりますが以下のような手順をお試しください。 なお、手順内容は質問内容の例を元にしております。 1.「C7」のセルをアクティブする 2.Ctrlキーを押しながら「G2」「B11」「C11」「E11」「B14」「C14」…と入力したい順番にクリック 3.入力したいセルが複数選択されたままの状態で「A列」の上に表示されているセル番号に(例えば)「テスト」と入力 以上で作業は終了です。 入力したいときは「セル番号」の右横の「▼」をクリックすると「テスト」(定義した名前の一覧)が表示されるので 「テスト」を選択してみてください。 また、入力したいセルが増えた場合は、↑の手順で「テスト」を選択した状態から 再びCtrlキーを押しながらセルを追加…と「2.」~「3.」の手順を繰り返すだけです。 いかがでしょうか? 更に補足です。 定義した名前を削除したいときはCtrl+F3キーを押すことで「名前の定義」が開きますので 削除したい名前を選択し、ウィンドウ右の「削除」ボタンを押してください。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルでタブオーダー的な設定は難しい。#4のご回答あたりが良いと思います。 VBAで考えてみました。 仮にJ列に、セル移動順序を書き込んでおきます。 A2 C4 B7 F8 A3 のように。 Sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) Static i If Target.Address = "$A$1" Then i = 0 l = Range("j100").End(xlUp).Row i = i + 1 If i > l Then Exit Sub Range(Cells(i, "J")).Select End Sub を貼り付けます。 Sheet1でデーを入力します。 ただし、A1セルから入力を始める例です。 入力後に、指定したとおりに、セルが移動していくはずです。 しかしこのコードには、使い込むと不完全な例があるかもしれませんが。 J列で指定したセル数を超えると後は自由に指定してください。
お礼
どうもありがとうございました。
- maron--5
- ベストアンサー率36% (321/877)
【任意のセルへの移動】 ■手順■ 1)Ctrlを押しながら、マウスで入力順の2番目からセルを1つずつ指定していきます 2)最後に、入力順1番目のセルを指定します 3)指定した、セルが反転し最後に指定したセルは白になります 4)この状態で、指定した範囲に「◆入力順」と名前をつけます(名前は、なんでもいいです!) 5)左上の「名前ボックス」から、「◆入力順」を選択すると、先程のセルが指定状態になります 6)Enter をおすと、セルが指定順に移動します 7)なお、名前を定義するときに、参照範囲の式の、$ を消すと、「◆入力順」を選択した時のセルが起点になります!
お礼
ありがとうございました。
- flowergoo
- ベストアンサー率38% (13/34)
No1です 補足までに、C7->G2->B11->C11->E11 の移動の例です。 Option Explicit Dim BeforeCol As Long’セルの位置(列) Dim BeforeRow As Long’セルの位置(行) 'SelectionChangeイベント Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim nRow As Long Dim nCol As Long nRow = Target.row nCol = Target.Column If BeforeCol = 3 And BeforeRow = 7 Then Range("G2").Activate nCol = 7: nRow = 2 ElseIf BeforeCol = 7 And BeforeRow = 2 Then Range("B11").Activate nCol = 2: nRow = 11 ElseIf BeforeCol = 2 And BeforeRow = 11 Then Range("C11").Activate nCol = 3: nRow = 11 ElseIf BeforeCol = 3 And BeforeRow = 11 Then Range("E11").Activate nCol = 5: nRow = 11 End If ’現在の位置を保存 BeforeRow = nRow BeforeCol = nCol End Sub
お礼
どうもありがとうございました。 やってみます。
- flowergoo
- ベストアンサー率38% (13/34)
マクロで行ってはいかがでしょうか。 セルの書式設定等では任意の場所にアクティブな状態を移動する機能がないようです。 以前データ入力のシートで入力セルを飛び石にした事がありまが、そのときはマクロで行いました。 マクロで行う場合・・・ シートのタブ「Sheet1」で右クリックし、コードの表示を選択するとマクロの編集画面が出ます。 シートのいずれかのセルが変更になった場合にその場所を取得して任意の場所にアクティブセルを移動するマクロを作成します。 いかがでしょうか。
お礼
どうもありがとうございました。