Discussion:
Formularname in VBA Funktion ermitteln
(zu alt für eine Antwort)
stephan sochor
2006-04-28 08:40:03 UTC
Permalink
Hallo,

Ich habe in einer VBA Function folgenden Code, um den Namen des gerade
aktuellen Formulars zu bekommen:

Dim fn As String
fn = Application.CurrentObjectName

Dieser Code steht in einer Funktion, die durch das Ereignis „Beim Öffnen“
des Formulars aufgerufen wird. Bisher hat dieser Code immer funktioniert,
wenn ich jedoch das Formular über ein Makro aufrufe, steht in fn der Name des
Makros und nicht der des Formulars.

Me!Name kann ich nicht verwenden, da die Funktion nicht in dem selben Modul
wie das Formular steht (Die Funktion soll für alle Formulare meines Projekts
funktionieren).

Gibt es eine andere Möglichkeit, den Namen des Formulars zu bekommen, die
immer funktioniert?

Gruß Stephan
Gunter Avenius
2006-04-28 08:46:51 UTC
Permalink
Hallo stephan,
Post by stephan sochor
Ich habe in einer VBA Function folgenden Code, um den Namen des
Dim fn As String
fn = Application.CurrentObjectName
Dieser Code steht in einer Funktion, die durch das Ereignis „Beim
Öffnen“ des Formulars aufgerufen wird. Bisher hat dieser Code immer
funktioniert, wenn ich jedoch das Formular über ein Makro aufrufe,
steht in fn der Name des Makros und nicht der des Formulars.
Me!Name kann ich nicht verwenden, da die Funktion nicht in dem
selben Modul wie das Formular steht (Die Funktion soll für alle
Formulare meines Projekts funktionieren).
Gibt es eine andere Möglichkeit, den Namen des Formulars zu
bekommen, die immer funktioniert?
screen.ActiveForm.Name
--
Gruß
Gunter
_________________________________________________
Access - FAQ: http://www.donkarl.com
home: http://www.avenius.com
stephan sochor
2006-04-28 09:23:02 UTC
Permalink
Post by Gunter Avenius
screen.ActiveForm.Name
Dann bekomme ich folgenden Fehler:

"Laufzeitfehler 2475

Sie haben einen Ausdruck eingegeben, für den es erforderlich ist, dass das
aktive Fenster ein Formular ist."

Möglicherweise funktioniert screen.ActiveForm.Name noch nicht in einer
Funktion, die durch das Ereignis "Beim Öffnen" ausgelöst wird, da das
Formular zu diesem Zeitpunkt nocht nicht aktiv ist?

Gibt es einen anderen Weg oder kann man hier etwas ändern, so dass es
trotzdem geht?

Gruß Stephan
Gunter Avenius
2006-04-28 09:30:29 UTC
Permalink
Hallo stephan,
Post by stephan sochor
Post by Gunter Avenius
screen.ActiveForm.Name
"Laufzeitfehler 2475
Sie haben einen Ausdruck eingegeben, für den es erforderlich ist,
dass das aktive Fenster ein Formular ist."
Möglicherweise funktioniert screen.ActiveForm.Name noch nicht in
einer Funktion, die durch das Ereignis "Beim Öffnen" ausgelöst
wird, da das Formular zu diesem Zeitpunkt nocht nicht aktiv ist?
Gibt es einen anderen Weg oder kann man hier etwas ändern, so dass
es trotzdem geht?
übergebe Deiner Funktion doch einfach den Formularnamen.

DeineFunction (me.name)
--
Gruß
Gunter
_________________________________________________
Access - FAQ: http://www.donkarl.com
home: http://www.avenius.com
stephan sochor
2006-04-28 10:03:02 UTC
Permalink
Post by Gunter Avenius
DeineFunction (me.name)
Das funktioniert deshalb nicht, weil das Formular manchmal auch als
Unterformular eingestetzt wird. Auch wenn das Formular als Unterformular
eingesetzt wird, brauche ich den Namen des Hauptformulars.

Gruß Stephan
Gunter Avenius
2006-04-28 10:26:48 UTC
Permalink
Hallo stephan sochor,
Post by stephan sochor
Post by Gunter Avenius
DeineFunction (me.name)
Das funktioniert deshalb nicht, weil das Formular manchmal auch als
Unterformular eingestetzt wird. Auch wenn das Formular als
Unterformular eingesetzt wird, brauche ich den Namen des
Hauptformulars.
Dann fang den Fehler ab und greife mit forms(strFormname).Parent in
"DeinerFunction" auf das Hauptformular zu.
--
Gruß
Gunter
_________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com
Peter Doering
2006-04-28 09:57:05 UTC
Permalink
Hallo,
Post by stephan sochor
Post by Gunter Avenius
screen.ActiveForm.Name
"Laufzeitfehler 2475
Sie haben einen Ausdruck eingegeben, für den es erforderlich ist, dass das
aktive Fenster ein Formular ist."
Möglicherweise funktioniert screen.ActiveForm.Name noch nicht in einer
Funktion, die durch das Ereignis "Beim Öffnen" ausgelöst wird, da das
Formular zu diesem Zeitpunkt nocht nicht aktiv ist?
Nein, funktioniert auch in Form_Open. Kann es sein, dass du versucht hast,
die Funktion schrittweise auszufuehren? Dann waere naemlich das VBE-Fenster
das ActiveForm und der Fehler erklaerbar.
Post by stephan sochor
Gibt es einen anderen Weg oder kann man hier etwas ändern, so dass es
trotzdem geht?
Siehe Gunter's Antwort.

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Henry Habermacher [MVP Access]
2006-04-28 10:38:59 UTC
Permalink
Hallo Stephan
Post by stephan sochor
Post by Gunter Avenius
screen.ActiveForm.Name
"Laufzeitfehler 2475
Sie haben einen Ausdruck eingegeben, für den es erforderlich ist,
dass das aktive Fenster ein Formular ist."
Möglicherweise funktioniert screen.ActiveForm.Name noch nicht in einer
Funktion, die durch das Ereignis "Beim Öffnen" ausgelöst wird, da das
Formular zu diesem Zeitpunkt nocht nicht aktiv ist?
Du darfst das Screen Object nicht im Step-By-Step Modus auswerten. Auch im
Debug Fenster geht das nicht, da ist nämlich nicht das Formular das aktive
Formular, sondern VBA.

Mach' mal folgendes:

set frm = screen.activeform.name
stop
debug.print frm.name

Nun kannst Du ab dem Stop weiterdebuggen.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Peter Doering
2006-04-28 13:41:59 UTC
Permalink
Hallo Henry,
Post by Henry Habermacher [MVP Access]
set frm = screen.activeform.name
^^^^^
Bist du sicher? ;-)

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Henry Habermacher [MVP Access]
2006-04-28 13:50:29 UTC
Permalink
Hallo Peter
Post by Peter Doering
Post by Henry Habermacher [MVP Access]
set frm = screen.activeform.name
^^^^^
Bist du sicher? ;-)
Nein, Du hättest aber auch gleich die richtige Version schreiben dürfen...

set frm = screen.activeform

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Michael Zimmermann
2006-04-28 15:26:14 UTC
Permalink
Hallo!
Post by Peter Doering
Bist du sicher? ;-)
Nein, ...
Laß Dich von dem nicht ärgern, Henry. Das mache ich dann
wieder in gewohnt professioneller Manier, sobald ich wieder
mehr Zeit habe. ;-)

Gruß aus Mainz
Michael, auf Henry-Entzug :-(

Loading...