2015-03-04 3 views
0

Я работаю над приложением VBA, где, когда я выбираю параметр из выпадающего списка (созданного с использованием проверки данных), несколько столбцов должны заполняться автоматически. Он отлично работает, если я выбираю вариант из выпадающего списка для каждой ячейки отдельно. Однако, если я перетаскиваю опцию на несколько строк, заполняются только данные для верхней строки, тогда как для остальных строк этого нет. Как мне это решить? Это мой код под функцией Worksheet_ChangeЗаполнение ячеек с помощью Drop downlist

Private Sub Worksheet_Change(ByVal Target As range) 
If Target.Column = 22 Then 
    ThisRow = Target.Row 
    On Error GoTo ExitSub 
    If Target.Value = "E" Then 
     range("W" & ThisRow).Value = range("R" & ThisRow).Value 
     range("X" & ThisRow).Value = "" 
    On Error GoTo 0 
    ElseIf Target.Value = "T" Then 
     range("W" & ThisRow).Value = "" 
     range("X" & ThisRow).Value = range("S" & ThisRow).Value 
    ElseIf Target.Value = "M" Then 
     range("W" & ThisRow).Value = "" 
     range("X" & ThisRow).Value = "" 
    ElseIf Target.Value = "N" Then 
     range("W" & ThisRow).Value = 0 
     range("X" & ThisRow).Value = 0 
    ElseIf Target.Value = "R" Then 
     range("W" & ThisRow).Value = range("T" & ThisRow).Value 
     range("X" & ThisRow).Value = range("U" & ThisRow).Value 
    End If 
End If 
Exit Sub 
ExitSub: 
Exit Sub 
End Sub 

ответ

0

Если вы выбираете несколько ячеек, то есть более чем на одну строку и/или столбец в вашем Target диапазоне, поэтому заявления ссылающихся .Column и .Row будут неоднозначны.

Если вы переносите этот код в цикл, который проходит через каждую ячейку в пределах диапазона, он должен обновлять весь диапазон, а не только первую ячейку.

Смежные вопросы