Einige Fragen zu Makro mit Arrays
14.10.2022 12:14:12
Günther
bitte um Hilfe bei der Erstellung einer Function.
Als Argument soll ein Range und eine Zahl n übergeben werden.
Rückgabe soll ein 1-dim. Array sein, das selbst n Stück 1-dim. Arrays enthält. Diese sollen die Zellenwerte der ersten n Spalten, beginnend von der ersten Zelle des Range-Bereichs beinhalten.
Egal, wie groß der übergebene Range ist, Ausgangszelle ist die erste Zelle dieses Ranges.
Hier nun mein Versuch:
Das Makro Test bereitet alles vor, ruft dann die gesuchte Funktion auf und zeigt dann das Ergebnis.
Sub Test()
Dim Ergebnis
Range("B2") = 25
Range("B3") = 11
Range("C2") = 7
Range("D2") = 10
Range("D3") = 15
Range("D4") = 88
Ergebnis = SpaltenArrays(Range("B2"), 3)
Debug.Print Join(Ergebnis(2), ", ")
Debug.Print Join(Ergebnis(3), ", ")
End Sub
Function SpaltenArrays(Ecke As Range, Abschnitte As Long)
Dim ZelleA As Range
Dim ZelleB As Range
Dim Sammlung
Dim SpaltenNr As Long
ReDim Sammlung(1 To Abschnitte)
For SpaltenNr = 1 To Abschnitte
Set ZelleA = Ecke(1, SpaltenNr)
Set ZelleB = ZelleA.End(xlDown)
If ZelleB.Row = Rows.Count Then
Sammlung(SpaltenNr) = Array(ZelleA.Value)
Else
Sammlung(SpaltenNr) = WorksheetFunction.Transpose(Range(ZelleA, ZelleB).Value)
End If
Next SpaltenNr
SpaltenArrays = Sammlung
End Function
Meine Frage nun: Geht das nicht auch einfacher? Insbesondere der Fall, dass eine Spalte nur aus einem Wert besteht (in diesem Beispiel die zweite), verlangt nach einer If-Abfrage. Aber vielleicht geht das anders besser.
Und ein zweites Problem: Das Array, das aus einem Range gebildet wird, beginnt nicht mit 0 als Index, sondern mit 1. Kann man das ändern? Es soll mit Null beginnen.
Leider konnte ich keine Seiten mit guten Makros finden, damit ich mir was zusammenstellen kann.
LG, Günther
Anzeige