- 締切済み
エクセルでセルの選択をしたい。
例えば、シート1があって、通常、セルA1にカーソルポイントがあるとすると、キーボードのENTERを押すとカーソルが下にいきますけど、これをA1の次はC3、その次はAA56、その次はB4とキーボードのENTERを押すたびに変えることはできませんか?どんな方法でもいいです。お願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
[No.1回答に対する補足]に対するコメント、 Enterキーの代わりに Tabキーを押せば、非保護セルを移動するけど、最初のセルから右方向、かつ、下方向に移動するのはご存知かと。 お示しの例だとその規則に反するので、マクロを使わない限り、実現できないのではなかろうかと。 ただし、私はマクロ音痴なので悪しからず…
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 ご質問は定番なのですが、私の場合は、以下のようにします。 これも、一種のイベントです。エンターキーにインスタンスを設けてやるわけです。 多少、まだ、私が気が付かないで、抜け落ちている部分があるかもしれません。十分にテストされておりませんので、とりあえず、ユーザー設定の部分をご自身で入れてみて、 最初に、「SetKeys」を実行するか、もしくは、保存して、もう一度、そのブックを立ち上げれば、設定されますので、試してみてください。 '標準モジュールへ '-------------------------------------------------- Option Explicit 'キーの設定(ユーザー設定) Private Const MYKEYS As String = "A1,C3,AA56,B4" 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 <> "Sheet1" 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 '-------------------------------------------------- 'ThisWorkbookへ Private Sub Workbook_Activate() '別のブックから、このブックへ来た場合 Call SetKeys End Sub Private Sub Workbook_Deactivate() '別のブックを作業している時 Call SetOffKeys End Sub Private Sub Workbook_Open() '開けたとき Call SetKeys End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) '閉じる前 Call SetOffKeys End Sub '-------------------------------------------------- p.s. 本来は、この「For i = LBound(myKeyAr) To UBound(myKeyAr)」ループは、ワークシートのMatch 関数が、ずっと便利なのですが、訳があって、その方法はやめています。
- merlionXX
- ベストアンサー率48% (1930/4007)
ENTERのかわりにTabキー(→|)でそうなりませんか?
それって何か規則的な順序になっていますか? それとも自分がそのときに念じた無作為な順序なのですか?
補足
説明不足ですいません。例えば、シート全体に保護がかかっていて、保護のかかっていないセルA1、B3、AA2とキーボードのENTERを押せば順にそのセルに移動したいのですが。