Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[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
Antworten Top
#2
Hi Ralf,

die TextBox31 gibt es ?

Gruß Uwe
Antworten 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
...
Antworten 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)
Antworten Top


Gehe zu:


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