Я очень новичок в VBA и имею только базовый уровень знаний.
Я пытался создать макрос для перекрестной ссылки данных на одном листе на несколько других листов в одной рабочей книге. Если запись найдена, я бы хотел, чтобы появилось окно msgbox, чтобы предупредить пользователя о местонахождении данных.
После многих часов поиска в Интернете и объединения кусков кода это то, что у меня есть
Sub search()
Dim ws As Worksheet, found As Range
Dim TextToFind(1 To 20) As String
Dim iText As Long
TextToFind(1) = "Jade Smith"
TextToFind(2) = "Bob Collins"
TextToFind(3) = "Jemima Smythe"
For Each ws In ThisWorkbook.Worksheets
With ws
If .Name <> "Blacklisted Candidates" Then 'Do not search blacklist candidates!
iText = 1
Do While iText <= UBound(TextToFind)
If TextToFind(iText) <> "" Then 'Do not search blank strings!
Set found = .UsedRange.Find(what:=TextToFind(iText), LookIn:=xlformulas, LookAt:=xlPart, MatchCase:=False)
If Not found Is Nothing Then
MsgBox "Proxy Candidate Found at " & found.Address
Else
MsgBox "No Proxy Candidates Found ", vbOKOnly, "Success!"
End If
iText = iText + 1
End If
Loop
End If
End With
Next ws
End Sub
Однако этот код не находит значения из других листов.
при тестировании я просто получаю msgbox, когда данные не найдены, даже если там есть тестовые данные.
У меня есть рабочая книга примерно из 9 листов (постоянно растущих), и я хочу выполнить поиск в первых 9 столбцах каждой рабочей книги для указанных данных, которые, как вы можете видеть, я вручную ввел в макрос, но при запуске макроса я не получаю результатов возвращается, даже если есть данные для поиска.
*MsgBox ("Proxy Candidate Found at " And rngX.Address)
наMsgBox "Proxy Candidate Found at " & rngX.Address
- person Shai Rado   schedule 06.09.2016Do
не имеет возможности выйти. ТакжеIf Rng Is found Then
должно бытьIf Not Rng Is Nothing Then
. - person Comintern   schedule 06.09.2016goto
, который он использует, чтобы выйти из бесконечного цикла. - person litelite   schedule 06.09.2016