[[20141114181915]] 『ユーザーフォームのテキストボックスのフォーカスを、』(kintaro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームのテキストボックスのフォーカスを、方向キーを使ってタブインデックスの順番と逆に動かしたい』(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


回答ありがとうございました
右手でテンキーを打ちながらの作業で、
左手は資料を読むのに使うので、テンキー近くの方向キーを使えれば、
作業がらくになるのが、理由です
早速試してみます
(kintaro) 2014/11/14(金) 19:45

ichinoseさん、ありがとうございました
早速試してみたところ、めちゃかっこいいのができました♪
メッセージボックスが出る機能まであって、
月曜日、会社で自慢できます(笑)
またよろしくお願いします
(kintaro) 2014/11/14(金) 21:04

 自分で作ったものでないのに自慢?
 自分で改造できる?
(momotaro) 2014/11/14(金) 21:33

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.