Проверьте пустые текстовые поля в пользовательской форме, чтобы предупредить с помощью окна сообщения - PullRequest
0 голосов
/ 29 ноября 2010

Я использую лист, как таблицу базы данных.У меня есть пользовательская форма для заполнения данных.

Я хочу кодировать следующий сценарий.

Когда я нажимаю кнопку сохранения в пользовательской форме, если в пользовательской форме есть пустое текстовое поле, появляется сообщениедолжно появиться окно с кнопками «ДА» «НЕТ» с сообщением «Имя клиента не было введено. Вы хотите ввести».

Если я нажимаю «ДА», необходимо перейти кпустое поле.Если я нажимаю «НЕТ», он должен выйти из окна сообщения и перейти к следующему пустому полю, если оно есть.Он должен проверить все пустые поля, а затем только сохранить данные в таблицу рабочего листа.

У меня есть следующий код, который сохраняет дату от пользовательской формы до первой доступной пустой строки в таблице рабочего листа, но нене проверяйте пустые текстовые поля в пользовательской форме.

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 Ответ

2 голосов
/ 29 ноября 2010

Если вы сохраните описательное имя вашего текстового поля (например, «Адрес клиента») в свойстве тега элемента управления, тогда вы можете использовать что-то вроде следующего.


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...