Добавление данных на основе определенного значения заданного поля?

#excel #vba

Вопрос:

У меня есть файл excel, автоматизированный с помощью макроса. У меня есть интерфейс формы пользователя (см. Фото ниже). Внутри формы пользователя находится поле со списком и текстовое поле.

Я хочу добавить что-то в рабочий лист, но в зависимости от того, какие это расходы, и я не понимаю, что не так в моем коде ниже. Я хочу, чтобы, если я что-то добавлю в колонку «такси» (2-я строка), я также могу добавить в «автомойку» (2-я строка), но это приведет к другому результату. Я также не могу добавлять данные в 3-ю, 4-ю, 5-ю строки и так далее.

 Private Sub CommandButton1_Click()
    Dim iRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")

    'find first empty row in database

    Set rngNullString = Intersect(ws.Columns("A"), ws.Columns("A")).Find("")
    If rngNullString.row < ws.Cells(ws.Rows.Count, "A").End(xlUp).row Then
        Set rngNullString = Intersect(ws.Columns("A"), _
                                      ws.Columns("A")).SpecialCells(xlCellTypeBlanks)
    End If
    iRow = rngNullString.row

    'check for Name number
    If Trim(Me.TextBox1.value) = "" Then
        Me.TextBox1.SetFocus
        MsgBox "Please complete the FORM"
        Exit Sub
    End If

    'copy the data to the database
    If Me.ComboBox1.value = "Taxi" Then
        ws.Cells(iRow, 1).value = Me.ComboBox1.value
        ws.Cells(iRow, 2).value = Me.TextBox1.value
    End If
    If Me.ComboBox1.value = "Carwash" Then
        ws.Cells(iRow, 3).value = Me.ComboBox1.value
        ws.Cells(iRow, 4).value = Me.TextBox1.value
    End If

    MsgBox "Sucessfully! Data added", vbOKOnly   vbInformation, "Data Notification"
    'clear the data
    Me.TextBox1.value = ""
    Me.ComboBox1.value = ""
    Me.TextBox1.SetFocus

    Unload Me
End Sub
 

введите описание изображения здесь

Комментарии:

1. Пожалуйста, попробуйте iRow = ws.Range("A" amp; ws.rows.count).End(xlUp).row

2. ничего не случилось. все то же самое. значение, которое я добавил, заменило значение в моем заголовке

3. iRow = ws.Range("A" amp; ws.rows.count).End(xlUp).row 1 Предыдущее предложение возвращает последнюю строку. Последняя пустая строка-следующая…

4. Я уже понял, что iRow = rngNullString. Строка верна, я забыл объявить переменную rngNullstring выше. Теперь моя проблема в том, как я могу добавить данные в колонку «Автомойка»?

5. Очень сложно… ws.Cells(iRow, 3).Value = "Test" . Возможно ли, чтобы эта колонка не была все время третьей?