【问题标题】:String only added to textbox when textbox already has text in it仅当文本框已包含文本时才将字符串添加到文本框
【发布时间】:2013-10-04 01:05:17
【问题描述】:

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

【问题讨论】:

  • 请参阅我的answer 关于您之前的问题,了解如何完成此操作。它检查 Comment 以查看它是否已经包含某些内容。如果是,则将新评论附加到它,否则它只是将新评论分配给它。它还确保新评论在添加评论之前包含某些内容。

标签: ms-access vba


【解决方案1】:

使用.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

【讨论】:

    【解决方案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
    

    【讨论】:

    • 啊哈。当涉及 Null 值时,&+ 的行为不同。很高兴知道! +1
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      相关资源
      最近更新 更多