2

用户在 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
4

3 回答 3

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

这是使用这种方法的表单的屏幕截图...

在此处输入图像描述

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

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
于 2013-10-03T15:42:56.560 回答
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
于 2013-10-03T15:37:02.710 回答
1

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

Form_ClientF.txtNotes = vbCrLf + MyDate + vbCrLf + vbCrLf + Nz(Form_ClientF.txtAddNote, "") + vbCrLf + vbCrLf + Nz(Form_ClientF.txtNotes, "")
于 2013-10-03T15:37:01.763 回答