Ich hab folgendes Problem: die Arrays meines Programms sammeln laufend Daten, und wenn ich das Program beende ist natürlich nichts mehr in den Arrays gespeichert... kann man irgendwie die Daten dauerhaft in den Arrays belassen?
danke & mfg
Option Explicit
Public Sub ArrayToName()
Dim int_Array(1 To 82) As Integer, int_index As Integer
For int_index = 1 To 82
int_Array(int_index) = int_index
Next
ThisWorkbook.Names.Add Name:="MyName", RefersTo:=int_Array
ThisWorkbook.Names("MyName").Visible = False
End Sub
Public Sub NameToArray()
Dim str_text As String, int_Array(1 To 82) As Integer, int_index As Integer
str_text = ThisWorkbook.Names("MyName").Value
str_text = Mid$(str_text, 3, Len(str_text) - 3) & ","
Do
int_index = int_index + 1
int_Array(int_index) = Val(Left$(str_text, InStr(1, str_text, ",") - 1))
str_text = Mid$(str_text, InStr(1, str_text, ",") + 1)
Loop Until str_text = ""
End Sub
Um Arrayinhalte in Excel dauerhaft zu speichern, kannst Du die folgenden Schritte befolgen:
Array deklarieren: Zuerst musst Du das Array im VBA-Editor deklarieren. Öffne den VBA-Editor mit ALT + F11
und erstelle ein neues Modul.
Public Daten(1 To 2000, 1 To 2000) As Integer
Daten speichern: Bevor Du die Excel-Datei schließt, speichere die Inhalte des Arrays in einem Arbeitsblatt. Du kannst dies mit einer Schleife tun:
Dim i As Integer, j As Integer
For i = 1 To 2000
For j = 1 To 2000
Worksheets("Datenblatt").Cells(i, j).Value = Daten(i, j)
Next j
Next i
Daten laden: Wenn Du das Programm wieder öffnest, lade die Daten aus dem Arbeitsblatt zurück in das Array:
For i = 1 To 2000
For j = 1 To 2000
Daten(i, j) = Worksheets("Datenblatt").Cells(i, j).Value
Next j
Next i
Fehler beim Speichern: Wenn Du die Daten nicht speichern kannst, stelle sicher, dass das Arbeitsblatt, in das Du schreibst, existiert und nicht geschützt ist.
Daten werden nicht geladen: Überprüfe, ob die Excel-Datei korrekt geöffnet ist und ob die Zellen im Arbeitsblatt die erwarteten Werte enthalten.
Ausgeblendetes Blatt verwenden: Speichere die Array-Daten in einem ausgeblendeten Blatt. Auf diese Weise bleiben die Daten auch nach dem Schließen der Datei erhalten.
Namen speichern: Kleinere Arrays können auch als Namen in Excel gespeichert werden. Hier ist ein Beispiel:
ThisWorkbook.Names.Add Name:="MyName", RefersTo:=int_Array
Externe Datenbank: Eine weitere Möglichkeit ist, die Daten in einer externen Datenbank zu speichern, z.B. Access oder SQL Server.
Hier ist ein einfaches Beispiel, wie Du ein Array in Excel mit VBA speichern und laden kannst:
Sub SpeichernUndLaden()
' Deklaration des Arrays
Public Daten(1 To 10) As Integer
' Daten im Array speichern
Dim i As Integer
For i = 1 To 10
Daten(i) = i * 10
Next i
' Speichern in die Excel-Tabelle
For i = 1 To 10
Worksheets("Datenblatt").Cells(i, 1).Value = Daten(i)
Next i
' Laden der Daten zurück ins Array
For i = 1 To 10
Daten(i) = Worksheets("Datenblatt").Cells(i, 1).Value
Next i
End Sub
Effiziente Datenspeicherung: Überlege, ob Du Daten in einem Array oder in Tabellenform speichern möchtest, um die Effizienz zu verbessern.
Verwendung von Collections: Wenn die Datenstruktur komplex ist, kannst Du auch Collections oder Dictionaries verwenden, um die Daten flexibler zu speichern.
Datenvalidierung: Implementiere eine Datenvalidierung, bevor Du die Daten in das Array speicherst, um Fehler zu vermeiden.
1. Wie kann ich sicherstellen, dass meine Array-Daten nicht verloren gehen?
Speichere die Daten vor dem Schließen der Excel-Datei in einem Arbeitsblatt oder verwende ein ausgeblendetes Blatt.
2. Kann ich auch große Arrays speichern?
Ja, Du kannst große Arrays speichern, achte jedoch darauf, dass die Excel-Datei nicht zu groß wird, um die Leistung zu erhalten.
3. Was passiert, wenn ich Excel ohne Speichern schließe?
Alle nicht gespeicherten Daten im Arbeitsspeicher, einschließlich Arrays, gehen verloren. Stelle sicher, dass Du regelmäßig speicherst.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen