我正在尝试使用 VBA 在 Microsoft Access 2010 中制作一个按钮,以将预设文本添加到文本框并在文本后添加换行符。但是,每当我单击该按钮时,它似乎都会忽略我的
Then
语句并直接跳转到 Else
语句,向空文本框添加换行符,然后添加预设文本,无论状态如何注释 文本框是。
提交按钮最初是一个嵌入式宏,但我后来将其转换为 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
这是您单行
If ... Then
声明的另一种形式,这对我来说更容易讨论:
If Notes = "" Then
Notes = "lorem ipsum"
Else
Notes = Notes & vbCrLf & "lorem ipsum"
End If
考虑当 Notes 为 Null 时的代码路径。 条件
Notes = ""
不会为 True。 它也不会是 False,但这并不重要。 由于它不为 True,因此控制权传递到 Else
部分。 这意味着您连接 Null 加上 CRLF(回车和换行)加上 “loren ipsum”。
我怀疑只要 Notes 的起始值为 Null 或空字符串 (""
),您实际上希望 Notes 变成
“loren ipsum”。 在这种情况下,请更改
If
条件:
If Len(Notes & "") = 0 Then
你们两人的努力相结合,让我的形式变得神奇。当“更新”添加到表单字段时,我现在可以控制混乱! 书呆子
谢谢两位!