ich hab einige Schwierigkeiten mit VBA, falls es hier nicht reinpasst einfach Bescheid geben, dann pack ich das wo anders hin.
Ich möchte mit VBA ein DropDownButton(Kombinationsfeld) haben der folgende Eigenschaften besitzen soll:
-aus zwei Tabellen -jeweils die Hersteller anzeigen, aber nur einmal -die Tabelle soll auch dynamisch sein, sprich das man die Tabelle erweitern kann
Der zweite DropdownButton soll die Eigenschaft besitzen, dass er nur die Größen der jeweiligen Hersteller anzeigt die im ersten Dropdown ausgewählt wurden.
Da ich schriftlich mein Anliegen nicht immer gut ausdrücken kann, findet ihr im Anhang eine Bsp. Datei.
30.09.2015, 17:14 (Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2015, 17:27 von pefeu.)
Hallo Joe,
das könnte z. B. so funktionieren
Code:
Option Explicit
Private Sub ComboBox4_Change()
Dim MyDict As Object Dim WkSh As Worksheet Dim vTemp As Variant Dim rZelle As Range Dim sFundst As String
Set MyDict = CreateObject("Scripting.Dictionary") Set WkSh = ThisWorkbook.Worksheets("Tabellen")
With WkSh.Columns(2) Set rZelle = .Find(What:=ComboBox4.Value, LookAt:=xlWhole, LookIn:=xlValues) If Not rZelle Is Nothing Then sFundst = rZelle.Address Do If WkSh.Range("C" & rZelle.Row).Value <> "" Then MyDict(WkSh.Range("C" & rZelle.Row).Value) = 0 Set rZelle = .FindNext(rZelle) ' den evtl. nächsten Begriff suchen Loop While Not rZelle Is Nothing And rZelle.Address <> sFundst Else With WkSh.Columns(10) Set rZelle = .Find(What:=ComboBox4.Value, LookAt:=xlWhole, LookIn:=xlValues) If Not rZelle Is Nothing Then sFundst = rZelle.Address Do If WkSh.Range("K" & rZelle.Row).Value <> "" Then MyDict(WkSh.Range("K" & rZelle.Row).Value) = 0 Set rZelle = .FindNext(rZelle) ' den evtl. nächsten Begriff suchen Loop While Not rZelle Is Nothing And rZelle.Address <> sFundst End If End With End If End With
With ComboBox5 .List = MyDict.keys '.ListIndex = 0 End With
End Sub
Private Sub CommandButton2_Click()
Unload Seilauslegung
End Sub
Private Sub UserForm_Initialize()
Dim MyDict As Object Dim vTemp As Variant Dim lZeile As Long
Set MyDict = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Worksheets("Tabellen") vTemp = .Range("B6:B" & .Cells(.Rows.Count, 2).End(xlUp).Row) End With
For lZeile = LBound(vTemp) To UBound(vTemp) If vTemp(lZeile, 1) <> "" Then MyDict(vTemp(lZeile, 1)) = 0 Next lZeile
With ThisWorkbook.Worksheets("Tabellen") vTemp = .Range("J6:J" & .Cells(.Rows.Count, 10).End(xlUp).Row) End With
For lZeile = LBound(vTemp) To UBound(vTemp) If vTemp(lZeile, 1) <> "" Then MyDict(vTemp(lZeile, 1)) = 0 Next lZeile
With ComboBox4 .List = MyDict.keys '.ListIndex = 0 End With
End Sub
Gruß Peter
Folgende(r) 1 Nutzer sagt Danke an pefeu für diesen Beitrag:1 Nutzer sagt Danke an pefeu für diesen Beitrag 28 • Joe