Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Variablen auch zwischen UserForm'en hinweg austauschen!?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 04. Jan. 2006 23:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 04. Jan. 2006 23:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hallo Einstein,

Variablen kannst du als 'global' deklarieren mit Public var as Bla,
oder Dim var as Bla innerhalb eines Modules.Eines 'normalen Modules;-)
Innerhalb Klassemodulen wird das weniger was.

BTW, hab dazu noch ein nettes Quiz gefunden, und bin mal brutal ehrlich, alles wusste ich auch nicht;-)
http://www.online-excel.de/excel/quf.php?f=1
http://www.online-excel.de/excel/quf.php?f=2

Gruss, Nancy

                      

[Diese Nachricht wurde von startrek am 05. Jan. 2006 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Einstein
Mitglied
Zerspanungsmechaniker-Drehtechnik


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 05. Jan. 2006 16:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 05. Jan. 2006 17:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hi again,

so gehts:

Code:

'***** Modul1 (normales Modul) *******
Option Explicit
Public flag As Boolean

Sub 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



Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

erstellt am: 05. Jan. 2006 20:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 05. Jan. 2006 20:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 05. Jan. 2006 23:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

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;-)

HTHHope this helps (Hoffe, es hilft weiter) & 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


Sehen Sie sich das Profil von Goofy007 an!   Senden Sie eine Private Message an Goofy007  Schreiben Sie einen Gästebucheintrag für Goofy007

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 05. Jan. 2006 23:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

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 ansehenProjektmanagement
daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

erstellt am: 06. Jan. 2006 10:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Goofy007:
...Das Unterdrücken des Schließen-Buttons geht meines Wissens über die Windows API...

Ein "Schließbutton" ClickEvent liefert ein vbCancel zurück. Also, es kommt auf jeden Fall ein Wert zurück, und so muss es nicht ausgeblendet werden.

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz