2017-07-03 12 views
1

私は最初のテキストボックスを終了するときに別のテキストボックス値をチェックするために、次のコードを使用しています。nullテキストボックスを作成し、別のものにフォーカスを設定

しかし、私はこのエラーが発生します。実行時エラー '2147467259(80004005)':不明なエラー。

私はこの行(txtTimeUnit = vbNullString)をコメントしたとき、マクロコードが正しく動作します。

この行のコマンドの問題は何ですか?コードを修正するのを手伝ってください。

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If txtStartDate.Text = vbNullString Then 
     txtTimeUnit = vbNullString 
     txtStartDate.SetFocus 
     Exit Sub 
    End If 
End Sub 
+0

を使用することができ、エラーのような種類のを防ぐためには。 –

+0

あなたの答えは正しくありませんでした。 'txtTimeUnit = vbnullstring'は真のコードであり、動作します。問題は 'txtStartDate.SetFocus'行にあり、デバッグ後に強調表示されたエラーです。その行の前に 'Exit Sub'を動かすとマクロは動作し、エラーは起こりませんが、txtStartDateテキストボックスに焦点を合わせる必要があります。 – mgae2m

+0

あなたの他の質問にSiddarthの答えにあなたのコメント(https://stackoverflow.com/questions/44871013/how-can-i-pass-cursor-and-set-focus-on-a-userform-textbox-in-vba )は、 'txtTimeUnit = vbnullstring'が問題の行であると言いました。また、その行をコメントアウトするとコードが機能するようになります。つまり、あなたの質問からの指示が問題です。 –

答えて

1

私はあなたのコードが動作すると言いました。 Cancel = True設定されたコードの別の部分がある場合にはここで、それは動作しません唯一の方法はある例

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If txtStartDate.Text = vbNullString Then 
     txtTimeUnit.Text = vbNullString 
     txtStartDate.SetFocus 
     Exit Sub 
    End If 
End Sub 

です。あなたはvbNulLString` `にコントロール自体を設定することはできません - たとえば

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If IsError(Application.Match(txtTimeUnit.Text, Range("intTable[Time Unit]"), 0)) Then 
     Cancel = True 
    End If 

    If txtStartDate.Text = vbNullString Then 
     txtTimeUnit.Text = vbNullString 
     txtStartDate.SetFocus 
     Exit Sub 
    End If 
End Sub 

あなたは` txtTimeUnit.Text = vbNullString`てみ

Boolean変数
Dim boolOnce As Boolean 

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If boolOnce = False Then 
     boolOnce = True 
     If IsError(Application.Match(txtTimeUnit.Text, Range("intTable[Time Unit]"), 0)) Then 
      Cancel = True 
     End If 
    Else 
     boolOnce = False 
    End If 

    If txtStartDate.Text = vbNullString Then 
     txtTimeUnit.Text = vbNullString 
     txtStartDate.SetFocus 
     Exit Sub 
    End If 
End Sub 
関連する問題