非連結のテキストボックスにフィールドサイズを設定する

Last-modified: 2021-11-20 (土) 02:51:52

入力自体を制御する

Private strOldText As String

Private Sub テキスト0_Change()
    '入力可能な最大文字数の制御
    If 5 < Len(テキスト0.Text) Then
        テキスト0.Text = strOldText
    End If
    strOldText = テキスト0.Text
End Sub

入力自体を制御する(OLD)

  • クリップボードからペーストした場合、フィールドサイズ内であればペーストされますが、フィールドサイズを超えているとペーストされません。
  • IME 入力の場合も同様です。
  • コードからフィールドサイズを超えた文字列を設定すると、操作不能になります(テキストを全選択して、削除すると元に戻せます)。

キー入力時に変更前のテキストとカーソル位置を退避する

Private strText As String
Private intSelStart As String
Private Sub テキスト0_KeyPress(KeyAscii As Integer)
    'IME から入力した場合は、既に Text が変更済みのため、退避しない
    If Not Len(テキスト0.Text) > 5 Then
        strText = テキスト0.Text
        intSelStart = テキスト0.SelStart
    End If
End Sub

変更時にテキストの最大文字数を超えていたら、テキストとカーソル位置を戻す

Private Sub テキスト0_Change()
    If Len(テキスト0.Text) > 5 Then
        テキスト0.Text = strText
        テキスト0.SelStart = intSelStart
    End If
End Sub