Hallo zusammen!
Ich nutze Office 365 und baue zur Zeit an einer Excel-Datenbank.
Mein Problem betrifft in einer Userform die Komboboxen, wo ich absolut nicht weiterkomme.
Tabelle: Banddicke, Bandbreite, Gewicht. Sortiert nach Banddicke
Userform mit Kombobox1 (banddicke); Kombobox2 (bandbreite); Textbox (gewicht) zur Ausgabe des Gewichtes und eine Textbox(dicke) zur Kontrolle.
Ich wähle zuerst in KB1 die Banddicke aus, dann in der nach Filter gefüllte KB2 die Bandbreite aus. In der Textbox Gewicht soll dann das Gewicht erscheinen, in der Textbox dicke soll zur kontrolle die Banddicke nochmal angezeigt werden.
Zur Auswahl Momentan: 0,70mm, 0,90mm, 1,00mm; Beide x 1000mm, 1200mm
Ich wähle 0,70x1000mm aus, kommt das richtige Gewicht 5,6kg. Ich wähle 0,90x1000mm aus, kommt das Gewicht 5,6kg und in der Kontrollbox steht 0,70mm.
Excel scheint hier immer den ersten Datensatzeintrag zu wählen, der die 1000mm hat. Auch so mit 1200mm. Wie bekomme ich das hin, daß Excel das richtig zuordnet? Und warum zeigt mir die KB Bandbreite nichts an, wenn ich in der KB Banddicke nur die Zahl, zB 1,00, stehen habe. In dem Tabellenfeld muss 1,00mm stehen. Wäre für Hilfe absolut Dankbar!!!
Hier mal der Code dazu:
Private Sub bandbreite_Change()
Set finden = Worksheets("Tabelle1").Columns(3).Find(what:=bandbreite)
dicke = finden.Offset(0, -1)
gewicht = finden.Offset(0, 1)
End Sub
----------------------------------------------------------------------------------------------------
Private Sub banddicke_Change()
bandbreite.Clear
bandbreite.Enabled = True
Dim Zeile As Long
Dim tbl As ListObject
Set tbl = Tabelle1.ListObjects("Kilogramm")
For Zeile = 1 To tbl.DataBodyRange.Rows.Count
If banddicke.Value = tbl.DataBodyRange(Zeile, 2).Value Then
bandbreite.AddItem tbl.DataBodyRange(Zeile, 3).Value
End If
If banddicke.Value = tbl.DataBodyRange(Zeile, 1).Value Then
bandbreite.AddItem tbl.DataBodyRange(Zeile, 2).Value
End If
Next Zeile
End Sub
---------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
banddicke.List = Range("Kilogramm[Dicke]").Value
Dim odic As Object
Set odic = CreateObject("scripting.dictionary")
Dim cell As Range
For Each cell In Tabelle1.Range("Kilogramm[Dicke]")
odic(cell.Value) = 0
Next cell
banddicke.List = odic.keys
End Sub
|