[VBA] VLOOKUP - SVERWEIS
#1
Hallo,

ich will die TextBox31 in einer Userform mit dem SVERWEIS füllen, bezugnehmend auf den Wert von ComboBox2 aus den Spalten A und B in Blatt "Katalog".

Ich will im Prinzip bei Änderung des Inhaltes von ComboBox2 in TextBox31 den zugehörigen Wert aus Spalte B anzeigen lassen.
Wenn es keinen Begriff dazu gibt, soll es leer bleiben und die manuelle Eingabe möglich sein.
Durch diese TextBox31 soll dann später die ComboBox3 ersetzt werden.

Wie mache ich das?
Dies habe ich getestet:
Code:
Private Sub ComboBox2_Change()
     Me.Controls("TextBox" & 31).Value = WorksheetFunction.VLookup(Me.Controls("ComboBox2").Value, Sheets("Katalog").Range("A3:B" & Sheets("Katalog").Cells(Rows.Count, 1).End(xlUp).Row), 2, 0).Value
End Sub
aber da kommt die Fehlermeldung: " 424 Objekt erforderlich!"

Hier ist das Such-Makro mit der VLOOKUP-Zeile, da kommt die Fehlermeldung: "VLOOKUP-Eigenschaft kann nicht zugeordnet werden":
Code:
Private Sub cmd_Search_Click()
  Dim i As Long
  Dim booJaNein As Boolean
 
  With Worksheets("Stammdaten")
     With .Range("A6:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
        Set suchErgebnis = .Find(TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not suchErgebnis Is Nothing Then
           'MsgBox Suchergebnis.Address
           lngZeile = suchErgebnis.Row
           If suchErgebnis.Offset(0, 30).Value = "ja" Then
              booJaNein = True
           Else
              booJaNein = False
           End If
           For i = 2 To 4
              Me.Controls("TextBox" & i).Value = suchErgebnis.Offset(0, i - 1).Value
           Next i
           Me.Controls("ComboBox1").Value = suchErgebnis.Offset(0, 4).Value     'Spalte 5
           For i = 5 To 10
              Me.Controls("TextBox" & i).Value = suchErgebnis.Offset(0, i).Value
           Next i
           For i = 2 To 3
              Me.Controls("ComboBox" & i).Value = suchErgebnis.Offset(0, i + 9).Value 'Spalte 12, 13
           Next i
Me.Controls("TextBox" & 31).Value = WorksheetFunction.VLookup(Me.Controls("ComboBox2").Value, Sheets("Katalog").Range("A3:B" & Sheets("Katalog").Cells(Rows.Count, 1).End(xlUp).Row), 2, 0).Value
           
           Me.Controls("TextBox11").Value = suchErgebnis.Offset(0, 13).Value     'Spalte 14
           Me.Controls("ComboBox4").Value = suchErgebnis.Offset(0, 14).Value     'Spalte 15
           For i = 12 To 13
              Me.Controls("TextBox" & i).Value = suchErgebnis.Offset(0, i + 3).Value  'Spalte 16, 17
           Next i
           Me.Controls("ComboBox5").Value = suchErgebnis.Offset(0, 17).Value     'Spalte 18
           For i = 14 To 25
              Me.Controls("TextBox" & i).Value = suchErgebnis.Offset(0, i + 4).Value  'Spalte 19-30
           Next i
           Me.Controls("CheckBox1").Value = booJaNein         'Spalte 31, Ersterfassung
           For i = 26 To 27
              Me.Controls("TextBox" & i).Value = suchErgebnis.Offset(0, i + 5).Value  'Spalte 32, 33
           Next i
           For i = 6 To 9
              Me.Controls("ComboBox" & i).Value = suchErgebnis.Offset(0, i + 27).Value 'Spalte 34 - 37
           Next i
           For i = 28 To 30
              Me.Controls("TextBox" & i).Value = suchErgebnis.Offset(0, i + 9).Value  'Spalte 38 - 40
           Next i
           
           cmd_Update.Enabled = True
           cmd_loeschen.Enabled = True
        Else
           MsgBox "Kein Eintrag mit der Nummer" & vbCrLf & TextBox1.Value & vbCrLf & "in dieser Liste vorhanden!"
           cmd_Update.Enabled = False
           cmd_loeschen.Enabled = False
        End If
     End With
  End With
End Sub
Top
#2
Hi Ralf,

die TextBox31 gibt es ?

Gruß Uwe
Top
#3
Hi Uwe,

ja.
Habe ich extra vorher angelegt.

Dies funktioniert, aber ich will den Inhalt für diese TextBox nicht aus den Zellen der Stammdaten (Stammdaten ist die Datenbank aller Einträge), sondern aus dem Katalog (dort sind die Listen für die ComboBoxen drin) holen.
Code:
...
            'neuer Ausschnitt aus search
            'For i = 2 To 3
            '   Me.Controls("ComboBox" & i).Value = suchErgebnis.Offset(0, i + 9).Value 'Spalte 12, 13
            'Next i
            Me.Controls("ComboBox" & 2).Value = suchErgebnis.Offset(0, 2 + 9).Value 'Spalte 12
            Me.Controls("TextBox" & 31).Value = suchErgebnis.Offset(0, 12).Value    'Spalte 13, dies klappt mit den Inhalten der Stammdatenspalte
            
' Me.Controls("TextBox" & 31).Value = WorksheetFunction.VLookup(ComboBox2.Value, Sheets("Katalog").Range("A3:B" & Sheets("Katalog").Cells(Rows.Count, 1).End(xlUp).Row), 2, 0).Value           'dies klappt nicht
            
            Me.Controls("TextBox11").Value = suchErgebnis.Offset(0, 13).Value     'Spalte 14
            Me.Controls("ComboBox4").Value = suchErgebnis.Offset(0, 14).Value     'Spalte 15
...
Top
#4
Hallo Ralf,

die WorksheetFunctions werfen zuweilen ein Auge auf die Application Smile Die gehen mal mit und mal ohne. Hier mal ein Beispiel, wie VLOOKUP mit und ohne geht:

Code:
Private Sub UserForm_Initialize()
Dim rngVL As Range
'Mit Application
Me.TextBox1.Value = Application.WorksheetFunction.VLookup("d", Sheets(1).Range("A3:B" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row), 2, 0)
'Ohne Application
Set rngVL = Sheets(1).Range("A3:B" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row)
Me.TextBox2.Value = WorksheetFunction.VLookup("d", rngVL, 2, 0)
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste