|
VBA - Suche mit Application.Match |
|
|
|
|
Geschrieben von: Marcus Rose
|
|
Montag, 24. Oktober 2011 um 15:49 Uhr |
|
Eine weitere Möglichkeit Übereinstimmungen zu finden gefällig? Hierbei handelt es sich eigentlich, wenn man weiß wie es angewand wird, um die einfachste Möglichkeit. Wir reden von Application.Match, welche als Formel der Vergleich() wäre.
Um eine Übereinstimmung zu finden ist das wie gesagt die einfachste Möglichkeit. In unserem Beispiel möchten wir eine Bankleitzahl eingeben und es soll uns die passende Bank ausgegeben werden. Dazu habe ich erst einmal 2 fast identische Tabellenblätter erstellt. Zum einen das Blatt "Banken", wodrin alle Banken und Bankleitzahlen gespeichert werden sollen, und natürlich eines, damit wir die BLZ eingeben und uns ggf. der passende Bankname ausgegeben wird. Wird uns die Bank als unbekannt ausgegeben, so wollen wir natürlich die neue Bankverbindung auch abspeichern.
Hier erst einmal die Tabellenblätter:
Banken
|
A |
B |
| 1 |
BLZ |
Bankname |
| 2 |
33050000 |
Stadtsparkasse Wuppertal |
| 3 |
33050001 |
Stadtsparkasse Berlin |
Tabelle1
|
A |
B |
| 1 |
BLZ |
Bankname |
| 2 |
33050001 |
Stadtsparkasse Berlin |
Und hier der passende VBA Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loletzte As Long
Dim Bankname As Variant
Dim x As Variant
If Not Intersect(Target, Range("A2")) Is Nothing Then
With Sheets("Banken")
x = Application.Match(CLng(Target), .Columns(1), 0)
If IsNumeric(x) Then 'wenn gefunden
Range("B2") = .Cells(x, 2)
Else
If Len(Target) <> 8 Then
MsgBox ("Die Blz hat keine 8 Ziffern." _
& "Hier liegt ein Fehler bei der Eingabe vor!")
Exit Sub
End If
Bankname = Application.InputBox("Die Bank ist uns noch nicht bekannt." _
& Chr(13) & _
"Bitte tragen Sie den Namen der Bank ein.", "Eingabe", Type:=2)
If Bankname = False Then
Exit Sub
Else
loletzte = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(loletzte, 1) = Range("A2")
.Cells(loletzte, 2) = Bankname
Range("B2") = Bankname
End If
End If
End With
End If
End Sub
|
|
Zuletzt aktualisiert am Dienstag, 25. Oktober 2011 um 03:36 Uhr |