ComboBox mit Dropdown aus Verweis von Tabellenblatt
#1
Hallo zusammen

Ich brauche mal wieder eure Hilfe und zwar würde ich gerne folgendes erreichen:

Ich habe ein UserForm mit zwei ComboBoxen. 
ComboBox 1 soll als Suchbegriff dienen und in ComboBox2 soll mir dann der bestimmte Wert aus der Tabelle 1 ausgegeben werden, der durch den Suchbegriff gefunden wurde.

   


Kurz Anhand vom Bild erklärt.

Ich trage in ComboBox 1 die Nummer "1" ein und in ComBox2 kann ich dann als Dropdown einen Wert von "A-K" auswählen
Trage ich in ComboBox 1 die Nummer "2" ein kann ich in ComboBox2 den Wert von "L-U" auswählen.

Ich habe mit folgendem Code versucht es hinzukriegen aber der Bereich in ComboBox2 bleibt immer der gleiche obwohl ich den Suchbegriff in ComboBox1 ändere

Code:
Private Sub ComboBox1_Change()
    Dim lngZeileMax As Long
    Dim SuchBegriff As Variant
    SuchBegriff = ComboBox1.Value
   
   
    lngZeileMax = Sheets("Daten_Analyse").Range("A:A").Find(SuchBegriff, , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Rows.Count
 
    With Me.ComboBox2
   
        .RowSource = "Daten_Analyse!A1:A2" & lngZeileMax
        .Style = fmStyleDropDownList
        .ListIndex = 0
        .ListRows = 20
        .Font.Bold = False
        .ForeColor = RGB(0, 0, 0)
   
    End With
End Sub


Danke für eure Hilfe

Lg Primo
Antworten Top
#2
Moin,

zeig doch bitte die Excel-Bsp-Datei und nicht ein Bild.

Ciao
Thorsten
Antworten Top
#3
Hi,

da stecken so einige Ungereimtheiten im Code.
Teste mal (Code ist noch nicht optimiert):

Code:
Private Sub ComboBox1_Change()
    Dim SuchBegriff As String
    Dim x As Long
    SuchBegriff = ComboBox1.Value
    If IsNumeric(SuchBegriff) Then SuchBegriff = CLng(SuchBegriff)
 
  Me.ComboBox2.Clear

    With Worksheets("Daten_Analyse")
        For x = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Cells(x, 1) = SuchBegriff Then
                Me.ComboBox2.AddItem .Cells(x, 2)
            End If
        Next x
    End With
    With Me.ComboBox2
        .Style = fmStyleDropDownList
        .ListIndex = 0
        .ListRows = 20
        .Font.Bold = False
        .ForeColor = RGB(0, 0, 0)
 
    End With
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • Primo Centurio
Antworten Top
#4
Hallo Primo,

habe deinen Quelltext mal außen vor gelassen und selbst was geschrieben. Sieh mal, ob es das ist, was du brauchst. Über die weitere Verwendung der Auswahl in Box 2 hast du dich ja nicht vertieft. Deshalb dazu (noch) kein Vorschlag.


Angehängte Dateien
.xlsm   Beispiel für Primo.xlsm (Größe: 15,37 KB / Downloads: 5)
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Primo Centurio
Antworten Top
#5
Dein Konzept ist falsch.

Reicht schon:

Code:
Private Sub Userform_Initialize()
  combobox1.List = Sheets("Daten_Analyse").Cells(1).CurrentRegion.Value
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Primo Centurio
Antworten Top
#6
Hallo snb,

falls du mich meinst: teste mal deinen Vorschlag, dann wirst du merken, dass der die Anforderungen nicht erfüllt. Da muss nicht jede Zahl zehn mal erscheinen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Primo Centurio
Antworten Top
#7
Hallo,
hier noch einer von weiteren Möglichkeiten - mal über Array.
Code:
Option Explicit

Private Sub ComboBox1_Change()
    Dim i As Long, j As Long, arrList()
    With Sheets("Daten_Analyse")
        For i = 1 To .Cells(Rows.Count, 2).End(xlUp).Row
            If ComboBox1.List(ComboBox1.ListIndex, 0) = .Cells(i, 1) Then
                j = j + 1
                ReDim Preserve arrList(1 To j)
                arrList(j) = .Cells(i, 2)
            End If
        Next i
        ComboBox2.List = arrList
    End With
End Sub

Private Sub UserForm_Initialize()
    Dim i As Long, j As Long, varSammeln$, arrList()
    With Sheets("Daten_Analyse")
        For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            If InStr(1, varSammeln, .Cells(i, 1)) = 0 Then
                varSammeln = varSammeln & .Cells(i, 1) & " "
                j = j + 1
                ReDim Preserve arrList(1 To j)
                arrList(j) = .Cells(i, 1)
            End If
            ComboBox1.List = arrList
        Next i
    End With
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • Primo Centurio
Antworten Top
#8
Hallo zusammen

Herzlichen Dank für eure Hilfe

@Egon12, @Boris und @Klaus-Dieter genau das was ich gesucht habe, alle Lösungen funktionieren 1A :) Herzlichen Dank

@Klaus-Dieter der Wert, der dann in ComboBox2 erscheint, wird in ein anderes Tabellenblatt eingefügt aber das sollte ich hinkriegen :)


Nochmals vielen herzlichen Dank

Lg Primo
Antworten Top


Gehe zu:


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