Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
344to348
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
344to348
344to348
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Userform

Userform
27.11.2003 10:30:30
jasmin
Hallo liebe VBA Freunde,

ich habe es eine Funktion, die in einem ausgelagertem Modul liegt.
Diese wird von verschiedenen Userformen genutzt ..

Module1.Suchen(MaskenName) < so erfolgt der Aufruf


Function Suchen(MaskenName as Userform)
MaskenName.txtFeld1.Text = ""
End Function


So funktioniert es auch ganz gut.

Allerdings habe ich 2 kleine Probleme.

1. In den jeweiligen Userformen sind bestimmte Variablen asl Public deklariert. Allerdings kann ich mit MaskenName.Variable nicht aus dem Modul heraus drauf zugreifen !?

2. Gibt es eine Möglichkeit, statt im Funktionsaufruf den Maskennamen explizit zu nennen, irgendetwas wie Me.Name oder so etwas zu verwenden ?

Gaaanz dollen Lieben Dank schon im voraus !!

Eure Jasmin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform
27.11.2003 10:58:24
Gabor
Hallo Jasmin,

1. Geht bei mir Problemlos z.b.

Sub Test()
MsgBox UserForm1.Hallo, vbOKOnly
End Sub

'Hallo ist String und wird beim laden des UF mit Hallo="Hallo" initialisiert

Allerdings ergibt dieses Vorgehen keinen Sinn, da die UF erst geladen wird und beim Unload die Werte eh weg sind. Wofür brauchst Du das ? Definiere die Programmweiten Variablen als Public in einem Modul und weise ihnen die Werte in der UF zu.
Das gleiche gilt für deine Suchen-Funktion (erspart immer Module1. zu schreiben)

2. Nein, da Me.Name noch gar nicht existiert. Durch Übergabe der UF als Parameter, wird diese ja erst initialisiert.

Allersdings verschleiert sich mir noch der Blick nach dem Sinn deiner Suchenfunktion.

Gruß

Gabor
Anzeige
AW: Userform
27.11.2003 11:19:06
Jasmin
Hi Gabor,

vielen Dank schon mal.

Die Suchfunktion war lediglich ein Beispiel. Hier mal ein Auszug der Funktion:

Sub AccessSpeichern(strMaskenName As UserForm)

Set db = OpenDatabase("test.mdb")
Set rs = db.OpenRecordset("Tabelle1")

With rs
.MoveFirst
Do
If !Datum = strMaskenName.txtDatum.Text Then
.Edit
!Anrede = strMaskenName.Anrede
db.Close
Exit Sub
End If
.MoveNext
Loop Until .EOF = True

db.Close
Exit Sub

.. nur das geht halt nicht mit der "Anrede".

Die Variablen im Modul als Public zu deklarieren bringt leider auch nix, das das Modul ja erst aufgerufen wird, wenn ein Button "Speichern" betätigt wird.

aus der Userform heraus rufe ich dann die Funktion im Modul so auf:

Call Modul1.AccessSpeichern(frmEingabe)

Mir wäre allerdings lieber, wenn es so ginge:

Call Modul1.AccessSpeichern(Me.Name) 'Der MaskenName ist ja dann schon bekannt, da diese schon Initialisiert wurde.

Hast Du noch eine Idee zu meinem Problem ?

Lieben Gruß, Jasmin
Anzeige
AW: Userform
27.11.2003 11:47:47
Gabor
Rehi Jasmin,

Wo liegt den dieser SpeicherButton ? Was ist Anrede für ein Typ und wie Deklariert ?

Du kannst ein UF auch so ansprechen :UserForms(0).TextBox1.Value

Allerdings geht keine Refenzierung über den Namen, da die Userformsauflistung nur Zahlen unterstützt (Anzahl der geladenen UFs -1 )

Gruß

Gabor
AW: Userform
27.11.2003 12:05:11
Jasmin
Hi Gabor,

der SpeicherButton liegt in einer Userform.

UserForms(0).TextBox1.Value bzw. so wie ichs gemacht hab mit dem Namen geht ja auch .. Das Ansprechen bzw. Auslesen von Feldern geht ja, aber nicht das Auslesen von Variablen in der Userform !?

Die Anrede ist als Public String in der Userform deklariert.

Hiiillffee ;-) Brauch doch nur die Variable in dem Modul ..

ps: Theoretisch würde es ja gehen mit frmEingabe.Variable .. aber da das Modul ja nicht weiss, aus welcher Maske er es auslesen muss bringt das ja nix.

Und wie gesagt: strMaskenName.Variable geht net :-(

Jasmin
Anzeige
AW: Userform
27.11.2003 13:20:58
GerdW
Variablen sind nur dann public, wenn sie in einem Standardmodul
deklariert werden.

Gerd
AW: Userform
27.11.2003 13:30:38
Jasmin
Hi,

ja das weiss ich, es würde ja mit frmEingabe.Variable gehen ..

Ich denke, es liegt daran, das strMaskenName als Userform deklariert ist.
Gibt es da keine Möglichkeit ?

Lieben Gruß, Jasmin
AW: Userform
27.11.2003 18:52:16
Nepumuk
Hallo Jasmin,
nochmal von vorne. Du deklarierst eine Variable in der Userform. Diese Variable hat einen bestimmten Wert, den du in der Funktion an ein Recordset übergeben willst????
Gruß
Nepumuk
AW: Userform u.a. zu Gerd
27.11.2003 20:50:56
Gabor
Hi Jasmin,

wie in meiner ersten Mail beschrieben geht bei mir der Zugriff problemlos auf die Variable.

Zum Thread von Gerd sei noch zu sagen, das Public nicht gleich Public ist. Public in einer Userform bewirkt ja eben, das man von aussen auf die Variable zugreifen kann.

Wenn es möglich ist, schick mir doch einfach mal die Arbeitsmappe.

Gruß

Gabor
Anzeige
AW: Userform u.a. zu Gerd
29.11.2003 16:03:53
Jasmin
Hi Gabor,

naja, es geht ja wie gesagt auch, wenn ich aus der Funktion Userform1.Variable das ganze aufrufe. Aber halt nicht, wenn ich Userform1 variabel haben möchte, also mit dem übergebenen Wert > strFormName.Variable ..

.. ich bin echt am verzweifeln :(

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige