Vlookup im Excel-Makro
Frage
Ich habe in Excel ein Formular erstellt, das Eingaben von Benutzern entgegennimmt und diese in Sheet2 speichert.Ich habe ein Kombinationsfeld mit dem Namen „Konto“, aus dem Benutzer den Namen des Kontos auswählen können.Allerdings ist jedem Konto eine eindeutige ID zugeordnet.Ich möchte diese ID nicht den Endbenutzern zugänglich machen, aber gleichzeitig möchte ich, dass die ID, die dem ausgewählten Konto entspricht, in Tabelle 2 eingetragen wird.
Ich versuche, einen Vlookup durchzuführen, um nach der ID des ausgewählten Kontos zu suchen.
Ich habe die Kontowerte in Sheet3 eingerichtet.
Example: Column A ColumnB Account1 Id12345 Account2 Id23456 Account3 Id34567
Mein Code im Excel-Makro sieht in etwa wie folgt aus.
Private Sub Save_Click()
Dim RowCount As Long
Dim myValue as String
RowCount = Worksheets("Sheet2").Range("A1").CurrentRegion.Rows.Count
With Worksheets("Sheet2").Range("A1")
.Offset(RowCount, 0).Value = Me.Account.Value
myValue = WorksheetFunction.VLookup(Range("A2"), Range("Sheet3!G1:G14"), 2, False)
Ich bin mir nicht sicher, warum es nicht funktioniert.Jeder Vorschlag wird sehr geschätzt.
Danke,
Lösung
Versuche dies:
Private Sub Save_Click()
Dim RowCount As Long
Dim myValue As Variant
Dim Sh2 As Worksheet, Sh2 As Worksheet
Dim RefRange As Range
With ThisWorkbook
Set Sh2 = .Sheets("Sheet2")
Set Sh3 = .Sheets("Sheet3")
End With
RowCount = Sh2.Range("A1").CurrentRegion.Rows.Count
Set RefRange = Sh3.Range("G1:H14") '--Change as necessary.
Sh2.Range("A1").Offset(RowCount, 0).Value = Me.Account.Value
On Error GoTo myValueErrHandle
myValue = WorksheetFunction.VLookup(Sh2.Range("A2").Value, RefRange, 2, False)
'--More code, etc etc.
myValueErrHandle:
If Err.Number = 1004 Then
MsgBox "No match using VLOOKUP."
End If
Exit Sub
End Sub
Qualifizieren Sie so weit wie möglich alles, was Sie können, und verwenden Sie prägnanten, aber aussagekräftigen Code.Nicht verwenden Range("A2")
wenn du willst, was drin ist.Verwenden .Value
da dies die beste Vorgehensweise ist.Soweit ich sehen kann, ist nichts falsch.Ich habe auch eine hinzugefügt Error 1004
Handhabung für keine Übereinstimmungen.Beachten Sie abschließend, dass ich mich geändert habe myValue
zu einem Variant
, nur um Basen abzudecken.
Lassen Sie uns wissen, ob das funktioniert.
Andere Tipps
Versuchen Sie das?: Entschuldigung, zu lange, um einen Kommentar zu geben:
generasacodicetagpre.nur vielleicht, also probieren Sie es aus.
table: