Juli 12, 2020, 17:44:30

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Forumlar ein- und ausblenden per Button (Makro)

Begonnen von JulianZ., September 21, 2010, 10:24:08

⏪ vorheriges - nächstes ⏩

JulianZ.

Hey Leute. Ich möchte gerne zwei Formulare verstecken und erst nach betätiung des Button1 soll sich das Formular1 öffnen. Bei Betätigung von Button2 soll sich das erste Formular schließen und das Formular2 ´öffnen. Ich hab es schon mit einem PopUp probiert, aber das ist nicht so, wie ich es haben will. Es ist nämlich nicht im Vordergrund.

Ich freue mich auf eure Nachrichten

Sulu

Hallo Julian,

wäre es nicht möglich, dass du beim Druck auf den Button die Formulare einfach entsprechend aufrufst? Ist es also unbedingt nötig die Formulare zu verstecken?

Also in etwa so:

Klick Button1 -> Formular1 aufrufen -> Button2 -> Formular2 aufrufen (sobald dieses dann aufgerufen ist, kann ja Formular1 geschlossen werden)

Greets
Sulu

JulianZ

Ja, dies wäre auch möglich, nur ist das Hauptformular gesperrt, dass heßt, wenn ich über das Makro das Formular1 öffne, dass ist dieses im Hintergrund und kann nicht angeklickt werden.

database

Hallo,

ist gar nicht so schwer so was zu realisieren.
Ich habe dir ein kleines Beispiel erstellt und angehängt.
Schau dir mal die VBA-Prozeduren hinter den Buttons an.
Die Reihenfolge der Aufrufe kannst du nun selbst nach belieben durch kleine Änderungen am Code gestalten und natürlich auch erweitern.

Beginne mit Aufruf von frmHaupt ...

HTH
Peter

[Anhang gelöscht durch Administrator]

JulianZ.

Hey Database... Danke für die Antwort, aber ich kann die Datei nicht öffnen... Ich müsste ein Update ausführen und das ist nicht möglich zurzeit in unserem Unternehmen.. Kannst du eventuell mir die Datei nochmal schicken in einem anderem Format ?? Vielen Dank
Julian Zenses

database

Verstehe nicht ganz - welches Problem da zu einem Update führt?

Welche Windows-Version und welche Office Version setzt du ein?
Wenn du meine *.zip Datei runtergeladen hast ... rechtsklick ... hier entpacken ... sollte doch kein Problem erzeugen.

Ich kann das Vieh nur gezippt hier rauf laden, sonst überschreite ich mit 248 KB die max. Größe.

So aber lass uns das halt anders lösen:

Erstelle eine neue Datenbank und darin 3 Formulare.
Die Formulare definierst du als PopUp.
Bennenne Sie   frm1, frm2 und frmHaupt.

Erstelle auf frm1 ein Bezeichnungsfeld und schreibe rein : "Ich bin Formular 1", das gleiche auf frm2  hier natürlich "Ich bin Formular 2"
Erstelle auf frm1 und frm2 je einen Button und benenne diese cmdClose  und die Beschriftung  "Schließen"
Kopiere in frm1 folgenden Code - ohne etwas daran zu ändern:

Private Sub cmdClose_Click()
   
   If SysCmd(acSysCmdGetObjectState, acForm, "frm2") = 1 Then
       'wenn das frm2 geöffnet aber versteckt ist wird es angezeigt
       Forms!frm2.Visible = True
   End If
   
   DoCmd.Close acForm, "frm1"

End Sub


in frm2 kopiere diesen Code:


Private Sub cmdClose_Click()
   
   If SysCmd(acSysCmdGetObjectState, acForm, "frm1") = 1 Then
       'wenn das frm1 geöffnet aber versteckt ist wird es angezeigt
       Forms!frm1.Visible = True
   End If
   
   DoCmd.Close acForm, "frm2"

End Sub


Dann erstellst du auf frmHaupt 3 Buttons untereinander
benenne diese cmdOpenF1 mit Beschriftung "Formular 1 öffnen", cmdOpenF2 mit der Beschriftung "Formular 2 öffnen"
und den dritten cmdQuit mit der Beschriftung "Beenden"

Dann kopierst du den folgenden Code hinter das Formular:


Private Sub cmdOpenF1_Click()

   If SysCmd(acSysCmdGetObjectState, acForm, "frm1") = 1 Then 'Wenn das frm1 geöffnet ist
       MsgBox "Formular 1 ist bereits geöffnet!"
   Else  'das frm1 ist nicht geöffnet, daher wird es aufgerufen
       DoCmd.OpenForm "frm1"
       If SysCmd(acSysCmdGetObjectState, acForm, "frm2") = 1 Then 'wenn das frm2 geöffnet ist
           'wird es versteckt
           Forms!frm2.Visible = False
       End If
   End If

End Sub

Private Sub cmdOpenF2_Click()

   If SysCmd(acSysCmdGetObjectState, acForm, "frm2") = 1 Then   'wenn das frm2 geöffnet ist
       MsgBox "Formular 2 ist bereits geöffnet!"
   Else   'das frm2 ist nicht geöffnet, daher wird es aufgerufen
       DoCmd.OpenForm "frm2"
       If SysCmd(acSysCmdGetObjectState, acForm, "frm1") = 1 Then
           'wird es versteckt
           Forms!frm1.Visible = False
       End If
   End If

End Sub

Private Sub cmdQuit_Click()

   DoCmd.Quit

End Sub


Speichere die Datei, schließe alle Entwurfsansichten und öffne das frmHaupt.

wenn du alles nach meiner Vorgabe gemacht hast solltest du dann die Formulare per Buttonklick abwechslen anzeigen und verschwinden lassen können.
Es wird beim Beenden jedoch nicht daruf geachtet, ob noch ein Formular geöffnet war - das habe ich dann ausgelassen ..  :)

Grüße

Peter