Userform

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm TextBox MsgBox
Bild

Betrifft: Userform
von: jasmin
Geschrieben am: 27.11.2003 10:30:30

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
Bild


Betrifft: AW: Userform
von: Gabor
Geschrieben am: 27.11.2003 10:58:24

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


Bild


Betrifft: AW: Userform
von: Jasmin
Geschrieben am: 27.11.2003 11:19:06

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


Bild


Betrifft: AW: Userform
von: Gabor
Geschrieben am: 27.11.2003 11:47:47

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


Bild


Betrifft: AW: Userform
von: Jasmin
Geschrieben am: 27.11.2003 12:05:11

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


Bild


Betrifft: AW: Userform
von: GerdW
Geschrieben am: 27.11.2003 13:20:58

Variablen sind nur dann public, wenn sie in einem Standardmodul
deklariert werden.

Gerd


Bild


Betrifft: AW: Userform
von: Jasmin
Geschrieben am: 27.11.2003 13:30:38

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


Bild


Betrifft: AW: Userform
von: Nepumuk
Geschrieben am: 27.11.2003 18:52:16

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


Bild


Betrifft: AW: Userform u.a. zu Gerd
von: Gabor
Geschrieben am: 27.11.2003 20:50:56

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


Bild


Betrifft: AW: Userform u.a. zu Gerd
von: Jasmin
Geschrieben am: 29.11.2003 16:03:53

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 :(


Bild

Beiträge aus den Excel-Beispielen zum Thema " Userform"