Schleife/ Werte in Variablen speichern

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm CheckBox MsgBox
Bild

Betrifft: Schleife/ Werte in Variablen speichern
von: Martin
Geschrieben am: 15.10.2003 09:12:09


Hallo,

Ich habe folgende Frage. Spalte A einer Tabelle enthält Ländercodes, zB.


CH
FR
CH
ES
IT
IT
...


Der gleiche Code kann mehrmals vorkommen, die Liste ist nicht nach Codes geordnet (und kann auch nicht).
Sinn dieser Codes ist es, die Tabelle an bestimmte Personen in der Firma zu verschicken. Der User sieht also zB 'CH' und 'FR' und weiss, dass die Tabelle (mittel Makro) an Kollegen geschickt werden soll, die verantwortlich sind für die Schweiz und Frankreich. Das funktioniert derzeit so, dass eine Userform hochkommt und der User mittels Checkboxen die entsprechende Auswahl festlegt.

Ich dachte mir, dass Excel mir eigentlich diese Arbeit abnehmen kann. Dazu müsste (so stelle ich mir das vor) eine Schleife Spalte A durchlaufen und alle verschiedenen Codes einmal in einer Variablen speichern. Der Inhalt der Variablen wird dann an an den Teil des Makros weitergegeben, der das 'TO' Feld bestimmt.

Ich weiss aber nicht
- wie ich alle verschiedenen Werte nur einmal in einem Durchaluf speichern soll und
- wie diese Codes dann in die korrekten Mailadressen konvertiert werden können.

Kann mir jemand hierbei helfen bitte.

Gruss,
Martin

Bild


Betrifft: Mit Collection
von: Hans T.
Geschrieben am: 16.10.2003 00:15:53

Hallo Martin

Versuch mal den folgenden Code. Die MsgBox kannst du durch die Weiterverarbeitung der Ländercodes ersetzen.

Public colCCodes As New Collection


Private Sub Auflisten()
  'Listet die Werte in Spalte 1 einmal sortiert auf
  Dim varCCode As Variant
  
  While colCCodes.Count > 0                 'Collection leeren, falls nicht leer
    colCCodes.Remove colCCodes.Count
  Wend
  On Error Resume Next                      'unterdrückt Fehler bei mehrfachen Einträgen
                                            'von A1 bis zur letzen benutzten Zelle lesen
  For Each varCCode In Range([A1], Cells([A1].SpecialCells(xlCellTypeLastCell).Row, 1)).Cells
    If Not IsEmpty(varCCode) Then           'leere Zellen ignorieren
      colCCodes.Add varCCode, varCCode      'trägt Code ein, falls noch nicht in Collection
    End If
  Next
    
  Set colCCodes = SortColl(colCCodes)       'sortieren, falls erwünscht
    
  For Each varCCode In colCCodes            'Ausgabe
    MsgBox varCCode
  Next
End Sub



Private Function SortColl(colRaw As Collection) As Collection
  '01-00 Sorts elements in a collection as text (a = A, 10 < 2, _ < 0)
  Dim i As Long, j As Long
  Dim varSwap1, varSwap2
  
  For i = 1 To colRaw.Count - 1
    For j = i + 1 To colRaw.Count
      If colRaw(i) > colRaw(j) Then
        varSwap1 = colRaw(i)
        varSwap2 = colRaw(j)
        colRaw.Add varSwap1, before:=j
        colRaw.Add varSwap2, before:=i
        colRaw.Remove i + 1
        colRaw.Remove j + 1
      End If
    Next
  Next
  Set SortColl = colRaw
  
End Function


Gruss
Hans T.


Bild


Betrifft: AW: Mit Collection
von: Martin
Geschrieben am: 16.10.2003 08:55:57

Vielen Dank Hans, das klappt sehr gut.

Gruss,
Martin


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Schleife/ Werte in Variablen speichern"