Adresse nach Kundennummer suchen und eintragen lassenBei folgendem Code müssen 2 Tabellenblätter vorhanden sein. Das eine sollte Rechnung heißen. Das zweite Tabellenblatt nennen wir Kunden. Folgenden Aufbau der Tabellen habe ich gewählt: Rechnung
| | C | D | E | | 11 | | | | | 12 | | Herr | | | 13 | | | | | 14 | | Rose, Marcus | | | 15 | | Eichenhoferweg 91 | | | 16 | | | | | 17 | | 42279 Wuppertal | | | 18 | | | |
Kunden | | A | B | C | D | E | | 1 | Knd. Nr. | Anrede | Name, Vorname | Adresse | Plz / Wohnort | | 2 | 1 | Herr | Rose, Marcus | Eichenhofer Weg 91 | 42279 Wuppertal | | 3 | 2 | Herr | Panther, Paulchen | yyyyy | yyyyy |
Nun ist es Ziel eines Makros, dass eine Kundennummer eingegeben wird. Diese wird im Tabellenblatt Kunden gesucht. Wird die Kundennummer gefunden, so soll der Name und die Adresse ins Tabellenblatt Rechnung eingetragen werden. Hier könnte man eventuell die Funktion Vlookup nutzen, aber ich gehe hier extra diesen Weg, damit Ihr ein Beispiel für ein solches Suchmakro erhaltet. Ich habe den folgenden Code hinter dem Tabellenblatt Kunden liegen: Option Explicit
Sub Instrsuche() Dim i As Long Dim Loletzte As Long, gesucht As String Dim FirstAddress As String, intErgebnis As Range gesucht = Application.InputBox("Bitte geben Sie die Kundennummer ein") Worksheets("Rechnung").Range("D12:D18").ClearContents 'Beginn der Suchfunktion Loletzte = Worksheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row + 1 With Worksheets("Kunden").Range("A2:" & "A" & Loletzte) Set intErgebnis = .Find(gesucht, LookAt:=xlWhole, LookIn:=xlValues) If Not intErgebnis Is Nothing Then FirstAddress = intErgebnis.Address Do Worksheets("Rechnung").Range("D12") = Sheets("Kunden").Cells(intErgebnis.Row, 2) Worksheets("Rechnung").Range("D14") = Sheets("Kunden").Cells(intErgebnis.Row, 3) Worksheets("Rechnung").Range("D15") = Sheets("Kunden").Cells(intErgebnis.Row, 4) Worksheets("Rechnung").Range("D17") = Sheets("Kunden").Cells(intErgebnis.Row, 5) Set intErgebnis = .FindNext(intErgebnis) Loop While Not intErgebnis Is Nothing And intErgebnis.Address <> FirstAddress Else MsgBox ("Kein Eintrag vorhanden!") Exit Sub End If End With End Sub
Um das Ganze zu komplettieren kommt hier aber noch eine Möglichkeit mit Vlookup: Option Explicit
Sub mit_vlookup() Dim gesucht As Double gesucht = Application.InputBox("Bitte geben Sie die Kundennummer ein") Worksheets("Rechnung").Range("D12") = Application.WorksheetFunction.VLookup(gesucht, _ Worksheets("Kunden").Range("A2:E" & Worksheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row), 2, 0) Worksheets("Rechnung").Range("D14") = Application.WorksheetFunction.VLookup(gesucht, _ Worksheets("Kunden").Range("A2:E" & Worksheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row), 3, 0) Worksheets("Rechnung").Range("D15") = Application.WorksheetFunction.VLookup(gesucht, _ Worksheets("Kunden").Range("A2:E" & Worksheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row), 4, 0) Worksheets("Rechnung").Range("D17") = Application.WorksheetFunction.VLookup(gesucht, _ Worksheets("Kunden").Range("A2:E" & Worksheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row), 5, 0) End Sub
|