1.9k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich lese Daten in eine UserForm ein und "speichere" diese gleichzeitig in einem Array.


Ich wollte diese Daten dann im anschließenden Code weiter verwenden, was allerdings nicht klappt. ich habe es mit "Public ArrayName" versucht, was aber nicht funktioniert. Wir kann ich auf dieses Array zugreifen? Danke für euren Tipp! Gruß A.

Set frm = UserForm1
With frm
arrSpeicher(0) = .ListBox2.Value
arrSpeicher(1) = .TextBox2.Value
arrSpeicher(2) = .TextBox3.Value
.................

12 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi Andreas ^^

einzufuegen in ein allgemeines modul

gruss nighty

anzupassen waere
die Definierung
variant/string/integer/Long/double

die Dimensionierung,zur zeit 0 to 2 bzw 3 felder

Global arrSpeicher(2) As Variant
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hi,

habe das auch schon probiert..
Option Explicit
Global arrSpeicher() As Variant
Sub NeuAufnahme()

UserForm1.Show

MTG.Activate
.......


Wenn ich dann das Sheets MTG aktiviere komme ich nicht mehr an das Array...?
Gruß A.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi Andreas ^^

ueberpruefe die makro Positionen im projektexplorer
globale Anweisungen wuerde ich in einem seperaten modul angeben

gruss nighty
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,

habe alles probiert... erhalte bei der Deklaration als Global oder Public immer Fehler "Erwartet: Variable". Offenbar geht keine Deklaration von Array.
Könnte es eine andere Möglichkeit geben, wie ich Daten, die ich über eine UserForm eingebe und in einem Array ablege später im Modul wieder nutzen kann?
Gruß A.
0 Punkte
Beantwortet von
Hallo Andreas,

Nighty hat schon Recht. Du solltest die
Array-Variable mit Public ArrSpeicher() as Variant in einem Standardmodul hinterlegen. Dann kannst du von allen Modulen aus darauf zugreifen. Die Redimensionierung kannst du dann wie gewohnt innerhalb deines laufenden Codes (z.B. im Userform) machen.

Gruß Mr. K.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,

wie meinst du/ihr das mit dem Standardmodul...?
Sub Allgemein()

Public arrSpeicher() As Variant

End Sub


... das wird doch nicht reichen?
Gruß A.
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Andreas,

ein Standardmodul erstellst du, indem du im VBE auf "Einfügen" klickst und dann die Option "Modul" wählst.

Gruß
Rainer
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Rainer,

genau das habe ich gemacht (s.o.) und erhalte den Fehler: Ungültiges Attribut.

Gruß A.
0 Punkte
Beantwortet von
Hallo Andreas,

lass die Sub weg. einfach nur Public arrSpeicher() As Variant
auf Modulebene (also vor der ersten Sub)

Mr. K.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,

danke für eure Tipps und vor allem eure Geduld! Aber ich komme nicht weiter. Ich habe alles so gemacht wie vorgeschlagen. Mein Modul5 heißt jetzt schlicht
public arrSpeicher() as variant.
Wußte gar nicht, dass das so geht...
Aber trotzdem verliere ich den Inhalt des Array (z.B."Max") sobald ich die UserForm verlasse. Im Überwachungsausdruck kann ich das immer noch verfolgen (obwohl hier der Kontext auf CommandButton1_Click stehen muss, sonst wird der Inhalt auch nicht angezeigt).

Watch : : arrSpeicher(2) : "Max" : Variant/String : UserForm1.CommandButton1_Click

Wenn ich allerdings die UserForm beende, verschwindet das Array wieder und es steht im Überwachungsausdruck nur noch:

Watch : : arrSpeicher(2) : <Außerhalb des Kontexts> : Variant/Empty : UserForm1.CommandButton1_Click
...