こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

投稿日時 - 2006-07-04 21:31:50

QNo.2255750

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

[No.1回答に対する補足]に対するコメント、

Enterキーの代わりに Tabキーを押せば、非保護セルを移動するけど、最初のセルから右方向、かつ、下方向に移動するのはご存知かと。
お示しの例だとその規則に反するので、マクロを使わない限り、実現できないのではなかろうかと。

ただし、私はマクロ音痴なので悪しからず…

投稿日時 - 2006-07-05 00:12:23

ANo.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 関数が、ずっと便利なのですが、訳があって、その方法はやめています。

投稿日時 - 2006-07-04 23:16:53

ANo.2

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

投稿日時 - 2006-07-04 22:37:49

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

投稿日時 - 2006-07-04 21:56:56

補足

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

投稿日時 - 2006-07-04 22:13:37

あなたにオススメの質問