это мой первый пост, который я собираю, но я использовал его в своей работе в течение нескольких лет. Это оказалось бесценным справочником для новичка VBA ie, такого как я. У меня есть большой рабочий лист, который используется для составления списков и отображения рабочего времени персонала. Я пытаюсь использовать vlookup в приведенном ниже коде, чтобы сгенерировать контактный номер и сведения о поставщике известных оперативников, но пока это легко, но скажем, что строка была заполнена данными об оперативнике, которого нет в таблице vlookup (это часто случай), если я нажму на детали после факта или скопирую деталь в ячейку, vlookup запустит и удалит введенную вручную деталь. В основном я хочу, чтобы Excel запускал vlookup только в том случае, если есть совпадение, и если он обнаруживает ошибку, чтобы оставить только введенные вручную данные. вот что у меня есть на данный момент.
Private Sub worksheet_change(ByVal Target As Range)
Dim RNG1 As Range
Dim RNG2 As Range
Dim RNG3 As Range
Set RNG1 = Sheet1.Range("A1:A30") 'RANGES WHERE AN OPERATIVE NAME IS PLACED
Set RNG2 = Sheet1.Range("DQ:D30")
Set RNG3 = Sheet81.Range("G1:G30")
If Not Intersect(Target, Union(RNG1, RNG2, RNG3)) Is Nothing Then
Set MyRange = Sheet1.Range("A2:C497") 'TABLE WHERE VLOOKUP DATA IS STORED ON SEPERATE SHEET
Target.Offset(0, 2) = Application.IfError(Application.VLookup(Target.Value, MyRange, 3, False), "")
Target.Offset(0, 1) = Application.IfError(Application.VLookup(Target.Value, MyRange, 2, False), "")
End If
Exit Sub
введите описание изображения здесь