Руководство VBA для условного копирования и вставки / передачи данных - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть рабочая тетрадь с двумя листами; Вход и база данных. То, что я пытаюсь сделать, это получить данные из ввода ввода в базу данных. Однако предостережение заключается в том, что если ячейка B4 на входе показывает «Начальный», я хочу, чтобы данные были добавлены в новую строку в отформатированной таблице в базе данных. В качестве альтернативы, если ячейка B4 на входе показывает «Повторить 1», я хочу, чтобы данные добавлялись в ту же строку, что и предыдущий набор данных этого человека, как указано идентификатором в ячейке B3 на входе. Мне удалось заставить первую часть работать с некоторой помощью (если в ячейке B4 на вводе отображается «Initial»), однако я не могу заставить работать часть «Repeat 1». Код, который у меня есть до сих пор:

Sub test()

Dim inputWks As Worksheet
Dim databaseWks As Worksheet
Dim tbl As ListObject
Dim newRow As Range

Set inputWks = Worksheets("Input")
Set databaseWks = Worksheets("Database")
Set tbl = databaseWks.ListObjects("Table1")

Application.ScreenUpdating = False

If inputWks.Range("B4").Value = "Initial" Then

    Set newRow = tbl.ListRows.Add.Range

    With newRow

        .Range("A1").Value = inputWks.Range("B3").Value
        .Range("B1").Value = inputWks.Range("B4").Value
        .Range("S1").Value = inputWks.Range("B2").Value
        .Range("C1").Value = inputWks.Range("B5").Value
        .Range("D1").Value = inputWks.Range("B6").Value
        .Range("F1").Value = inputWks.Range("B7").Value
        .Range("G1").Value = inputWks.Range("B8").Value
        .Range("I1").Value = inputWks.Range("B9").Value
        .Range("J1").Value = inputWks.Range("B10").Value
        .Range("K1").Value = inputWks.Range("B11").Value
        .Range("L1").Value = inputWks.Range("B12").Value

    End With

ElseIf inputWks.Range("B4").Value = "Repeat 1" Then

    fu_row = databaseWks.Range("A:A").Find(What:=inputWks.Range("B3"), LookIn:=xlValues).Row

        fu_row.Range("EY").Value = inputWks.Range("B2").Value
        fu_row.Range("FA").Value = inputWks.Range("B4").Value
        fu_row.Range("FB").Value = inputWks.Range("B7").Value
        fu_row.Range("FC").Value = inputWks.Range("B8").Value
        fu_row.Range("FD").Value = inputWks.Range("B12").Value

End If

Application.ScreenUpdating = True

End Sub

Причина, по которой объем передачи данных отличается, заключается лишь в том, что некоторая информация не требуется при последующих посещениях. Кроме того, мне известна функция «Формы» в Excel, однако наш набор данных будет состоять из более чем 32 элементов, что является пределом форм из того, что я прочитал.

Надеюсь, кто-то сможет дать некоторые рекомендации. Спасибо!

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