我正在尝试使用VBA在Microsoft Access 2010中创建一个按钮,以将预设文本添加到文本框中,并在文本后添加换行符。但是,每当我单击按钮时,它似乎忽略了我的Then
语句并跳转到Else
语句,在空文本框中添加换行符,然后添加预设文本,无论如何 Notes 文本框的状态为。
提交按钮最初是一个嵌入式宏,但我已将其转换为VBA代码,以使我的 Notes 文本框没有任何价值,希望我的Then
声明得到尊重,但是没运气。以下是两个按钮的编码:
Private Sub statusBtn_Click()
Notes.SetFocus
If Notes = "" Then Notes = "lorem ipsum" Else Notes = Notes & vbCrLf & "lorem ipsum"
Me![Notes].SelStart = IIf(IsNull(Me![Notes]), 0, Len(Me![Notes]))
End Sub
Private Sub SubmitBtn_Click()
On Error GoTo SubmitBtn_Click_Err
On Error Resume Next
DoCmd.GoToRecord , "", acNewRec
If (MacroError <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
End If
SubmitBtn_Click_Exit:
Exit Sub
SubmitBtn_Click_Err:
MsgBox Error$
Resume SubmitBtn_Click_Exit
Notes = ""
End Sub
答案 0 :(得分:0)
以下是您的单行If ... Then
语句的不同形式,我更容易讨论:
If Notes = "" Then
Notes = "lorem ipsum"
Else
Notes = Notes & vbCrLf & "lorem ipsum"
End If
当 Notes 为空时考虑代码路径。条件Notes = ""
不会为True。它也不会是假的,但这并不重要。由于它不是True,因此控件会传递到Else
部分。这意味着你连接Null加CRLF(回车和换行)加上“loren ipsum”。
我怀疑当 Notes 的起始值为Null或空字符串时,您确实希望 Notes 成为“loren ipsum” (""
)。在这种情况下,请更改If
条件:
If Len(Notes & "") = 0 Then