Arrays an andere Form übergeben
Also neuer Post.
Für andere:
Ich habe in einem Modul1 ganz viele Variablen als Public deklariert, damit andere Funktionen aus meinem Programm darauf zugreifen können.
Darunter auch eine Deklaration:
Public Erw_Bear_Opt_find_mark() As String
Public max_Erw_Bear_Opt_find_mark As Integer
An einer best. Stelle im Programm kann der Benutzer Textsequenzen eingeben, nach denen dann in einem anderen Text gesucht werden soll, und diese werden dann rot markiert. Da ich ja vorher nicht weis, nach wievielen Sequenzen der Benutzer suchen will
habe ich mir gedacht, dass ich die Var als Array gestalten könnte. Dann werden genau so viele Arrays angelegt, wie der Benutzr braucht.
Die Anzahl, wieviele Arrays der Benutzer angelegt hat, wird in max_Erw_Bear_Opt_find_mark gespeichert.
Wenn jetzt die Auswertung in dem Programm ablaufen soll, so sollte das Form dann mit einer For Schleife
die Inhalte der angelegten Arrays abrufen und die dann in die Suche einbauen.
z.B.
for a = 0 To max_Erw_Bear_Opt_find_mark
suche nach Erw_Bear_Opt_find_mark(a)
next a
Aber ich hab ein Problem.
In dem Form, wo der Benutzer die Arrays festlegt, wird das Array per ReDim Preserve Erw_Bear_Opt_find_mark(tmp_4) immer erweitert. Das Dim allerdings begrenzt den Gültigkeitsbereich. Und das ist das Problem.
Und nun frage ich euch, wie man das lösen könnte.
florengray
Für andere:
Ich habe in einem Modul1 ganz viele Variablen als Public deklariert, damit andere Funktionen aus meinem Programm darauf zugreifen können.
Darunter auch eine Deklaration:
Public Erw_Bear_Opt_find_mark() As String
Public max_Erw_Bear_Opt_find_mark As Integer
An einer best. Stelle im Programm kann der Benutzer Textsequenzen eingeben, nach denen dann in einem anderen Text gesucht werden soll, und diese werden dann rot markiert. Da ich ja vorher nicht weis, nach wievielen Sequenzen der Benutzer suchen will
habe ich mir gedacht, dass ich die Var als Array gestalten könnte. Dann werden genau so viele Arrays angelegt, wie der Benutzr braucht.
Die Anzahl, wieviele Arrays der Benutzer angelegt hat, wird in max_Erw_Bear_Opt_find_mark gespeichert.
Wenn jetzt die Auswertung in dem Programm ablaufen soll, so sollte das Form dann mit einer For Schleife
die Inhalte der angelegten Arrays abrufen und die dann in die Suche einbauen.
z.B.
for a = 0 To max_Erw_Bear_Opt_find_mark
suche nach Erw_Bear_Opt_find_mark(a)
next a
Aber ich hab ein Problem.
In dem Form, wo der Benutzer die Arrays festlegt, wird das Array per ReDim Preserve Erw_Bear_Opt_find_mark(tmp_4) immer erweitert. Das Dim allerdings begrenzt den Gültigkeitsbereich. Und das ist das Problem.
Und nun frage ich euch, wie man das lösen könnte.
florengray
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86911
Url: https://administrator.de/contentid/86911
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo florengray!
Auch wenn Du die von Dir verwendete VB-Version nicht genannt hast, wird sie sicherlich Split() bzw, wenn Du gesteigerten Wert darauf legen solltest, bereits beim Erfassen ein Array zu verwenden, Join() kennen - damit hast Du die Möglichkeit, alle Textsequenzen in einem einfachen String (mit passendem Trennzeichen) zusammenzufassen bzw daraus (wieder) ein Array zu machen ...
Zur Verdeutlichung: Beim Erfassen würde ich einfach die einzelnen Textsequenzen, zB durch "|" (oder ein anderes, ansonsten nicht vorkommendes Zeichen) getrennt, in einen gemeinsamen String packen, etwa:
und danach mit
das gewünschte Array daraus machen.
Übrigens: Das "Mitzählen" der Array-Elemente erspart Dir die Funktion UBound().
Grüße
bastla
Auch wenn Du die von Dir verwendete VB-Version nicht genannt hast, wird sie sicherlich Split() bzw, wenn Du gesteigerten Wert darauf legen solltest, bereits beim Erfassen ein Array zu verwenden, Join() kennen - damit hast Du die Möglichkeit, alle Textsequenzen in einem einfachen String (mit passendem Trennzeichen) zusammenzufassen bzw daraus (wieder) ein Array zu machen ...
Zur Verdeutlichung: Beim Erfassen würde ich einfach die einzelnen Textsequenzen, zB durch "|" (oder ein anderes, ansonsten nicht vorkommendes Zeichen) getrennt, in einen gemeinsamen String packen, etwa:
If Sammelstring <> "" Then
Sammelstring = Sammelstring & "|" & TextBox1.Text
Else
Sammelstring = TextBox1.Text
End If
Erw_Bear_Opt_find_mark = Split(Sammelstring, "|")
Übrigens: Das "Mitzählen" der Array-Elemente erspart Dir die Funktion UBound().
Grüße
bastla