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

締切り済みの質問

EXCEL VBA カーソル移動方法?

エクセル2000でユーザーフォームを作成し
テキストボックス1~6まで作成し
テキストボックス1~3を1段目、4~6を二段目で配置した場合
エンターキーでケキストボックス1⇒2・・・6のカーソル移動は
わかるのですが、テキストボックス2から下に配置してある
テキストボックス5に矢印キー↓でカーソルを動かすようにはどのように
すればよろしいのでしょうか?
又、おなじようなことなのですがテキストボックス2から
矢印←でテキストボックス1にカーソルを移動させるのも
同じでしょうか?
宜しくお願いいたします。

投稿日時 - 2008-01-29 13:27:18

QNo.3724441

困ってます

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

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

回答(3)

ANo.3

こんばんは。

テキストボックスは、下矢印 ↓ 上矢印↑ の移動は可能なはずです。
単に、横の移動の際にタブが邪魔になって動かないのではないでしょうか?

ですから、マクロは単に横の動きだけを取り付けてあげればよいはずです。Excel 2000 で調べてみましたが、同じでした。


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Dim j As Integer
  j = Right(ActiveControl.Name, 1)
  If KeyCode = 39 Then
    OnFocus 1, j
  ElseIf KeyCode = 37 Then
    OnFocus -1, j
  End If
End Sub

'TextBox2~6 まで上と中身は同じコード

Private Sub OnFocus(ByVal i As Integer, ByVal j As Integer)
Const TOTALOBJ As Integer = 6 'テキストボックスの数
Dim k As Integer
 If i > 0 Then
  k = (j + TOTALOBJ) Mod TOTALOBJ + 1
  Controls("TextBox" & k).SetFocus
 Else
  k = (j + TOTALOBJ - 2) Mod TOTALOBJ + 1
  Controls("TextBox" & k).SetFocus
 End If
End Sub

投稿日時 - 2008-01-29 18:58:03

お礼

上記確認いたしました。
簡潔でわかりやすいです。
ありがとうございます。

投稿日時 - 2008-01-30 13:02:06

ANo.2

こんにちは
全部書くのも気が引けるので・・・

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 37
TextBox1.SetFocus
Case 38
TextBox5.SetFocus
Case 39
TextBox3.SetFocus
Case 40
TextBox5.SetFocus
End Select
End Sub
後は頑張って下さい。

投稿日時 - 2008-01-29 18:44:44

お礼

ありがとうございます。
後は何とかできると思います。
頑張ります!

投稿日時 - 2008-01-30 12:59:45

ANo.1

セルと違い、TABオーダーで指定した順にしか移動できません。

どうしてもやりたいのであれば、TextBox1_KeyDown 等のイベントでキーコードを受取って希望の動作をするようにするしか無いでしょう。

投稿日時 - 2008-01-29 13:33:20

お礼

そうですね、キーコードを受け取れば出来ますね。
適切なヒントありがとうございます。

投稿日時 - 2008-01-30 12:58:03

あなたにオススメの質問