VBA: in Excel verteilten Zellbereich abfragen

Hallo Forum,

Ich habe in einem sheet einen Zellbereich als Range definiert:

Set arrSpieler = Worksheets("Admin").Range("B5:B19,E5:E19,H5:H19")

Den Bereich möchte ich nun, je nach ausgefüllten Zellen, in ein Array schreiben mit dieser sub:

Sub Teilnehmer()
 Dim Zelle As Object
 Dim i As Integer

 For i = 1 To vAnzahl
 ReDim Preserve arrTeilnehmer(i)
 arrTeilnehmer(i) = arrSpieler(i).Value
 Next

End Sub

Funktioniert aber leider nur für die erste Spalte, alle weiteren ignoriert er… Lasse ich mir die Anzahl der Einträge des Range-Objekts ausgeben mit count, so gibt er mir korrekt 45 aus.

Hier mal ein Bild, was ich überhaupt vorhabe: Der grüne Bereich der Spielernahmen ist der Bereich, aus dem ich die Werte holen möchte.
(also Range(„B5:B19,E5:E19,H5:H19“) )
http://s7.directupload.net/images/091125/wy2gcner.jpg

Wie muss ich das anstellen, dass in dem Range-Objekt (oder einer Variablen) immer nur die Zellen drin sind, die ich in meinem Range habe???

Hoffe, mir kann jemand weiterhelfen…

lg micha

Wie muss ich das anstellen, dass in dem Range-Objekt (oder
einer Variablen) immer nur die Zellen drin sind, die ich in
meinem Range habe???

Hallo Michael,

vielleicht so:

Sub Teilnehmer()
Dim rngSpieler As Range, Z As Range, Anz As Integer, arrTeilnehmer(), N As Integer
Set rngSpieler = Worksheets(1).Range("B5:B19,E5:E19,H5:H19")
For Each Z In rngSpieler
 If Z.Value "" Then
 Anz = Anz + 1
 ReDim Preserve arrTeilnehmer(Anz)
 arrTeilnehmer(Anz) = Z.Value
 End If
Next Z
For N = 1 To Anz
 MsgBox arrTeilnehmer(N)
Next N
End Sub

Gruß
Reinhard

Hallöchen Reinhard,

Danke für den Tipp, funktioniert einwandfrei!!!

Ich hab nur noch mal ein If eingebaut, weil er mir ja nur die Zellen liefern soll, die auch ausgefüllt wurden.

For Each Z In rngSpieler
 If Anz "" Then
 Anz = Anz + 1
 ReDim Preserve arrTeilnehmer(Anz)
 arrTeilnehmer(Anz) = Z.Value
 End If
 Else
 Exit For
 End If
Next Z

lg micha