[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームのテキストボックスのフォーカスを、方向キーを使ってタブインデックスの順番と逆に動かしたい』(kintaro)
お世話になります
ユーザーフォームにテキストボックスが3個並んでいます
通常、数値入力後enterキーそ押すと次のタブインデックスのテキストボックスに
フォーカスが移動しますが、数値入力を間違えたときにフォーカスを前のテキストボックスに戻したいのです
その時、方向キー(例えば左キー)を押したら、フォーカスがインデックスナンバーに逆行してもどるような機能を追加したいのですが、
方向キーの割り当て方と、インデックスの順番を逆行させる方法が、いまいちわかりません。
よろしくお願いします
< 使用 Excel:Excel2003、使用 OS:unknown >
方向キー(例えば左キー)を押したら、フォーカスがインデックスナンバーに逆行してもどるような機能
Shift+Tabキーでフォーカスが逆に戻りますけどねえ コードなしで・・・・。
←キーでも以下のようにすると可能ですが、Shift+Tabキー でできるなら 出来あい機能を利用した方が 楽ですけどね。
TextBox1 TextBox2 TextBox3 だとすると これらのコントロールのあるユーザーフォームのモジュールに
Option Explicit Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then With TextBox1 If Not IsNumeric(.Text) Then MsgBox "数字を入力してください" .SelStart = 0 .SelLength = Len(.Text) KeyCode = 0 End If End With End If End Sub Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then With TextBox2 If Not IsNumeric(.Text) Then MsgBox "数字を入力してください" .SelStart = 0 .SelLength = Len(.Text) KeyCode = 0 End If End With ElseIf KeyCode = vbKeyLeft Then With TextBox1 .SelStart = 0 .SelLength = Len(.Text) .SetFocus End With End If End Sub Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then With TextBox3 If Not IsNumeric(.Text) Then MsgBox "数字を入力してください" .SelStart = 0 .SelLength = Len(.Text) KeyCode = 0 End If End With ElseIf KeyCode = vbKeyLeft Then With TextBox2 .SelStart = 0 .SelLength = Len(.Text) .SetFocus End With End If End Sub
こんなコードで可能です。
(ichinose ) 2014/11/14(金) 19:22
自分で作ったものでないのに自慢? 自分で改造できる? (momotaro) 2014/11/14(金) 21:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.