Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parameter aus Userform in CATMain nutzen

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
Autor Thema:  Parameter aus Userform in CATMain nutzen (1832 mal gelesen)
kaeja
Mitglied



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

Beiträge: 20
Registriert: 28.06.2012

CATIAV5R16, CATIAV5R19, WinXP

erstellt am: 01. Jul. 2012 21:46    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,

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


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 01. Jul. 2012 22:03    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 kaeja 10 Unities + Antwort hilfreich

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



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

Beiträge: 20
Registriert: 28.06.2012

CATIAV5R16, CATIAV5R19, WinXP

erstellt am: 02. Jul. 2012 10:22    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

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



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

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 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 kaeja 10 Unities + Antwort hilfreich

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 Explicit

Public 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



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

Beiträge: 20
Registriert: 28.06.2012

CATIAV5R16, CATIAV5R19, WinXP

erstellt am: 02. Jul. 2012 11:01    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, das Detail hatte ich übersehen.

Gruß
kaeja

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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 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 kaeja 10 Unities + Antwort hilfreich

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



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

Beiträge: 20
Registriert: 28.06.2012

CATIAV5R16, CATIAV5R19, WinXP

erstellt am: 02. Jul. 2012 15:33    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

Weil mehrere Parameter in dem UserForm eingelesen werden.
Die MsgBox habe ich nur zur Überprüfung genutzt.

Gruß
kaeja

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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 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 kaeja 10 Unities + Antwort hilfreich

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



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

Beiträge: 20
Registriert: 28.06.2012

CATIAV5R16, CATIAV5R19, WinXP

erstellt am: 02. Jul. 2012 15:45    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

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 Planungs­gesellschaft und seit über 60 Jahren Experte für Gesamt­planung und qualifizierte Fachplanung. Mit über 1.200 Mit­arbei­tenden weltweit erbringt OBERMEYER Planungs­leistungen vorwiegend in der Infra­struktur und deckt zusammen mit den wissen­schaft­lichen Forschungs­instituten eine Vielzahl von Fach­bereichen des Ingenieur­wesens und der Bauplanung ab....

Anzeige ansehenKonstruktion, Visualisierung
HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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 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 kaeja 10 Unities + Antwort hilfreich

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

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