• 締切済み

エクセルでセルの選択をしたい。

例えば、シート1があって、通常、セルA1にカーソルポイントがあるとすると、キーボードのENTERを押すとカーソルが下にいきますけど、これをA1の次はC3、その次はAA56、その次はB4とキーボードのENTERを押すたびに変えることはできませんか?どんな方法でもいいです。お願いします。

みんなの回答

noname#204879
noname#204879
回答No.4

[No.1回答に対する補足]に対するコメント、 Enterキーの代わりに Tabキーを押せば、非保護セルを移動するけど、最初のセルから右方向、かつ、下方向に移動するのはご存知かと。 お示しの例だとその規則に反するので、マクロを使わない限り、実現できないのではなかろうかと。 ただし、私はマクロ音痴なので悪しからず…

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 ご質問は定番なのですが、私の場合は、以下のようにします。 これも、一種のイベントです。エンターキーにインスタンスを設けてやるわけです。 多少、まだ、私が気が付かないで、抜け落ちている部分があるかもしれません。十分にテストされておりませんので、とりあえず、ユーザー設定の部分をご自身で入れてみて、 最初に、「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)
回答No.2

ENTERのかわりにTabキー(→|)でそうなりませんか?

noname#204879
noname#204879
回答No.1

それって何か規則的な順序になっていますか? それとも自分がそのときに念じた無作為な順序なのですか?

19760101
質問者

補足

説明不足ですいません。例えば、シート全体に保護がかかっていて、保護のかかっていないセルA1、B3、AA2とキーボードのENTERを押せば順にそのセルに移動したいのですが。