コントロールをEnterキーで移動するには?


Seiji  2003-10-24 08:02:26  No: 79962

他の質問でもお世話になっていますが、もう一つお願い致します。

コントロール(例えばテキストボックス)を
Enterキーで移動できるように設定できないでしょうか。
Tabキーでは移動できますが。
テキストボックスが多数配置してあるフォームで
数字を入力していくという作業ですので
できれば、Enterキーで移動できるといいのですが。

よろしくお願いします。


ねろ  2003-10-24 16:55:04  No: 79963

こんにちは
テキストボックスを幾つかコピーしておいて
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
    If KeyAscii = Asc(vbCr) Then           'Asc(vbCr) = 13
        If Index + 1 > Text1.UBound Then
            Text1(0).SetFocus
        Else
            Text1(Index + 1).SetFocus
        End If
    End If
End Sub

これで順番にぐるぐると。
ただしあたりまえのことですが  "Text1.MultiLine=True"の
時は使えません、念のために。


Say  2003-10-24 18:26:19  No: 79964

Tabとほぼ同じ働きをさせたいなら、たとえばこう。
Option Explicit

Private Sub Form_KeyPress(KeyAscii As Integer)
    Dim obj As Object
    If KeyAscii = Asc(vbCr) Then
        Set obj = Me.ActiveControl
        Me.ActiveControl.Enabled = False
        obj.Enabled = True
        Set obj = Nothing
    End If
End Sub

Private Sub Form_Load()
    Me.KeyPreview = True
End Sub


ねろ  2003-10-24 19:10:22  No: 79965

ActiveControlで設定するとTextBox以外のところにも
フォーカスが当たってCommandButtonなんかにフォーカス
が当たると、実行したりする危険性がありますね。(^^;
Text以外のTabIndexをFalseにしておけばいいのですが..
TabはTabでそのまま使いたい場合が多いようです。


Seiji  2003-10-25 02:49:40  No: 79966

ねろさん、Sayさん、ありがとうございます。

うまくいきました。本当に感謝いたします。

Sayさん、すみません。
私は初心者なもので、どうして、
  Me.ActiveControl.Enabled = False
  obj.Enabled = True
で、次のコントロールに移動できるのか
どうしても分かりません。
もしよろしかったら、解説して頂けるとうれしいのですが。
よろしくお願い致します。


Seiji  2003-10-25 03:00:23  No: 79967

Sayさん、何となくわかりました。
コントロールのEnabledプロパティをFalseにすると
フォーカスが次へ移動するのですね。
そのままでは、無効のままなので
有効に戻しているわけですね。
おおよそ、分かりました。

ねろさん、Sayさん、
本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加