oggis, так?
Код |
---|
Sub prePrint()
Sheets("Card Order").Activate
Dim rowSource As Range, findRn As Range, firstFindRnAddr As String
Set findRn = [D:D].Find(What:=Application.InputBox(Prompt:="Type passport data", Title:="Data for print", Type:=2), LookAt:=xlWhole)
If Not findRn Is Nothing Then
firstFindRnAddr = findRn.Address
' Поиск всех совпадений со строкой поиска
'<<<<< Если нужно печатать выводить только первое совпадение, то закомментировать...
Do
If rowSource Is Nothing Then
Set rowSource = findRn
Else
Set rowSource = Union(rowSource, findRn)
End If
Set findRn = [D:D].FindNext(findRn)
Loop While Not findRn Is Nothing And findRn.Address <> firstFindRnAddr
' Предупреждение о нескольких совпадениях
'**** Если вывод предупреждения не нужен, то закоментировать...
If rowSource.Rows.Count > 1 Then
rowSource.Parent.Activate
rowSource.Select
wrn = MsgBox("More then 1 row is found." & vbNewLine & "Continue to print?", vbYesNo + vbInformation, "Warning")
If wrn <> vbYes Then Exit Sub
End If
'**** до этой строки
'<<<<< до этой строки
Set rowSource = Intersect(rowSource.EntireRow, [B:N])
If Not rowSource Is Nothing Then
For Each rrow In findRn.Rows
With Sheets("Info")
.Range("C2:C11").Value = ""
.Range("C2").Value = rrow.Cells(1, 1).Value 'Name:
.Range("C3").Value = rrow.Cells(1, 2).Value 'SURNAME
.Range("C4").Value = rrow.Cells(1, 3).Value 'PASSPORT
.Range("C5").Value = rrow.Cells(1, 6).Value 'Mobile
.Range("C8").Value = rrow.Cells(1, 9).Value 'Account
.Range("C9").Value = rrow.Cells(1, 10).Value 'Account Class
.Range("C10").Value = rrow.Cells(1, 12).Value 'Client Type
.Range("C11").Value = rrow.Cells(1, 3).Value 'Client Class
End With
Sheets("Print 1").PrintOut
Sheets("Print 2").PrintOut
Next rrow
End If
Else
MsgBox "Nothing found", vbCritical, "No data"
End If
End Sub
|
Ищет полное соответствие или совпадение по маске - как в поиске: "?" - для одного любого символа, "*" - для любого кол-ва любых символов.
Т.е. ввод "78 12461785" - выдаст строки 5,6; "7? 12461785" - строки 2-6; "7? 124*" - строки 2-6 и т.д.
Если нужно вывести только первую строку - закомментируйте соответствующие строки в коде.