AW: ComboBox einlesen
17.08.2016 22:15:55
Piet
Hallo Rainer,
Makros googeln und zusammenbauen ist sicher In, hat aber auch so seine Tücken wenn man den Code nicht selbst verstehen und nachvollziehen kann. Ich habe mir erlaubt den Code für ComBoBox laden und UserForm Initialisieren neu zu schreiben. So wie ich ihn schreiben würde. Den Grund wirst du leicht erkennen. Schau dir mal das Original an und vergleiche:
Kritik am Original
Da sind zwei For Next Schleifen ineinander verschachtelt (sehr tückisch), Range("C7:C999") gefolgt von For i = 7 to LastCell
Hajo kann dir bestaetigen das Excel jeden Befehl wörtlich nimmt. Die 1. Schleife wird 999x durchlaufen und ruft somit wörtlich 999x die 2. Schleife auf. Wie voll soll die ComboBox denn werden? Die Bedingung stimmt 999x: Cells(i, 2).Value = ComboBox1
Dim colList As New Collection - colList.Add rngCell.Value, CStr(rngCell.Value)
Da verstehe ich schlicht und einfach im Augenblick garnichts. Vielleicht übersehe ich ja etwas.
Ich konnte nicht sehen das "colList" an anderer Stelle benutzt oder ausgewertet wird? Wozu dient es dann?
On Error Resume Next - hat den bösen Nachteil das ich nicht weiss ob es beim Add Laden Fehler gegeben hat.
Es erfolgt nirgendwo eine Meldung! Durch den Fehler, zuwenig Benzin geladen, sind schon Fluzeuge abgestürzt!
Private Sub ComboBox1_Change()
Dim colList As New Collection
Dim rngCell As Range
Dim i As Integer
On Error Resume Next
For Each rngCell In Range("C7:C999")
Err.Clear
colList.Add rngCell.Value, CStr(rngCell.Value)
If Err.Number = 0 Then
'ComboBox2.AddItem rngCell.Value 'Füllen der ComboBox
For i = 7 To [B65536].End(xlUp).Row
If Cells(i, 2).Value = ComboBox1.Value Then
ComboBox2.AddItem Cells(i, 3) 'Füllen der ComboBox
End If
Next
End If
Next rngCell
End Sub
**********************************************************
ich biete dir einmal meine Lösung an, vorbehaltlich das -colList New Collection- nicht gebraucht wird
Schau mal ob die ComBoBox 1+2 jetzt richtig befüllt werden. Was mit Combo 3 ist weiss ich nicht?
Was bei Übernehmen geschehen soll ist mir auch noch unklar. Prüfe doch erst mal diesen Teil.
(Ich habe den Eindruck da gibt es noch mehr was überarbeitet werden sollte?)
mfg Piet
'ComBoBox einlesen: 17.8.2016 Piet für Herber Forum
Private Sub ComboBox1_Change()
Dim rngCell As Range, i As Integer
On Error GoTo Fehler
For Each rngCell In Range("C7", [c7].End(xlDown))
'ComboBox2.AddItem rngCell.Value 'Füllen der ComboBox
If rngCell.Offset(0, -1) = ComboBox1.Value Then
ComboBox2.AddItem rngCell.Value 'Füllen der ComboBox
End If
Next rngCell
Exit Sub
Fehler: MsgBox "Fehler bei: ComboBox1_Change"
End Sub
Private Sub UserForm_Initialize()
Dim rngCell As Range
On Error GoTo Fehler
For Each rngCell In Range("B7", [b7].End(xlDown))
If rngCell rngCell.Offset(-1, 0) Then
ComboBox1.AddItem rngCell.Value 'Füllen der ComboBox
End If
Next rngCell
Exit Sub
Fehler: MsgBox "Fehler bei: UserForm_Initialize"
End Sub