2016-11-03 2 views
0

Я использовал следующий код изменения VBS, который применяется к одной ссылке на ячейку, и используется для вызова макроса, зависящего от выбора из списка проверки данных. Событие, инициированное макросом, применяется к строке активной ячейки.Excel VBA для вызова одного макроса с помощью mutliple независимых изменений рабочего листа

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Address(True, True) = "$H$2" Then 
    Select Case Target 
     Case "Yes" 
      Call StandardEntry 
     Case Else 
      'Do nothing 
    End Select 
End If 
End Sub 

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

Я был бы признателен за помощь в написании соответствующего кода или настройке приведенного выше кода.

+0

'StandardEntry', который вы не показываете, будет частью решения здесь, так что, может быть, показать его? –

+0

Вы имеете в виду, что вы просто хотите вызывать 'StandardEntry', когда какая-либо ячейка в столбце H изменяется и имеет значение« Да »? Если это так, возможно, измените «Если Target.Address (True, True) =« $ H $ 2 »Then' to' If Target.Column = 8 Then'. (Но если это то, что вы имеете в виду, слово «последовательный» в вашем вопросе путается.) – YowE3K

+0

@ YowE3K да, это именно то, что я имею в виду, и смена кода работает отлично. Благодаря! Теперь я отредактирую свой вопрос, чтобы удалить путаницу, а затем добавить это как ответ. Еще раз спасибо. Я ценю вашу помощь. – ManbyRiver

ответ

1

Thanks @ YowE3K!

Изменение

If Target.Address(True, True) = "$H$2" Then 

в

If Target.Column = 8 Then 

сделал трюк и это действительно простое решение! Yeehar!

+1

Не забывайте, что 'Target' может быть диапазоном с несколькими ячейками, а' Target.column' возвращает столбец ячейки верхнего левого диапазона в большем диапазоне ... –

+0

Либо используйте 'Target.Cells.Count < > 1' или 'Для каждого rng ​​In Target',' Dim rng As Range' и 'If rng.Column = 8 Then'. – user3819867

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