Hallo zusammen
Da ich noch absoluter VBA Einsteiger bin, benötige ich einen Rat von VBA Experten/Profis.
Folgendes Problem habe ich :
In einer Spalte habe ich ca. 2200 Einträge(Städte).
Nun will ich diese Einträge aber in einem Kombinationsfeld ausgeben, da ich aber viele Städte mehr als 1 mal darin habe z.B. Dortmund 10 mal oder Hamburg 12 mal möchte ich das in dem Kombinationsfeld nur jeweils 1 mal jede Stadt anzeigt.
Die Suche soll ab Zeile 2(I2) beginnen, habe zwar die zugewíesen und beim ersten durchlauf zeigt er auch die erste Stadt an, sobald aber die 3 Zeile angesteuert werden soll zeigt er nur "",keine Ahnung warum. Er soll in die Datenfelder die Städte eintragen und in Kombinationsfeld in reduzierter Form anzeigen.
Nach einiger Suche in diversen VBA Büchern, habe ich als Idee von einem AutoFilter gelesen.(versuche sind im VBA Code )
Ich möchte das Problem, wenn möglich aber mit z.B. For-Schleifen & IfthenElse Verzweigungen lösen, geht das überhaupt?
Ich möchte wie als Thema schon erwähnt, Werte (ca.2200 Zeilen z.B. Städte(Hamburg, Mainz, Karlsruhe, Dortmund
usw.) so Programmieren, dass jede Stadt nur 1 x im Kombinationsfeld dargestellt wird.
Hier mein VBA-Code:
Private Sub UserForm_Initialize()
Dim Zeile As Integer
Zeile = 2
Dim Staedte() As String
Dim i As Integer
Dim Meldung As String
Dim gefunden As Boolean
gefunden = False
Dim longZeileMax As Long
'Ab Zeile 2 Von Spalte I beginnen(Karlsruhe)/Speichern von Stadt Wert in Zelle I2
ReDim Preserve Staedte(i)
Staedte(i) = Range("I2")
'Wiederhole solange Zeilen nicht leer sind
Do While Cells(Zeile, 9) <> ""
ReDim Preserve Staedte(i) 'Speichern der Städte
For i = 0 To UBound(Staedte) ' mit Ubound die Obergrenze setzen
If Staedte(i) = Cells(Zeile, 9) Then 'Wenn Falsch wahr wird dann geht es über die Exit For raus in die
gefunden = False
Exit For
i = i + 1 'nächsten Index durchgehen
Zeile = Zeile + 1 'nächste Zeile durchgehen
End If
Next
ReDim Preserve Staedte(i) 'hier hinein,dann in die nächste For Schleife
For i = 0 To UBound(Staedte)
If Staedte(i) = Cells(Zeile, 9) Then
Me.cb_Staedte_Auswahl.ListIndex = 1 'ab Kombinationsfeld ab Stelle 0 beginnen
Else
'With Tabelle1 'Versuch eines Filters leider stürzt das Programm nach kurzer Zeit ab
'' .Range("L:L").ClearContents ' Einträge in Spalte L löschen 'Eindeutige Werte ermitteln
''
'' .Range("I1").CurrentRegion.Column(2).AdvancedFilter _
'' Action:=xlFilterCopy, CopyToRange:=.Range("L1"), Unique:=True
''
'' longZeileMax = .Cells(.Rows.Count, 6).End(xlUp).Row
'' Me.cb_Länder_Auswahl.RowSource = Range("L2:L" & longZeileMax).Address
'' Me.cb_Länder_Auswahl.ListIndex = 0
'
'
'End With
Me.cb_Staedte_Auswahl.AddItem Cells(Zeile, i)
End If
i = i + 1
Zeile = Zeile + 1
Next
Loop
End Sub
Vielen Dank für Eure Unterstützung
Grüße
Mirco
|