Excel VB для копирования строк с 1 листа на другой при соблюдении 2 критериев

#vba #if-statement #copy #multiple-columns #rows

#vba #if-оператор #Копировать #несколько столбцов #строки

Вопрос:

У меня нулевой опыт работы с VBA. Я пытаюсь использовать оператор IF для соответствия двум критериям в строках на листе с надписью Master. критерии таковы: если столбец D = «Активный» и столбец E = «Испанский», я хочу скопировать эту строку на лист с надписью «Испанский», но я не хочу, чтобы столбцы D и E копировались на испанский лист.

Вот над чем я работаю, но я продолжаю получать ошибку компиляции. Что я делаю не так?

 Sub TransferValues()

    Dim Emp1a As String, Emp1b As String
    With Worksheet("Sheet1")
        If .Range("D2:D30") = "Active" And .Range("E2:E30") = "Spanish"
        Emp1a = .Range("B2:C30")
        Emp1b = .Range("F2:I30")
    End With
    
     Sheet2.Range("B2:C30") = Emp1a
     Sheet2.Range ("D2:G30") - Emp1b
        
     Debug.Print Emp1a
     Debug.Print Emp1b
    

End Sub
 

Ответ №1:

Для вашего оператора if вы, похоже, используете блок, потому что у вас есть две вещи, которые вы хотите выполнить в строке после, поэтому синтаксис

 if <condition> then

    <statements for true>

else (optionally)

    <statements for false> (optionally)

end if
 

итак, вам нужно «then» в конце строки if и «end if» в строке перед end with .

В «Sheet2.Range («D2: G30″) — Emp1b» вы имели в виду использовать минус, а не =?

Не могли бы вы опубликовать ошибку и номер строки, в которой она происходит?

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

1. Это была опечатка, означавшая, что нужно поставить «=»

2. Спасибо за вашу помощь. Я попробую это. Есть идеи о том, как настроить его на автоматический запуск при добавлении новой строки?