Я все еще немного новичок в VBA и работаю над созданием своих собственных макросов и тому подобным.Но у меня есть небольшая проблема с небольшим количеством кода.
У меня есть журнал, в который я записываю информацию о поставщике, и на рабочем листе у меня есть этот код ниже, который ищет значение, введенное в него посредством ввода номера, и затем проверяет, связано ли имя сэто из другого листа, содержащего таблицу имен.
Приведенный ниже код работает нормально по большей части, однако мне было трудно заставить его искать также, если введенное значение уже было введеновыше или ниже этого.В настоящее время, когда вводится число, оно извлекает имя и затем добавляет значение 1 к соответствующей ячейке по найденному результату на листе, содержащем список имен.
Конечный результат, который я пытаюсьчтобы добиться этого, нужно, чтобы он проверял, существует ли имя на текущем рабочем листе (а не на листе со списком имен), и, если это так, не добавит значение 1 на лист, содержащий все мои имена и номера.
Я пытался использовать цикл, но не смог заставить его работать.Любая помощь будет принята с благодарностью!
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B6:B37", "B46:B77")) Is Nothing Then
If WorksheetFunction.IsNumber(Target.Value) Then
Application.EnableEvents = False
Vendor = Sheet8.Range("A2:B500")
Target.Value = Application.VLookup(Target.Value, Vendor, 2, False)
Application.EnableEvents = True
Set StartValue = ThisWorkbook.Sheets("Vendor List").Range("A:B").Find(What:=Target.Value, LookIn:=xlValues)
cPos = StartValue.Address
Set ThisValue = ThisWorkbook.Sheets("Wednesday").Range("B6:B77").Find(What:=Target.Value, _
After:=Target.Value, _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchDirection:=xlNext, _
MatchCase:=True, _
SearchFormat:=False)
ThisWorkbook.Sheets("Vendor List").Range(cPos).Offset(0, 8).Value = ThisWorkbook.Sheets("Vendor List").Range(cPos).Offset(0, 8).Value + 1
End If
If IsError(Target.Value) Then
Target.Value = ""
MsgBox "The Vendor number entered is not listed. Either you have entered an invalid number, or you have not yet added this vendor to the Vendor List sheet.", vbCritical
ThisWorkbook.Sheets("Vendor List").Range(cPos).Offset(0, 8).Value = ThisWorkbook.Sheets("Vendor List").Range(cPos).Offset(0, 8).Value - 1
End If
End If
Я прикрепил изображение того, как это работает.Надеюсь, это немного прояснится ...
Пример