私はあなたのコードが動作すると言いました。 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
を使用することができ、エラーのような種類のを防ぐためには。 –
あなたの答えは正しくありませんでした。 'txtTimeUnit = vbnullstring'は真のコードであり、動作します。問題は 'txtStartDate.SetFocus'行にあり、デバッグ後に強調表示されたエラーです。その行の前に 'Exit Sub'を動かすとマクロは動作し、エラーは起こりませんが、txtStartDateテキストボックスに焦点を合わせる必要があります。 – mgae2m
あなたの他の質問にSiddarthの答えにあなたのコメント(https://stackoverflow.com/questions/44871013/how-can-i-pass-cursor-and-set-focus-on-a-userform-textbox-in-vba )は、 'txtTimeUnit = vbnullstring'が問題の行であると言いました。また、その行をコメントアウトするとコードが機能するようになります。つまり、あなたの質問からの指示が問題です。 –