AccessVBAのExitイベントでテキストボックスの文字を選択状態にする方法|エラー2185の解決法

Visual Basic

AccessVBAでテキストボックスに入力した後に、エラーメッセージを表示し、テキストボックスの文字を選択状態にしたい場合、特定のコードでうまく動作しないことがあります。この記事では、Exitイベントでの文字の選択を実現する方法と、エラー2185の原因と解決策を解説します。

Exitイベントでの文字選択方法

テキストボックスのExitイベントで文字を選択するには、`SetFocus`でテキストボックスにフォーカスを当てた後、`SelStart`と`SelLength`を使って選択範囲を指定します。以下のコードを使って、入力後にエラーメッセージを表示し、その後にテキストボックス内の文字を選択状態にすることができます。

Private Sub text1_Exit(Cancel As Integer)
    ' 入力を行ったとき
    MsgBox "入力は受け付けていません"
    textError Me.text1
    Cancel = True
End Sub

Sub textError(text As Object)
    text.SetFocus
    text.SelStart = 0
    text.SelLength = Len(text.text)
End Sub

エラー2185の原因と解決策

エラー2185は、`SelStart`や`SelLength`の操作が無効な場合に発生します。このエラーは、テキストボックスが現在選択されていない場合や、フォームが非アクティブな状態で操作しようとした場合に発生することがあります。

解決策として、`SetFocus`でフォーカスを確実に当てた後に`SelStart`と`SelLength`を設定するようにします。もしフォームが非アクティブである場合は、フォームをアクティブにしてから操作を行うようにします。

実行時エラーの防止

`SelStart`や`SelLength`の設定を行う前に、テキストボックスがアクティブであることを確認してください。以下のコードのように、`SetFocus`で確実にテキストボックスを選択状態にしてから、選択範囲を指定します。

Private Sub text1_Exit(Cancel As Integer)
    ' 入力を行ったとき
    MsgBox "入力は受け付けていません"
    textError Me.text1
    Cancel = True
End Sub

Sub textError(text As Object)
    text.SetFocus
    DoEvents  ' フォーカスが設定されるのを待つ
    text.SelStart = 0
    text.SelLength = Len(text.text)
End Sub

まとめ

AccessVBAでテキストボックスの文字を選択状態にする際にエラー2185が発生する原因は、テキストボックスが正しく選択されていないことです。`SetFocus`を使ってフォーカスを当てた後、`SelStart`と`SelLength`を設定することで、エラーを解消し、思い通りの動作を実現できます。この記事で紹介した方法を試して、問題を解決してみてください。

コメント

タイトルとURLをコピーしました