| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Variablen auch zwischen UserForm'en hinweg austauschen!? (13574 mal gelesen)
|
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 04. Jan. 2006 23:23 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bins noch mal zu später Stunde. Jetzt mal mit einer ganz anderen Frage: In meinem UserForm kann der Benutzer beim anklicken eines "Entfernen"-Button, Einträge aus einer ComboBox löschen. Doch bevor der Eintrag gelöscht wird, soll noch ein Bestätigungs-UserForm (UserForm2) angezeigt werden. Mit den Button's "Ja", "Nein" und "Abbrechen". Wenn der Benutzer auf den Button "Nein" oder "Abbrechen" klickt, wird eine Variable auf True gesetzt und das UserForm2 verlassen. Die genannte Variable deklarierte ich in dem UserForm1 (mit Dim). Doch somit kann ich diese Variable nicht über UserForm'en hiweg bearbeiten. Nun meine Frage, wie muss ich die Variable deklarieren, damit ich deren Wert auch zwischen UserForm'en hinweg bearbeiten und ermitteln kann? Und gleich noch eine Frage: Kann man, das in der oberen rechten Ecke angezeigte "X", zum schließen des UserForm's, auch deaktivieren? ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 04. Jan. 2006 23:59 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
|
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 05. Jan. 2006 16:57 <-- editieren / zitieren --> Unities abgeben:
Danke startrek, für deine AW. ...Doch bei mir geht das wieder mal nicht Ich habe in VBA zwei UserForm'en, mit "Einfügen" -> "UserForm" erzeugt. In dem UserForm1 kann der Benutzer auf den Button "Entfernen" klicken, worauf sich das UserForm2 öffnet. Hier hat der Benutzer die Auswahl, auf "Ja", "Nein" oder "Abbrechen" zu klicken. Wenn er auf "Nein" oder "Abbrechen" klickt, soll einer Fariablen (die ich in UserForm1 wiefolgt deklarierte "Public Abbruch as Boolean") der Wert "True" zugwießen werden. Wenn ich diesen Wert allerdings im UserForm1 ermitteln möchte, steht er wieder/noch auf "False". Warum??? ...Und wegen den oberen, rechten "X" zum schließen des UserForm's, hat jemand ne Idee, wie man dieses Deaktiviert?
------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Jan. 2006 17:47 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hi again, so gehts:
Code:
'***** Modul1 (normales Modul) ******* Option Explicit Public flag As BooleanSub x() UserForm1.show 0 End Sub --------------------------------- '********* Userform *********** Option Explicit Private Sub cmd_cancel_Click() If Not flag Then flag = 1 Else flag = 0 Me.Caption = CStr(flag) End Sub
> ..., hat jemand ne Idee, ...Nöe, Du hast Ideen ... Wozu die Userform ohne Titelleiste? Ich dächte zwar da gabs mal was [ohne Gewähr], müsste ich suchen, aber - hast Du einen triftigen Grund sowas zu brauchen? ;-) Gruss Nancy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002
|
erstellt am: 05. Jan. 2006 20:25 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Guten Abend Einstein, (seas Nancy ), muss es denn für so eine triviale Aufgabe wie „Ja, Nein, Abbrechen“ eine Form sein? Nimm einfach anstelle von Form2.Show einen VB Dialog: Code:
Dim Res As VbMsgBoxResult Res = MsgBox("Klick mal was...", vbYesNoCancel, "Klicktest") Select Case Res Case vbYes: MsgBox "Du hast Ja geklickt" Case vbNo: MsgBox "Du hast Nein geklickt" Case vbCancel: MsgBox "Du hast Cancel geklickt" End Select
HTH ¤dit "As VbMsgBoxResult" vergessen ------------------ Grüße daywa1k3r FX64 Software Solutions Mold&More Software Solutions
[Diese Nachricht wurde von daywa1k3r am 05. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 05. Jan. 2006 20:26 <-- editieren / zitieren --> Unities abgeben:
Hallo startrek, ich hab in meinem Tool kein "Modul" angelegt, oder? Damit dir mein Fehler evenuell deutlich wird, beschreibe ich dir mal, wie ich bei der Programmierung vorgegangen bin: Zuerst erstellte ich über "Einfügen" -> "UserForm" ein UserForm, in welches ich nun die ganzen Objekte, wie "TextBox", "Label" und "Frames" einfügte. Um den einzelnen Objekten den Code zu zuweisen, klickte ich sie doppelt an, und ich kam im Code-Fenster "raus". ...Ist dieses Code-Fenster ein Modul? Muss man immer mit Modulen arbeiten, sobald sich mehrere UserFormen im Code befinden? ...Nochmal's Entschuldigung, bezüglich meiner Fragen, doch qBasic ist komplett anders! ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Jan. 2006 23:08 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hi nochmal, (see us Igor ) auf die Möglichkeiten mit vbYesNoCancel hat Igor hingewiesen, da hat er auch recht, sollte man in Betracht ziehen, mit so ner Msgbox lässt sich durchaus recht unkompliziert viel anstellen. Okay, Du hast aber gleich zwei Userforms? Halte ich für ... hmm, naja ich kenn ja den Zweck nicht. Egal, reden wir mal nur von einer Userform, von deiner;-) > ich hab in meinem Tool kein "Modul" angelegt, oder? Keine Ahnung, ich denke mal aber schon, oder wie/wo heraus startest du das UF-Dings? Da gibts doch sicher ein Modul [also ein via 'Einfügen > Modul, eingefügtes Modul] wo dann UserformX.show steht, oder? Dort deklarierst Du einfach deine Variable und zwar bevor!!! Sub xyz() beginnt, also nicht innerhalb/unterhalb von Sub, sondern direkt als erstes obendrüber. Also genau so, wie ich es oben als Bsp. dargestellt hatte. Jetzt hast du eine globale Variable, auf die Du aktuell von überall zugreifen/abfragen kannst. Das/ein 'stinknormale/s Modul' brauchst Du als Katalysator sozusagen für deine Public-Vars. Userformen sind zwar auch 'Module', aber Klassemodule, ebenso wie 'Thisdrawing' ein Klassemodul ist, alles was da drinnen steht, beginnt meist mit 'Private Sub ...()' Und in den Teilen hab ich auch schlechte Erfahrungen mit globalen Variablen gemacht. Nimm' einfach ein 0815 Modul [Einfügen > Modul] daher und schreibe dort als Einziges rein: Public myTestFlag as boolean und eigentlich müsste das schon tun dann, brauchst nicht mal ne Sub hinterher zu bringen, myTestFlag sollte/n dann auch die (zwei) Userform/en kennen. Für Richtigkeit/Vollständigkeit und Korrektheit übernehme ich - wie immer - absolut keine Gewähr;-) HTH & Gruss Nancy [Diese Nachricht wurde von startrek am 05. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004 Map3D 2018 und Civil3D 2018
|
erstellt am: 05. Jan. 2006 23:16 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hallo Einstein, ich bin auch der Meinung, dass diese Aufgabenstellung mit einer MessageBox besser erledigt werden kann. (Im übrigen mag ich es nicht wenn mich ein Programm fragt ob ich wirklich das machen will was ich angeklickt habe... aber das tut nix zur Sache) Das Unterdrücken des Schließen-Buttons geht meines Wissens über die Windows API. Aber davon hab ich leider keine Ahnung. mfg didi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Bauingenieur (m/w/d) | Du bewegst gern Großes ? wir bewegen den Puls der Stadt Alles fließt ? damit das so ist und Strom, Erdgas, Wasser und Wärme auch da ankommen, wo sie benötigt werden, gibt es die wesernetz Bremen GmbH. Wir kümmern uns um die einwandfreie Funktion der verschiedenen, riesigen Versorgungsnetzwerke in der Stadt, zu jeder Zeit, an jedem Punkt. Neue Anforderungen in einer digitalisierten Welt bedienen wir mit einem ambitionierten Programm zum Glasfaserausbau ? für den schnellen Datenfluss.... | Anzeige ansehen | Projektmanagement |
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002
|
erstellt am: 06. Jan. 2006 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|