Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Public Array dynamisch

Public Array dynamisch
Heiko
Hallo,
verutlich zum x-ten mal gepostet, aber ich kriegs nicht hin:
Wie und wo genau muss ich ein Array deklarieren, damit die Werte waehrend der Laufzeit des Programms erhalten beliben. Problem ist, das Array muss dynamisch sein.
Genauer:
Zu Beginn lese ich aus einer Binaerdatei XY Daten in 2 Arrays ein (XArr() und YArr()) Dabei wird auch die Dimension ermittelt, naemlich die Anzahl der Datenpunkte, die je nach Quelldatei unterschiedlich sein kann. Laenge des Arrays waere dann N oder so, also XArr(N) und YArr(N), was ich mir ReDim nachhole.
Diese beiden Arrays bzw deren Werte brauche ich ab sofort in allen anderen Prozeduren und will sie nicht jedesmal erneut erst aus der Tabelle einlesen muessen.
Ich hab die Arrays bereits im Allgemeinteil des Modules deklariert, das die Daten aus den Quelldateien holt. Die Dimensionierung kann allerdings erst in der Einleseprozedur stattfinden.
Wenn ich nun die Werte in anderen Prozeduren verwenden will, heisste es jedesmal XArr(N) bzw YArr(N) "leer".
Wo ist der Denkfehler?
Vielen Dank im Voraus, Heiko
AW: Public Array dynamisch
16.10.2011 22:35:45
Nepumuk
Hallo,

Ich hab die Arrays bereits im Allgemeinteil des Modules deklariert
In welchen Modul bzw. welche Art von Modul?
Gruß
Nepumuk
AW: Public Array dynamisch
17.10.2011 20:43:04
Heiko
Hi Nepumuk,
in dem Modul, das die Quelldaten einliest, ganz oben, ausserhalb der Prozeduren...
Es ist kein Klassenmodul oder eine UserForm, wenn Du das meinst...
Gruss, heiko
AW: Public Array dynamisch
16.10.2011 22:39:16
Daniel
HI
wenn die Dimensonierung der Arrays außerhalb der Prozeduren erfolgt, sollte es funktionieren:

Option Explicit
Public x() As Long
Sub test1()
ReDim x(2)
x(2) = 1
Call test2
End Sub
Sub test2()
Debug.Print x(2)
End Sub
Gruß Daniel
Anzeige
AW: Public Array dynamisch ohne call Anweisung
17.10.2011 20:37:10
Heiko
hi Daniel,
vielen Dank fuer die Antwort.
Mit der Call Anweisung klappt es schon.
Ich habe aber etliche verschiedene Prozeduren, die alle unterschiedliche Aufgaben mit den Daten ausfuehren. Daher kann ich beim Einlesen der Daten keine bestimmte Prozedur aufrufen.
Schritt eins ist Daten aus Quelldatei einlesen und im Array speichern. Waeherned des Einlesens wird auch erst klar, wie gross das Array sein wird.
Erst in Schritt2 entscheide ich mich, was ich mit den Daten anfangen will und rufe dann per Menue oder Button irgendeine Prozedur auf, die die Daten weiter verwendet.
Meine Frage ist: Stehen die Daten noch im Speicher und wenn ja, wo und wie greife ich aus verschiedenen Prozeduren darauf zu. Geht das ganze also auch ohne die Call Anweisung?
Gruesse, Heiko
Anzeige
AW: Public Array dynamisch ohne call Anweisung
17.10.2011 21:09:09
MichaV
Hallo,
geht auch ohne Call, siehe https://www.herber.de/bbs/user/77052.xls
Oder verstehe auch ich Dein Problem nicht?
Gruss- Micha
AW: Public Array dynamisch ohne call Anweisung
18.10.2011 02:45:07
Heiko
Hi Micha,
nee, schon richtig verstanden.
Das Beispiel funktioniert. Nur wenn ich genau dieses Schema bei mir anwende, klappt es nicht... Und ich komm nicht drauf, warum.
Ich kriege die Fehlermeldung: "Index ausserhalb des gueltigen Bereichs", wenn ich das Array nicht in der aufgerufenen Prozedur nochmal mit Redim dimensioniere und wenn ich das tue, ist das Array leer...
...
Anzeige
AW: Public Array dynamisch ohne call Anweisung
18.10.2011 09:50:36
Daniel
Hi
lad doch mal ne Beispieldatei hoch, damit klar wird was du machst.
Gruß, Daniel
AW: Public Array dynamisch ohne call Anweisung
18.10.2011 21:05:52
MichaV
Hei,
bevor Du die Beispielmappe hochlädst schau doch bitte mal ob Du nicht zufälligerweise eine End- Anweisung in Deiner ersten Prozedur stehen hast. Die setzt nämlich alle Variablen zurück.

Private Sub CommandButton1_Click()
ReDim feld(5)
End '
Gruss- Micha

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige