Microsoft Access 掲示板

テキストボックスでのEnterキーでの改行について / 1

2 コメント
views
4 フォロー
1

キークリック(KeyDown)イベント内で、Enterキー押下をSendKeysしたら、それで再びキークリックイベントが発生して、と連鎖して繰り返されることになるのでそうなりますね。

下記のようにフラグを利用して、イベント連鎖を防止して、キー入力をキャンセルしておくといいでしょう。

Private InkeyEvent As Boolean

Private Sub 仕様書_KeyDown(KeyCode As Integer, Shift As Integer)
    If InkeyEvent Then Exit Sub 'イベント連鎖防止
    InkeyEvent = True
    If KeyCode = vbKeyReturn Or KeyCode = vbKeySeparator Then
        KeyCode = 0 'キー入力をなかっことに
        SendKeys "^~" 'Ctrl + Enter
    End If
    InkeyEvent = False
End Sub

あるいは、下記のようにイベントプロシージャの付け外ししてもいいでしょう。

Private Sub 仕様書_KeyDown(KeyCode As Integer, Shift As Integer)
    Me.仕様書.OnKeyDown = "" 'イベントプロシージャの割り当てを解除
    If KeyCode = vbKeyReturn Or KeyCode = vbKeySeparator Then
        KeyCode = 0 'キー入力をなかっことに
        SendKeys "^~" 'Ctrl + Enter
    End If
    Me.仕様書.OnKeyDown = "[イベント プロシージャ]" 'イベントプロシージャの割り当て
End Sub

ただ、こんなことをしなくても、
テキストボックスの「Enterキー入力時動作」プロパティを「フィールドに行を追加」にしておけば済みますけどね。

通報 ...