Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen in Array einlesen

Zeilen in Array einlesen
06.06.2005 10:32:22
Rudi
Hallo zusammen
Ich habe eine ganz einfache Aufgabenstellung, für die ich aber in der Hilfe nichts gefunden habe.
Das Problem ist, dass ich nicht von Anfang an weiss, wieviele Elemente mein Datenfeld besitzt - ich kann also die folgende Logik NICHT anwenden:

Sub SheetsArray()
Dim x As Integer, n As Integer
Dim df() As String
x = ActiveWindow.SelectedSheets.Count
ReDim Preserve df(1 To x)
For n = 1 To x
df(n) = ActiveWindow.SelectedSheets.Item(n).Name
Next
End Sub

Ich möchte die Zwischensummen-Zeilen eines Bereichs in ein Datenfeld einlesen, damit ich nachher eine Gesamtsumme errechnen kann. Nun kann natürlich - wie erwähnt - die Gesamtsumme einmal aus den Zeilen 5, 15, 35 und 49 bestehen, ein anderes Mal aus den Zeilen 6, 20 und 27 etc.
Wie schaffe ich es, das Datenfeld richtig zu deklarieren und zu managen, damit keine Werte verloren gehen?
Besten Dank für eure Hilfe!
Gruss Rudi
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen in Array einlesen
06.06.2005 10:48:18
MichaV
Hi Rudi,
ich erweitere das Array dann immer bei Bedarf nach folgendem Prinzip:

dim DeinArray()
redim DeinArray(0) 'initialisieren, sonst gibts unten einen Fehler
if Zwischensumme_Hinzufügen then
redim preserve DeinArray(ubound(DeinArray)+1)
DeinArray(ubound(DeinArray))=DieZwischensumme
end if

Dabei musst Du beachten, daß DeinArray(0) immer leer bleibt. Beim Auslesen also
For i=1 to ubound(DeinArray) verwenden.
Zum Löschen nimmst Du dann erase(DeinArray).
Gruss- Micha
PS: Bin gespannt auf "sauberere" Lösungen.
PPS: Rückmeldung wäre nett.
Anzeige
AW: Zeilen in Array einlesen
06.06.2005 13:32:59
Rudi
Hallo Micha
Besten Dank für deinen Vorschlag! Es funktioniert ohne Probleme.
Zur Zeit kenne ich noch keine elegantere Lösung, ich mach' mich aber weiter schlau, und werde dich gerne bei "besseren" Lösungen auf dem Laufenden halten.
Gruss
Rudi
Fein! Danke für Rückmeldung oT
06.06.2005 14:33:05
MichaV
Gruss- Micha
;
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Array einlesen und verwalten


Schritt-für-Schritt-Anleitung

Um Zeilen in ein Array einzulesen und dynamisch zu verwalten, kannst du den folgenden VBA-Code verwenden. Dieser Ansatz erlaubt es dir, das Array nach Bedarf zu erweitern und gleichzeitig sicherzustellen, dass keine Werte verloren gehen.

Sub ZeilenInArrayEinlesen()
    Dim DeinArray() As Double
    Dim i As Long
    Dim Zwischensumme_Hinzufügen As Boolean
    Dim DieZwischensumme As Double

    ReDim DeinArray(0) ' Initialisieren des Arrays

    ' Beispiel für das Hinzufügen von Zwischensummen
    For i = 1 To 10 ' Angenommen, wir haben 10 Zeilen
        ' Hier kannst du die Logik einfügen, um zu entscheiden, ob eine Zwischensumme hinzugefügt werden soll
        Zwischensumme_Hinzufügen = (i Mod 5 = 0) ' Beispiel: Jede 5. Zeile wird als Zwischensumme betrachtet
        If Zwischensumme_Hinzufügen Then
            DieZwischensumme = i * 10 ' Beispiel für die Berechnung der Zwischensumme
            ReDim Preserve DeinArray(UBound(DeinArray) + 1)
            DeinArray(UBound(DeinArray)) = DieZwischensumme
        End If
    Next i

    ' Hier kannst du die Gesamtsumme berechnen
    Dim Gesamtsumme As Double
    For i = 1 To UBound(DeinArray)
        Gesamtsumme = Gesamtsumme + DeinArray(i)
    Next i

    MsgBox "Die Gesamtsumme beträgt: " & Gesamtsumme
End Sub

Dieser Code initialisiert ein dynamisches Array und fügt bei Bedarf Zwischensummen hinzu. Das Konzept von ReDim Preserve wird genutzt, um das Array zu erweitern, ohne die vorhandenen Werte zu verlieren.


Häufige Fehler und Lösungen

  1. Fehler: "Subscript out of range"

    • Lösung: Stelle sicher, dass du das Array mit ReDim initialisiert hast, bevor du darauf zugreifst. Vergiss nicht, DeinArray(0) leer zu lassen.
  2. Fehler: Wertverlust beim Hinzufügen

    • Lösung: Überprüfe, ob du ReDim Preserve korrekt verwendest, um beim Erweitern des Arrays die Werte zu behalten.

Alternative Methoden

Eine alternative Methode zur Verwaltung von Arrays in Excel VBA ist die Verwendung von Collections. Hier ein Beispiel:

Sub ZeilenInCollectionEinlesen()
    Dim MeineCollection As Collection
    Set MeineCollection = New Collection
    Dim i As Long

    ' Hinzufügen von Werten zur Collection
    For i = 1 To 10
        If i Mod 5 = 0 Then
            MeineCollection.Add i * 10 ' Beispiel für Zwischensummen
        End If
    Next i

    ' Gesamtsumme berechnen
    Dim Gesamtsumme As Double
    For Each Wert In MeineCollection
        Gesamtsumme = Gesamtsumme + Wert
    Next Wert

    MsgBox "Die Gesamtsumme beträgt: " & Gesamtsumme
End Sub

Hierbei ist zu beachten, dass Collections flexibler sind, jedoch die Indizes nicht nullbasiert sind.


Praktische Beispiele

Angenommen, du hast folgende Daten in einem Excel-Blatt:

Zeile Wert
1 10
2 20
3 30
4 40
5 50

Du kannst die Zwischensummen aus diesen Werten in ein Array einlesen und anschließend die Gesamtsumme berechnen. Der oben genannte Code kann direkt auf diese Daten angewendet werden.


Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Überlege, ob die Verwendung von Dictionary statt Arrays dir mehr Flexibilität und Leistung bieten kann, insbesondere wenn du Schlüssel-Wert-Paare verwalten musst.

FAQ: Häufige Fragen

1. Wie kann ich ein Array zurücksetzen? Du kannst ein Array mit Erase DeinArray zurücksetzen, um seinen Speicher freizugeben.

2. Was ist der Unterschied zwischen ReDim und ReDim Preserve? ReDim erstellt ein neues Array und löscht alle vorherigen Werte, während ReDim Preserve die vorhandenen Werte beibehält, wenn du die Größe des Arrays änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige