2017-12-07 8 views
1

1つのテキストボックスの1つのデータ入力を持つユーザーフォームを作成しようとしています。いくつかのラベル。ユーザーはバーコードをテキストボックスにスキャンします。スキャンは一連のマクロをトリガーし、さまざまなソースからデータを収集し、ラベルを更新して関連情報を出力します。入力キーからのイベントのトリガー

Excelシートで同様のプロセスを作成し、Change by Valトリガーを使用しました。この例では、単一のセルのみがロック解除されているため、フォーカスがそのセルにとどまり、enter(またはバーコードスキャナからのキャリッジリターン)がセルの値を更新し、一連のマクロをトリガしました。

この場合、私はAfterUpdateイベントトリガーを使用できると思っていたので、同じことをしたかったのです。私が実行している問題は、テキストボックスがフォーム上で実行可能な唯一のものなので、フォーカスは決してテキストボックスを離れないため、更新されません。

私は方向を変えて、KeyPressイベントトリガを使用しようとしましたが、それは私にとってはうまくいかないようです。私はそれを理解したよう

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 
    If KeyAscii = 13 Then MsgBox "successful" 
End Sub 

は、私はまた、いつでも誰でもカーソルがテキストボックスに成功したポップアップを言うメッセージボックスがあるべきであるアクティブな間に入力しますヒットvbKeyReturn

で13を交換しました。しかし、それは起こっていません。

私は、MultipleLineがfalseに設定されていることを確認しました。 EnterKeyBehaviorを変更せずにTrueとFalseの両方に設定しようとしました。

私は理論的には、ラベルの1つをインデックスの停止とし、フォーカスがあって基本的に更新と見なされるときにテキストボックスにフォーカスを戻すことができます。その後、元々計画していたアップデートトリガーを使用することができました。しかし、それは非常にうっすらとした仕事ではないようです。私はキーストロークでトリガーできるはずです。

+0

使用 'TextBox1_KeyDown'代わりに。 'KeyPress'が何であるかはわかりません。 – JNevill

+0

キーアップとキーダウンの両方が機能しました。 – viper941

答えて

2

オブジェクトのKeyDownイベントへの切り替えは私のために正常に動作します:予想通り

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    If KeyCode = 13 Then 
     Debug.Print "Made it here" 
    End If 
End Sub 

私は私のフォームタイプを起動し、Enterキーを押し

は、私の即時ペインショー「は、ここでそれを作りました」。

1

どのようにこれを使用してについて:

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
If KeyCode = 13 Then MsgBox "successful" 
End Sub 
関連する問題