- ベストアンサー
エクセル : 指定位置へジャンプさせるには?
ファイルを開いた時に必ず、A1 にカーソルを置きたいのですが 可能でしょうか? また A1 へ数値を入力後、B1 へ、B1 入力後、C1 へジャンプ させたいのですがどのようにしたら良いでしょうか? ご教示お願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
単に、Changeイベントでもよいのですが、実際に、数値を入れるとか入れないとか、というのは、ユーザーの問題ですから、以下のマクロは、「Enter」に反応するように作られています。 つまり、入れない場合でも、Enterを入れれば、セルの移動が出来るようにしてありますが、結構、大掛かりなものになってしまいます。 別に、細かい設定を説明したりするつもりがありませんので、よろしかったら、お試しください。 標準モジュールの一番上に、ユーザー設定の場所がありますから、そこに書き込んでくれれば、ご希望どおりになりますが、キーは、必ず、「,(カンマ)」で区切らないといけません。 指定以外の場所にセルポインタがある場合は、Enter を入れれば、最初の場所(例A1)に戻ります。 '-------------------------------------------------- 'ThisWorkbookへ Option Explicit Private Sub Workbook_Activate() Dim myKey As String On Error Resume Next myKey = Mid$(MYKEYS, 1, InStr(MYKEYS, ",") - 1) Application.Goto Worksheets(MYSHEET).Range(myKey) '別のブックから、このブックへ来た場合 Call SetKeys End Sub Private Sub Workbook_Deactivate() '別のブックを作業している時 Call SetOffKeys End Sub Private Sub Workbook_Open() Dim myKey As String '開けたとき On Error Resume Next myKey = Mid$(MYKEYS, 1, InStr(MYKEYS, ",") - 1) Application.Goto Worksheets(MYSHEET).Range(myKey) Call SetKeys End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) '閉じる前 Call SetOffKeys End Sub '-------------------------------------------------- '================================================= '標準モジュール '------------------------------------------------- Option Explicit '=================================== 'キーの設定(ユーザー設定) Public Const MYKEYS As String = "A1,A5,C1" Public Const MYSHEET As String = "Sheet1" '=================================== Private myKeyAr As Variant 'キーを格納する配列変数 Sub SetKeys() '設定用 Application.OnKey "~", "ReturnDirectrion2Cell" Application.OnKey "{Enter}", "ReturnDirectrion2Cell" End Sub Sub SetOffKeys() '解除用 Application.OnKey "~" Application.OnKey "{Enter}" End Sub Private Sub ReturnDirectrion2Cell() Dim i As Long Dim myAdd As String Dim NextAdd As String '変数の確保をチェック If IsArray(myKeyAr) = False Then myKeyAr = Split(MYKEYS, ",") End If '除外条件 If ActiveSheet.Name <> MYSHEET Then ActiveCell.Offset(1).Select Exit Sub End If myAdd = ActiveCell.Address(0, 0) For i = LBound(myKeyAr) To UBound(myKeyAr) If StrComp(myKeyAr(i), myAdd) = 0 Then If i < UBound(myKeyAr) Then NextAdd = myKeyAr(i + 1) Exit For Else NextAdd = myKeyAr(0) End If End If Next i If NextAdd <> "" Then Range(NextAdd).Select Else Range(myKeyAr(0)).Select End If End Sub
その他の回答 (5)
- marbin
- ベストアンサー率27% (636/2290)
飛びたい順にCtrlキーを押しながらセル選択 ↓ セルが選択されている状態で名前ボックスに適当な名前入力 名前ボックスから定義した名前を選択したら設定しておいた セルが選択されます。 セルに入力後エンターキーで次のセルに設定しておいた順に ジャンプします。
ファイルを保存するときは必ずセル「A1 にカーソルを置」いておけば、「ファイルを開いた時に必ず、A1 にカーソルを置」いた状態になりますが…
お礼
ありがとうございます。
- marbin
- ベストアンサー率27% (636/2290)
↓のようなセルの移動をしたい場合、 A1→B1→C1→A2→B2→C2→A3→B3→C3 A1~C3をドラッグで選択しておいて、 入力後Tabキーを押すことによって C列まで行ったらA列の一つ下の行に 移動します。
補足
A1 → A5 → C1 といった全く離れた位置へ飛びたいと言う事なんです。 そういう意味でジャンプと書いたつもりだったのですがうまく書けなくてすいません。
- marbin
- ベストアンサー率27% (636/2290)
通常、セルの移動方向を右以外にしているが 、右に移動したいセルがある場合は、 Tabキー で右に移動することが出来ます。
補足
A1 → A5 → C1 といった全く離れた位置へ飛びたいと言う事なんです。 そういう意味でジャンプと書いたつもりだったのですがうまく書けなくてすいません。
- marbin
- ベストアンサー率27% (636/2290)
ブックを開いたらA1を選択、は↓でいけます。 シートの指定はなかったので考慮してません。 Private Sub Workbook_Open() Range("A1").Select End Sub 入力後に右のセルに移動するには↓でいけます。 ツール→オプション→編集→ 入力後にセルを移動する方向を「右」
お礼
ありがとうございます。 これは、どこへ入力すればよろしいでしょうか?
補足
A1 → A5 → C1 といった全く離れた位置へ飛びたいと言う事なんです。 そういう意味でジャンプと書いたつもりだったのですがうまく書けなくてすいません。
お礼
詳しくありがとうございます。 試してみます。