Autor
|
Thema: Parameter aus Userform in CATMain nutzen (1832 mal gelesen)
|
kaeja Mitglied
Beiträge: 20 Registriert: 28.06.2012 CATIAV5R16, CATIAV5R19, WinXP
|
erstellt am: 01. Jul. 2012 21:46 <-- editieren / zitieren --> Unities abgeben:
Hallo, befasse mich das erste mal mit Userform mittels VBA und scheitere an Grundlagen :-( Hier mein Code:
Code: Sub CATMain()Dim Param As Integer UserForm1.Show MsgBox ("Der Wert für Param ist " & Param & "mm.") End Sub ------------------------------------ 'Userform1: Sub CommandButton1_Click() Param = CInt(TextBox1.Text) MsgBox ("Der Wert für Param ist " & Param & "mm.") UserForm1.Hide End Sub
In der ersten MsgBox des Userform1 sehe ich, dass der Parameter richtig eingelesen ist. In der zweiten MsgBox des CATMain ist der Wert aber immer Null. Wieso? Wieso bleibt der Parameter nicht erhalten? Danke und Gruß Kaeja Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 01. Jul. 2012 22:03 <-- editieren / zitieren --> Unities abgeben: Nur für kaeja
Servus Bitte Systeminfo ausfüllen. Liegt wohl daran dass deine Variable nicht global definiert wurde. Somit ist die Variabel nur in einer Subroutine/Funktion verfügbar. Ich empfehle dir dich mit den Grundlagen von VB auseinanderzusetzen, dann wir dir einiges klarer. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kaeja Mitglied
Beiträge: 20 Registriert: 28.06.2012 CATIAV5R16, CATIAV5R19, WinXP
|
erstellt am: 02. Jul. 2012 10:22 <-- editieren / zitieren --> Unities abgeben:
Moin Bernd, leider komme ich ja genau da nicht weiter. Sobald ich versuche die Variable in CATMain() als Public, Private oder static zu definieren bricht das Programm mit dem Hinweis auf "Invalid attribute in Sub, Function, or Property" ab. Bisher habe ich als Einstiegshilfe http://de.wikibooks.org/wiki/Visual_Basic_6:_Variablen genutzt. Aber es hat einfach noch nicht Klick gemacht um die Beispiele zu transferieren. Wenn Du mir weitere Einstiegsseiten nennen kannst, bin ich Dir dankbar. Gruß kaeja Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 02. Jul. 2012 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für kaeja
Hallo Kaeja, es gibt viele verschiedene Möglichkeiten, um Variablen zu übergeben, duchzuschleusen oder verfügbar zu machen. Hier mal 2 Beispiele: Beispiel 1: Du hast eine Mainroutine und übergibst die benötigten Variablen alle an die Subroutinen via ByVal oder ByRef. Evtl. abgeänderte Werte oder Ergebnisse werden dann via Function zurück an die Mainroutine gegeben. Beispiel 2: Du definierst globale Variablen, die allerdings außerhalb der Routine definiert werden müssen. Du musst diese also als Public außerhalb der Sub oder Funktion definieren. z.B.
Code: Option ExplicitPublic Param As String Sub CATMain() Param = "Ich bin ein öffentlicher String." End Sub
------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kaeja Mitglied
Beiträge: 20 Registriert: 28.06.2012 CATIAV5R16, CATIAV5R19, WinXP
|
erstellt am: 02. Jul. 2012 11:01 <-- editieren / zitieren --> Unities abgeben:
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 02. Jul. 2012 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für kaeja
Warum machst Du nicht einfach: Code:
call MsgBox ("Der Wert für Param ist " & Userform1.TextBox1.Text & "mm.")
------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kaeja Mitglied
Beiträge: 20 Registriert: 28.06.2012 CATIAV5R16, CATIAV5R19, WinXP
|
erstellt am: 02. Jul. 2012 15:33 <-- editieren / zitieren --> Unities abgeben:
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 02. Jul. 2012 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für kaeja
Und? Das Verfahren ist doch analog dazu. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kaeja Mitglied
Beiträge: 20 Registriert: 28.06.2012 CATIAV5R16, CATIAV5R19, WinXP
|
erstellt am: 02. Jul. 2012 15:45 <-- editieren / zitieren --> Unities abgeben:
Hmm, dann habe ich Deinen Vorschlag noch nicht ganz verstanden. Für jeden Parameter eine solche Zeile schreiben? Code:
Param1 = Userform1.TextBox1.Text
Zuvor das Userform nur einmal mit SHOW und HIDE aufrufen/befüllen und trotzdem kann ich auf die Parameter zurückgreifen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Konstrukteur Straße (m|w|d) | Die OBERMEYER Gruppe ist eine führende, unabhängige deutsche Planungsgesellschaft und seit über 60 Jahren Experte für Gesamtplanung und qualifizierte Fachplanung. Mit über 1.200 Mitarbeitenden weltweit erbringt OBERMEYER Planungsleistungen vorwiegend in der Infrastruktur und deckt zusammen mit den wissenschaftlichen Forschungsinstituten eine Vielzahl von Fachbereichen des Ingenieurwesens und der Bauplanung ab.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 02. Jul. 2012 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für kaeja
Sollte funktionieren. Solange die UserForm nicht mit einem Unload beendet wird, sollten die Controls im RAM liegen und ihre Parameter über die Funktionen zugänglich sein. Wenn Du die Parameter öfter verwendest, solltest Du sie natürlich lokal in einem anderen Parameter unterbringen. Nehme an Du führst Berechnungen durch, wegen des Casts auf Integer. Ich kann natürlich nie ausschließen, dass ich mich irre. :-) - gebe ja auch nur alles aus meinen Gedanken her und gebe Denkanstöße, also habe es jetzt nicht ausprobiert, das wäre dann Dein Part. :-) ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |