Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mit VBA Code alle Formulare auf PopUp umstellen

470 views
Skip to first unread message

Peter

unread,
Oct 11, 2001, 3:42:00 PM10/11/01
to
Ich würde gerne mit VBA Code alle Formulare auf PopUp = true bzw = False
umstellen

Mit folgendem Code wäre es zwar möglich geöffnete Formulare umzustellen. Das
sollte jedoch auch ohne Öffnen möglich sein?

Dim frm As Form

For Each frm In Application.Forms
If Left(frm.Name, 1) = "p" Then
frm.PopUp = True
End If
Next

Vielen Dank

Peter


Johann Pumhösl

unread,
Oct 11, 2001, 5:25:56 PM10/11/01
to
Hallo Peter!

"Peter" <aui...@chello.at> schrieb im Newsbeitrag
news:cCmx7.7139$Pg3.2...@news.chello.at...

wie wärs mit:

Dim frm As Form

' Bildschirmecho auschalten
Application.ECHO False

For Each frm In Application.Forms
If Left(frm.Name, 1) = "p" Then
frm.PopUp = True
End If
Next

' Bildschirmecho einschalten
Application.ECHO True


hth johann

----
Tips+Tricks: TREEVIEW als Klasse ohne OCX...
URL: http://members.aon.at/millpartner


Elmar Boye

unread,
Oct 11, 2001, 5:13:45 PM10/11/01
to

Hallo Peter,

"Peter" <aui...@chello.at> schrieb ...

trage bitte Deinen vollständigen Absender ein, um Dich von
den anderen Peter's unterscheiden zu können. Danke.

> Ich würde gerne mit VBA Code alle Formulare auf PopUp = true bzw = False
> umstellen
>
> Mit folgendem Code wäre es zwar möglich geöffnete Formulare
> umzustellen. Das sollte jedoch auch ohne Öffnen möglich sein?

Um solche Eigenschaften umzustellen musst Du die Formulare öffnen.
Das sollte dann im Design-Modus erfolgen, in etwa so (A2000++)
oder via DAO Container:

Private Sub FormProperty()
Dim doc As Access.AccessObject
Dim frm As Access.Form

On Error GoTo FormPropertyExit

' Keine Anzeige, keine Rückfrage
Application.Echo False, "Initialisiere Formulare"
DoCmd.SetWarnings False
' Formulare auf Grundeinstellung
For Each doc In CurrentProject.AllForms


If Left(frm.Name, 1) = "p" Then

DoCmd.OpenForm doc.Name, acDesign
If Err = 0 Then
Set frm = Forms(doc.Name)
frm.PopUp = True
Set frm = Nothing
DoCmd.Close acForm, doc.Name
End If
End If
Next doc
FormPropertyExit:
Application.Echo True
DoCmd.SetWarnings True
Exit Sub
End Sub

Gruss
Elmar


Peter Auinger

unread,
Oct 11, 2001, 6:29:44 PM10/11/01
to
Hallo Elmar

Ich hab "frm.name" in "doc.name" ausgebessert und die "If Err Zeile"
ausdokumentiert und es funktioniert unter A2k.
Was hattest Du mit "If Err = 0 Then" vor?
Weißt Du vielleicht auch wie ich das Problem ohne ADO lösen kann? Ich brauch
es nämlich für eine A97 Anwendung.

Vielen Dank
(Namensproblem wurde auch gelöst)

Peter


"Elmar Boye" <news...@elmarboye.de> schrieb im Newsbeitrag
news:9q54hh$l4jk3$2...@ID-28695.news.dfncis.de...

Elmar Boye

unread,
Oct 11, 2001, 6:47:51 PM10/11/01
to
Hallo Peter,

"Peter Auinger" <aui...@chello.at> schrieb ...


> Ich hab "frm.name" in "doc.name" ausgebessert und die "If Err Zeile"
> ausdokumentiert und es funktioniert unter A2k.
> Was hattest Du mit "If Err = 0 Then" vor?

Sorry, da habe ich was ausgeschnippelt, aber wohl nicht alles.

> Weißt Du vielleicht auch wie ich das Problem ohne ADO
> lösen kann? Ich brauch es nämlich für eine A97 Anwendung.

Wäre via DAO - ebenfalls auf die Schnell geschnitzt ohne Test:

Dim con As DAO.Container
Dim doc As DAO.Document
Dim obj As Form

' Auswahl Formulare oder Berichte
Set con = dbsLocal.Containers("Forms")
con.Documents.Refresh

On Error GoTo ScanObjectsExit

' Keine Anzeige, keine Rückfrage
Application.Echo False, "Durchsuchen Formulare"
DoCmd.SetWarnings False
' Durchlaufen Formularauflistung
On Error Resume Next
For Each doc In con.Documents
If Left(doc.Name, 1) = "p" Then
DoCmd.OpenForm doc.NAME, acDesign


If Err = 0 Then

Set obj = Forms(doc.NAME)
frm.PopUp = True
Set obj = Nothing
DoCmd.Close acForm, doc.NAME
End If


End If
End If
Next doc

ScanObjectsExit:
Set con = Nothing

Peter Auinger

unread,
Oct 11, 2001, 6:50:24 PM10/11/01
to
Hallo Elmar

Du hast mir wirklich sehr geholfen. Hab bisher schon viele Stunden erfolglos
gesucht und probiert.
Gut daß es Profis gibt.

Vielen Dank

