Thema Datum  Von Nutzer Rating
Antwort
07.07.2020 21:19:32 Mirco
NotSolved
07.07.2020 21:58:25 Gast3333
NotSolved
09.07.2020 20:19:46 Gast34763
NotSolved
09.07.2020 20:23:44 Gast53755
NotSolved
Rot Werte aus einer Spalte mit dynamischen Array einlesen und als Kombinationsfeld ausgeben
10.07.2020 18:42:29 xlKing
NotSolved
11.07.2020 11:50:32 Gast13115
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
10.07.2020 18:42:29
Views:
786
Rating: Antwort:
  Ja
Thema:
Werte aus einer Spalte mit dynamischen Array einlesen und als Kombinationsfeld ausgeben

Hallo Mirco,

Ich würde die Spalte mit nur einer Schleife durchlaufen. Also Jede Stadt mit Application.Match einmal prüfen ob sie bereits im Array vorhanden ist. wenn nicht dann anlegen. Anschließend wird das Array sortiert und der Combobox über die List-Eigenschaft zugewiesen. Bei sehr vielen Städten kann das Sortieren eine weile dauern. Probier mal den folgenden Code aus.

Private Sub UserForm_Initialize()
  Dim Stadt As String
  Dim i As Long
  Dim Staedte()

    ReDim Staedte(0)
    zeile = 2 'Beginn der ersten Stadt
    Do While Cells(zeile, 9) <> "" 'solange eine Stadt existiert
      Stadt = Cells(zeile, 9)
      If IsError(Application.Match(Stadt, Staedte, False)) Then 'wenn Stadt noch nicht vorhanden dann
        ReDim Preserve Staedte(i) 'Stadt anlegen
        Staedte(i) = Stadt
        i = i + 1
      End If
      zeile = zeile + 1
    Loop
    
    'Array sortieren
    QSort Staedte, LBound(Staedte), UBound(Staedte)
    
    'Combobox füllen
    Me.cb_Staedte_Auswahl.List = Staedte

End Sub

'Den Sortiercode habe ich von der Website http://www.excel-ist-sexy.de/eindimensionales-array-sortieren/
Sub QSort(aData, a As Long, e As Long)
   Dim x As Long, y As Long, vntTmp As Variant, vntPivot As Variant
   x = a
   y = e
   vntPivot = aData((a + e) \ 2)
   Do While x <= y
      Do While aData(x) < vntPivot
         x = x + 1
      Loop
      Do While aData(y) > vntPivot
         y = y - 1
      Loop
      If x <= y Then
         vntTmp = aData(x)
         aData(x) = aData(y)
         aData(y) = vntTmp
         x = x + 1
         y = y - 1
      End If
   Loop
   If a < y Then Call QSort(aData, a, y)
   If x < e Then Call QSort(aData, x, e)
End Sub

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.07.2020 21:19:32 Mirco
NotSolved
07.07.2020 21:58:25 Gast3333
NotSolved
09.07.2020 20:19:46 Gast34763
NotSolved
09.07.2020 20:23:44 Gast53755
NotSolved
Rot Werte aus einer Spalte mit dynamischen Array einlesen und als Kombinationsfeld ausgeben
10.07.2020 18:42:29 xlKing
NotSolved
11.07.2020 11:50:32 Gast13115
NotSolved