仅当文本框中已包含文本时,字符串才会添加到文本框中

时间:2013-10-03 15:33:55

标签: vba ms-access access-vba

用户在txtAddNote中输入文本,然后单击cmdAddNote按钮,VBA运行并将注释附加到带有时间和日期戳的txtNotes。

但它只有在txtNotes中已有文本时才有效。当txtNotes为空时,我该怎么做才能使它工作?

Private Sub cmdAddNote_Click()
 Dim MyDate As String

 MyDate = Now()

 Form_ClientF.txtNotes = vbCrLf + MyDate + vbCrLf + vbCrLf + Form_ClientF.txtAddNote + vbCrLf + vbCrLf + Form_ClientF.txtNotes

 Form_ClientF.txtAddNote = ""

End Sub

3 个答案:

答案 0 :(得分:2)

使用.Value方法而不是直接引用文本框。

就此而言,每当引用Excel VBA对象时都要使用它 - 复选框等。这样可以避免以后出现这样的问题。

Private Sub cmdAddNote_Click()
 Dim MyDate As String

 MyDate = Now()

 Form_ClientF.txtNotes.value = vbCrLf + MyDate + vbCrLf + vbCrLf + Form_ClientF.txtAddNote.value + vbCrLf + vbCrLf + Form_ClientF.txtNotes.value

 Form_ClientF.txtAddNote.value = ""

End Sub

答案 1 :(得分:2)

我假设您确保不运行cmdAddNote_Click,除非txtAddNote包含要添加的内容(请参阅下面的示例代码)。

如果这是真的,你可以这样做......

Form_ClientF.txtNotes = vbCrLf & MyDate & vbCrLf & vbCrLf & _
Form_ClientF.txtAddNote & (vbCrLf + vbCrLf + Form_ClientF.txtNotes)

当用于将字符串与Null连接时,此方法利用+&之间的差异。以下是立即窗口中的示例,说明了差异。

? "a" + Null
Null
? "a" & Null
a

以下是使用此方法的表单的截屏...

enter image description here

表单使用的代码......

Option Compare Database
Option Explicit

Private Sub cmdAddNote_Click()
    Me.txtnotes = Format(Now, "mmm dd, yyyy h:nn:ss ampm") & vbCrLf & _
        Me.txtAddNote & (vbCrLf + vbCrLf + Me.txtnotes)
    Me.txtAddNote = vbNullString
    Me.txtAddNote.SetFocus
    Me.cmdAddNote.Enabled = False
End Sub

Private Sub Form_Current()
    Me.cmdAddNote.Enabled = (Len(Trim(Nz(Me.txtAddNote, vbNullString))) > 0)
End Sub

Private Sub txtAddNote_Change()
    Me.cmdAddNote.Enabled = (Len(Trim(Nz(Me.txtAddNote.Text, vbNullString))) > 0)
End Sub

答案 2 :(得分:1)

连接Null值和字符串可以很好地完成整个事情Null,所以请尝试这样做:

Form_ClientF.txtNotes = vbCrLf + MyDate + vbCrLf + vbCrLf + Nz(Form_ClientF.txtAddNote, "") + vbCrLf + vbCrLf + Nz(Form_ClientF.txtNotes, "")