Peter


"Elmar Boye" <news...@elmarboye.de> schrieb im Newsbeitrag

news:9q57fr$ln0ve$1...@ID-28695.news.dfncis.de...

Henry Habermacher [MVP Access]

unread,
Oct 11, 2001, 6:50:25 PM10/11/01
to
Hallo Peter

"Peter" <aui...@chello.at> wrote in message
news:cCmx7.7139$Pg3.2...@news.chello.at...

Damit Du das machen kannst, musst Du zuerst die Forms in der
Entwurfsansicht öffnen. Die Forms sind Documents im Container Forms.

Das geht dann etwa so (ungetestet):

Dim db as Database
dim doc as Document
dim frm as Form

Set DB = CurrentDB()
for each doc in db.Containers("Forms")
docmd.openForm doc.name, acviewdesign
set frm = Forms(doc.name)
if Left(frm.Name, 1) = "p" then
frm.PopUp = True
docmd.close acForm, frm.Name, acSaveYes
else
docmd.close acForm, frm.Name, acSaveNo
end if
next
set frm = nothing
set doc = nothing
db.close
set db = nothing


HTH
Henry

Peter Auinger

unread,
Oct 12, 2001, 1:26:19 AM10/12/01
to
Hallo Henry

Vielen Dank
Ich werde Deinen Lösungsvorschlag gleich testen.

lg Peter

"Henry Habermacher [MVP Access]" <he...@psp-online.com> schrieb im
Newsbeitrag news:9q58t9$ltk2o$2...@ID-30649.news.dfncis.de...

Peter Auinger

unread,
Oct 14, 2001, 7:29:01 AM10/14/01
to
Hallo Elmar

Ich habe auch Deinen Vorschlag ausprobiert, aber der Code kommt nicht über
nachstehende Position


> > for each doc in db.Containers("Forms")

Weisst Du da bitte vielleicht eine Lösung?

Viele Grüsse

Peter

"Peter Auinger" <aui...@chello.at> schrieb im Newsbeitrag
news:%9vx7.16865$Pg3.5...@news.chello.at...

Peter Auinger

unread,
Oct 14, 2001, 7:29:00 AM10/14/01
to
Hallo Elmar

mit A2K hab ich Deine Hilfe perfekt nachvollziehen und einsetzen können.
Auch die DAO Version läuft fehlerfrei durch, aber es passiert leider nichts.
Aus irgeneinem Grund setzt der Code die Eigenschaft nicht auf true bzw
false.

Vielleicht hast Du dazu eine Idee.

Viele Grüsse

Peter


"Elmar Boye" <news...@elmarboye.de> schrieb im Newsbeitrag

news:9q57fr$ln0ve$1...@ID-28695.news.dfncis.de...

Günther Ritter

unread,
Oct 14, 2001, 10:48:44 AM10/14/01
to
"Peter Auinger" <aui...@chello.at> schrieb

> mit A2K hab ich Deine Hilfe perfekt nachvollziehen und einsetzen können.
> Auch die DAO Version läuft fehlerfrei durch, aber es passiert leider
nichts.
> Aus irgeneinem Grund setzt der Code die Eigenschaft nicht auf true bzw
> false.

Hallo Peter,
probier mal:

Dim db As DAO.Database
Dim doc As DAO.Document
Dim str As String
Set db = CurrentDb()
For Each doc In db.Containers("Forms").Documents
str = doc.Name
If Left(str, 3) = "p" Then
DoCmd.OpenForm str, acViewDesign
Forms(str).PopUp = True
DoCmd.Close acForm, str, acSaveYes
End If
Next

Gruss
Günther
http://www.access-hilfe.de

Elmar Boye

unread,
Oct 14, 2001, 11:43:53 AM10/14/01
to
Hallo Peter,

"Peter Auinger" <aui...@chello.at> schrieb ...

> mit A2K hab ich Deine Hilfe perfekt nachvollziehen und einsetzen können.
> Auch die DAO Version läuft fehlerfrei durch, aber es passiert leider nichts.
> Aus irgeneinem Grund setzt der Code die Eigenschaft nicht auf true bzw
> false.
>
> Vielleicht hast Du dazu eine Idee.

nachdem ich die Mängel behoben hatte (End If zuviel, dbsLocal zuwenig) -
mal wieder zu viel/wenig geschnippselt... :-(

Der Code sollte unter normalen Umständen jegliches Formular mit
einem einleitenden "p" ändern. Und das Formular danach die
Eigenschaft Popup = Ja haben, und sich somit beim nächsten Öffnen
wie ein solches verhalten.

Um Nebenwirkungen durch andere Einstellungen auszuschliessen:
Kommentiere den einleitenden Code aus


' Keine Anzeige, keine Rückfrage
'Application.Echo False, "Durchsuchen Formulare"
'DoCmd.SetWarnings False

dann sollten Meldungen Fehler angezeigt werden, so sie durch
andere Bedingungen eintreten.

Nur für den Fall, das Du etwas in der Art vorhast:
Nicht funktionieren tut, die Popup-Eigenschaft zur Laufzeit
eines Formular zu ändern. Solange das Fenster im Normalmodus
eröffnet ist, passiert an den Fenstermodi nichts. Der Modus
muss wird nur beim Öffnen beachtet, und ggf. durch den
Parameter WindowMode beim DoCmd.OpenForm geändert.

Gruss
Elmar


0 new messages