Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehrere Range.Value in Array

Mehrere Range.Value in Array
24.08.2017 16:41:36
_Domi_
Hallo zusammen,
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
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Range.Value in Array
24.08.2017 17:06:45
Michael
Hallo!
zB so:
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
LG
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte mehrerer Zellen in ein Array umwandeln


Schritt-für-Schritt-Anleitung

Um 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.

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineMappeName)", wähle "Einfügen" und dann "Modul".

  3. 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
  4. 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.


Häufige Fehler und Lösungen

  • 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.


Alternative Methoden

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.


Praktische Beispiele

Hier sind einige praktische Anwendungen für das Arbeiten mit Range.Value in einem Array:

  1. Summe der Werte:

    Dim summe As Double
    summe = Application.Sum(a)
    Debug.Print "Summe: " & summe
  2. 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

Tipps für Profis

  • Verwende Option Explicit: Das hilft dir, Fehler bei nicht deklarierten Variablen zu vermeiden.
  • Nutze Array-Methoden: Methoden wie UBound und LBound sind nützlich, um die Grenzen deines Arrays zu bestimmen.
  • Vermeide Schleifen, wenn möglich: Benutze Application.Transpose oder WorksheetFunction für schnellere Berechnungen.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige