QA@IT
«質問へ戻る

質問を投稿

VBA:テキストボックスについて

お世話になります。現在、ExcelVBA(Excel 2010)で開発を行っています。その中で一つおかしな事象が発生しましたので質問させて下さい。

<<不具合事象>>
フォーム上にテキストボックスが2つ(TextBox1、TextBox2)があります。そのフォームを表示した時にTextBox1にカーソルがあるのですが、TABキーを押しても次のTextBox2に移動せず、TextBox1のテキスト内にTABが入ってしまいます。TextBox2にマウスでフォーカスをあててからTABキーを押しても、同じく次のコントロールに移動せずTABが入ってしまうのです。

ですが、このフォームを閉じた後、再度表示するとTABキーを押すと次のコントロールに移動します(これが期待していた動作)。以降、どうやっても上の事象は発生しないのです。発生するのは必ず「Excelを開いて、最初にフォームを表示した時だけ」です。

なぜこのような動作になってしまうのか全く検討がつきません。テキストボックス関連で記述しているコードは以下だけです。

''' ENTERキー入力時に次のテキストボックスに移動して全テキスト選択
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = vbKeyReturn Then
        TextBox2.SetFocus
        TextBox2.SelStart = 0
        TextBox2.SelLength = Len(TextBox2.Text)

    End If

End Sub

IMEは「Microsoft Office IME 2010」と「Google日本語入力」どちらも試しましたが同じでした。
また両TextBoxのIMEModeプロパティは「0-fmIMEModeNoControl」です。

VBAのテキストボックスはIME周りで不具合があると聞いたことがあるのですが、この現象もそれと関連があるのでしょうか?

何か原因解明につながるヒントでも構いませんので、よろしくお願い致します。

お世話になります。現在、ExcelVBA(Excel 2010)で開発を行っています。その中で一つおかしな事象が発生しましたので質問させて下さい。

<<不具合事象>>
フォーム上にテキストボックスが2つ(TextBox1、TextBox2)があります。そのフォームを表示した時にTextBox1にカーソルがあるのですが、TABキーを押しても次のTextBox2に移動せず、TextBox1の**テキスト内にTAB**が入ってしまいます。TextBox2にマウスでフォーカスをあててからTABキーを押しても、同じく次のコントロールに移動せずTABが入ってしまうのです。


ですが、このフォームを閉じた後、再度表示するとTABキーを押すと次のコントロールに移動します(これが期待していた動作)。以降、どうやっても上の事象は発生しないのです。発生するのは必ず**「Excelを開いて、最初にフォームを表示した時だけ」**です。

なぜこのような動作になってしまうのか全く検討がつきません。テキストボックス関連で記述しているコードは以下だけです。



```visualbasic
''' ENTERキー入力時に次のテキストボックスに移動して全テキスト選択
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = vbKeyReturn Then
        TextBox2.SetFocus
        TextBox2.SelStart = 0
        TextBox2.SelLength = Len(TextBox2.Text)
        
    End If

End Sub
```

IMEは「Microsoft Office IME 2010」と「Google日本語入力」どちらも試しましたが同じでした。
また両TextBoxのIMEModeプロパティは「0-fmIMEModeNoControl」です。

VBAのテキストボックスはIME周りで不具合があると聞いたことがあるのですが、この現象もそれと関連があるのでしょうか?

何か原因解明につながるヒントでも構いませんので、よろしくお願い致します。