他の質問でもお世話になっていますが、もう一つお願い致します。
コントロール(例えばテキストボックス)を
Enterキーで移動できるように設定できないでしょうか。
Tabキーでは移動できますが。
テキストボックスが多数配置してあるフォームで
数字を入力していくという作業ですので
できれば、Enterキーで移動できるといいのですが。
よろしくお願いします。
こんにちは
テキストボックスを幾つかコピーしておいて
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"の
時は使えません、念のために。
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
ActiveControlで設定するとTextBox以外のところにも
フォーカスが当たってCommandButtonなんかにフォーカス
が当たると、実行したりする危険性がありますね。(^^;
Text以外のTabIndexをFalseにしておけばいいのですが..
TabはTabでそのまま使いたい場合が多いようです。
ねろさん、Sayさん、ありがとうございます。
うまくいきました。本当に感謝いたします。
Sayさん、すみません。
私は初心者なもので、どうして、
Me.ActiveControl.Enabled = False
obj.Enabled = True
で、次のコントロールに移動できるのか
どうしても分かりません。
もしよろしかったら、解説して頂けるとうれしいのですが。
よろしくお願い致します。
Sayさん、何となくわかりました。
コントロールのEnabledプロパティをFalseにすると
フォーカスが次へ移動するのですね。
そのままでは、無効のままなので
有効に戻しているわけですね。
おおよそ、分かりました。
ねろさん、Sayさん、
本当にありがとうございました。
ツイート | ![]() |