ich habe folgende Frage:
wie kann ich die Values mehrerer Zellen in ein Array packen?
Folgende Zellen würden benötigt werden:
P16, R16, P20, R20, P24, R24, P28, R28, P32, R32
Danke und Gruß
Domi
Sub a()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets(1)
Dim a(), r As Range, c As Range, i&
With ws
Set r = .Range("P16,R16,P20,R20,P24,R24,P28,R28,P32,R32")
ReDim a(1 To r.Cells.Count)
For Each c In r
i = i + 1: a(i) = c.Value
Next c
'weiter mit dem Array...
End With
Set ws = Nothing: Set r = Nothing: Set c = Nothing: Erase a
End Sub
LGUm die Range.Value mehrerer Zellen in ein Array zu packen, kannst du folgende Schritte befolgen. Dieses Beispiel verwendet Excel VBA und setzt voraus, dass du die Zellen P16, R16, P20, R20, P24, R24, P28, R28, P32 und R32 in einem Arbeitsblatt hast.
Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineMappeName)", wähle "Einfügen" und dann "Modul".
Füge den folgenden Code ein:
Sub WerteInArray()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets(1)
Dim a() As Variant, r As Range, c As Range, i As Long
With ws
Set r = .Range("P16,R16,P20,R20,P24,R24,P28,R28,P32,R32")
ReDim a(1 To r.Cells.Count)
i = 0
For Each c In r
i = i + 1
a(i) = c.Value
Next c
End With
' Hier kannst du weiter mit dem Array arbeiten
' Beispiel: Debug.Print a(1) gibt den Wert der ersten Zelle aus
Set ws = Nothing: Set r = Nothing: Set c = Nothing: Erase a
End Sub
Führe das Makro aus: Drücke F5, um das Makro auszuführen und die Werte in das Array zu laden.
Jetzt hast du die Werte der angegebenen Zellen erfolgreich in ein Array umgewandelt.
Fehler: "Typ nicht definiert"
Stelle sicher, dass du Dim a() As Variant verwendest, um Typkonflikte zu vermeiden.
Fehler: "Bereich nicht gefunden"
Überprüfe, ob die angegebenen Zellen im Arbeitsblatt vorhanden sind und korrekt geschrieben wurden.
Fehler: "Arrayindex außerhalb des Bereichs"
Achte darauf, dass der Index des Arrays korrekt initialisiert und verwendet wird.
Eine andere Möglichkeit, Werte mehrerer Zellen in ein Array zu packen, ist die Verwendung von Application.Transpose. Hier ein Beispiel:
Sub AlternativeMethode()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets(1)
Dim a As Variant
a = Application.Transpose(ws.Range("P16,R16,P20,R20,P24,R24,P28,R28,P32,R32").Value)
' Jetzt kannst du mit dem Array `a` weiterarbeiten
End Sub
Diese Methode ist besonders nützlich, wenn du die Werte direkt in ein Array importieren möchtest, ohne eine Schleife zu verwenden.
Hier sind einige praktische Anwendungen für das Arbeiten mit Range.Value in einem Array:
Summe der Werte:
Dim summe As Double
summe = Application.Sum(a)
Debug.Print "Summe: " & summe
Filtern von Werten:
Dim gefilterteWerte() As Variant
Dim j As Long
j = 0
For i = LBound(a) To UBound(a)
If a(i) > 10 Then
j = j + 1
ReDim Preserve gefilterteWerte(1 To j)
gefilterteWerte(j) = a(i)
End If
Next i
Option Explicit: Das hilft dir, Fehler bei nicht deklarierten Variablen zu vermeiden.Array-Methoden: Methoden wie UBound und LBound sind nützlich, um die Grenzen deines Arrays zu bestimmen.Application.Transpose oder WorksheetFunction für schnellere Berechnungen.1. Wie kann ich Werte aus einem Array zurück in einen Bereich schreiben?
Verwende dafür eine Schleife oder die Application.Transpose-Methode, um die Werte zurück in den Range zu speichern.
2. Kann ich auch mehrdimensionale Arrays verwenden?
Ja, du kannst mehrdimensionale Arrays in VBA verwenden. Du musst jedoch sicherstellen, dass du die Dimensionen korrekt deklarierst.