检查用户窗体中的空白文本框以使用“消息”框进行警告

时间:2010-11-29 05:50:26

标签: excel-vba vba excel

我正在使用工作表作为数据库表。我有一个用户表单来填充数据。

我想编写以下方案。

当我单击用户窗体上的保存按钮时,如果用户窗体中有任何空白文本框,则必须弹出一个带有“是”“否”按钮的消息框,并显示“未输入客户名称”的消息你想进入“。

如果单击“是”,则必须转到空白字段。如果我单击“否”,它必须退出消息框并转到下一个空白字段(如果有)。它必须检查所有空白字段,然后只将数据保存到工作表表中。

我有以下代码将日期从用户窗体保存到工作表中的第一个可用空白行,但不检查用户窗体中的任何空白文本框。

Private Sub cmdsave_Click()
    Dim irow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("customerDetails")

    'find first empty row in database
    irow = ws.Cells(Rows.Count, 3) _
    .End(xlUp).Offset(1, 0).Row


    'save the data to the database
    ws.Cells(irow, 2).Value = Me.txtcustname.Value
    ws.Cells(irow, 3).Value = Me.txtinvad1.Value
    ws.Cells(irow, 4).Value = Me.txtinvad2.Value
    ws.Cells(irow, 5).Value = Me.txtinvad3.Value
    ws.Cells(irow, 6).Value = Me.txtdelyad1.Value
    ws.Cells(irow, 7).Value = Me.txtdelyad2.Value
    ws.Cells(irow, 8).Value = Me.txtdelyad3.Value
    ws.Cells(irow, 9).Value = Me.txtcstno.Value
    ws.Cells(irow, 10).Value = Me.txttinno.Value
    ws.Cells(irow, 11).Value = Me.txteccno.Value
    ws.Cells(irow, 12).Value = Me.txtdlno1.Value
    ws.Cells(irow, 13).Value = Me.txtdlno2.Value
    ws.Cells(irow, 14).Value = Me.txtstno.Value
    ws.Cells(irow, 15).Value = Me.txtcsttinno.Value
    ws.Cells(irow, 16).Value = Me.txtpanno.Value
    ws.Cells(irow, 17).Value = Me.txtins.Value


    'clear the data
    Me.txtcustname.Value = ""
    Me.txtinvad1.Value = ""
    Me.txtinvad2.Value = ""
    Me.txtinvad3.Value = ""
    Me.txtdelyad1.Value = ""
    Me.txtdelyad2.Value = ""
    Me.txtdelyad3.Value = ""
    Me.txtcstno.Value = ""
    Me.txttinno.Value = ""
    Me.txteccno.Value = ""
    Me.txtdlno1.Value = ""
    Me.txtdlno2.Value = ""
    Me.txtstno.Value = ""
    Me.txtcsttinno.Value = ""
    Me.txtpanno.Value = ""
    Me.txtins.Value = ""


    End Sub

1 个答案:

答案 0 :(得分:2)

如果您将文本框的叙述名称(例如“客户地址”)存储在控件的tag属性中,那么您可以使用类似下面的内容。


Private Sub CommandButton1_Click()
Dim t As Control, res As VbMsgBoxResult

For Each t In Me.Controls
    If TypeName(t) = "TextBox" Then ' Make sure we're only looking at textboxes.
        If t.Text = vbNullString And t.Tag <> vbNullString Then
            res = MsgBox("You've not completed the " + t.Tag + " field. Would you like to complete it now?", vbYesNo + vbQuestion)

            If res = vbYes Then Exit Sub
    End If
Next

End Sub