Я хочу использовать цикл в своей SearchFunction так, чтобы он искал клиента до тех пор, пока не будет найден правильный клиент. Я использую настраиваемый msgbox, чтобы определить, является ли найденный клиент клиентом, которого я искал.VBA с использованием Loop с значениями .find и .copy
Так основно я хочу это:
MsgBox "Is this the customer you were looking for?"
Yes: it will copy cells(sheet2) and paste them into the invoice (sheet1)
No: it will find next customer (and ask same question)**
** And keep doing/asking this till last found customer is shown.
Это как MsgBox выглядит, когда клиент был найден: Custom msgbox
На данный момент он ищет клиента и показывает его в пользовательский msgbox. Когда я говорю «Да, это клиент», он скопирует значения, подобные им, и вставляет их в счет-фактуру. Но когда я говорю «нет, это не мой клиент», он не пойдет к следующему найденному клиенту, но он выйдет из SearchFunction.
Я пробовал использовать Loop, но я не мог заставить его работать. Также я пытался .findnext, но я не мог вставить его в код, я использую ..
Это код, который я использую:
Sub SearchCustomer()
'
' Search for customer
'
'*****************************************************************************************************
Dim Finalrow As Integer
Dim I As Integer
Dim cC As Object
Dim iR As Integer
Dim foundrange As Range
'*****************************************************************************************************
' This Searches for the customer
'*****************************************************************************************************
' Set up searchrange
Set foundrange = Sheets("sheet2").Cells.Find(What:=Sheets("sheet1").Range("B12").Value, LookIn:=xlFormulas, LookAt:=xlPart)
' Checks if fields are filled
If Sheets("sheet1").Range("B12").Value = "" Then
MsgBox "Please fill in a search key", vbOKOnly, "Search customer"
Else
'When nothing is found
If foundrange Is Nothing Then
MsgBox "Customer not found," & vbNewLine & vbNewLine & "Refine your search key", vbOKOnly, "Search customer"
Else
Finalrow = Sheets("sheet1").Range("A1000").End(xlUp).Row
For I = 2 To Finalrow
'When range is found
If Worksheets("sheet2").Cells(I, 1) = foundrange Then
Set cC = New clsMsgbox
cC.Title = "Search contact"
cC.Prompt = "Is this the customer you searched for?" & vbNewLine & "" & vbNewLine & Worksheets("sheet2").Cells(I, 1) & vbNewLine & Worksheets("sheet2").Cells(I, 2) _
& vbNewLine & Worksheets("sheet2").Cells(I, 3) & vbNewLine & Worksheets("sheet2").Cells(I, 4) & vbNewLine & Worksheets("sheet2").Cells(I, 5)
cC.Icon = Question + DefaultButton2
cC.ButtonText1 = "Yes"
cC.ButtonText2 = "No"
iR = cC.MessageBox()
If iR = Button1 Then
'Name
Worksheets("sheet2").Cells(I, 1).Copy
Worksheets("sheet1").Range("B12").PasteSpecial xlPasteFormulasAndNumberFormats
'Adress
Worksheets("sheet2").Cells(I, 2).Copy
Worksheets("sheet1").Range("B13").PasteSpecial xlPasteFormulasAndNumberFormats
'Zipcode & City
Worksheets("sheet2").Cells(I, 3).Copy
Worksheets("sheet1").Range("B14").PasteSpecial xlPasteFormulasAndNumberFormats
'Phonenumber
Worksheets("sheet2").Cells(I, 4).Copy
Worksheets("sheet1").Range("B15").PasteSpecial xlPasteFormulasAndNumberFormats
'E-mail
Worksheets("sheet2").Cells(I, 5).Copy
Worksheets("sheet1").Range("B16").PasteSpecial xlPasteFormulasAndNumberFormats
ElseIf iR = Button2 Then
MsgBox "Customer not found", vbOKOnly, "Contact zoeken"
End If
Range("B12").Select
End If 'gevonden item
Next I
Application.CutCopyMode = False
End If
End If
End Sub
Некоторые помощь будет здорово! Долгое время искали.
Спасибо, продвинутый!
Greets Микос
Пожалуйста, не добавляйте в заголовок «Решенный» или «Исправлено». Существует четкое указание на то, что ваш вопрос имеет принятый ответ. См. Также мета-обсуждение: http://meta.stackoverflow.com/q/309266/2564301 – usr2564301