AW: Markierte Zellen als Filter
10.01.2012 23:15:25
fcs
Hallo Günther,
wenn du die Werte eines Zellbereichs (mehrere Zellen) an eine Variable übergeben willst, dann darfst du die Variable nicht als Feld dimesionieren, sondern nur als "einfache" Variantvariable.
Allerdings gibt es hier ein Problem, wenn der Zellebereich nur eine Zelle beinhalte, dann ist die Variable kein Array, sondern ein einfacher Wert.
Deswegen ist es ggf. sicherer, die Daten immer in eine ensprechend dimensionierte als Feld deklarierte Variable einzulesen.
Gruß
Franz
Sub Test()
'für eine Mehrfachselektion
Dim FilterArray() As Variant, rngCell As Range, objArray, intI As Integer
Set rngCell = Selection
intI = 0
For Each objArray In rngCell.Cells
ReDim Preserve FilterArray(0 To intI)
FilterArray(intI) = objArray.Value
intI = intI + 1
Next
'Testanzeige
For intI = LBound(FilterArray) To UBound(FilterArray)
MsgBox FilterArray(intI)
Next
End Sub
Sub Test1()
'Funktioniert nur wenn die Zellselektion 2 oder mehr Zellen beinhaltet.
Dim FilterArray As Variant, rngCell As Range, intI As Integer
Set rngCell = Selection
If rngCell.Rows.Count = 1 Then
'Selektion in einer Zeile
FilterArray = Application.Transpose(rngCell)
Else
'Selektion in Spalte(n)
FilterArray = rngCell
End If
'Testanzeige
For intI = LBound(FilterArray) To UBound(FilterArray)
MsgBox FilterArray(intI, 1)
Next
End Sub