Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  UserForm beenden

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:  UserForm beenden (539 mal gelesen)
wadim-u
Mitglied



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

Beiträge: 20
Registriert: 11.01.2021

CATIA V5 R20 SP03 HF03

erstellt am: 26. Mrz. 2021 18:00    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


ObjTypAusw_2021-03-26_01.jpg

 
Hallo zusammen,

bin gerade wieder dazugekommen, mein VBA-Selbststudium etwas voranzutreiben. Dabei versuche ich momentan mit den UserForms klarzukommen.
Als Übungsaufgabe habe ich mir folgendes Ziel gesetzt: ein bereits funktionierendes Makro, welches beim Anklicken div. CATIA-Elemente mir deren Objekttyp-Bezeichnungen zurückgibt, mit einer UserForm zu ergänzen, bzw. es entsprechend umzuschreiben.

Habe es zwar letzten Endes hinbekommen, es gibt allerdings Paar Punkte, bei welchen ich nicht ganz zufrieden bin, bzw. nicht nachvollziehen kann.

Unten sieht Ihr den Quelltext und eine Kurzübersicht der UserForm-Elemente befindet sich als Bild dabei.


Option Explicit

Public intFinish As Integer
' intFinish: 0 --> fortsetzen; 1 --> beenden
Public intCount As Integer

Sub CATMain()

intFinish = 0

ufAuswObjTyp.Show vbModeless

intFinish = 0

End Sub

Option Explicit

Private Sub cmdBeenden_Click()

intFinish = 1
Unload Me

End Sub

Private Sub UserForm_Activate()

Dim oUsrSel As Object
Dim strA As String
Dim varTyp(0) As Variant

varTyp(0) = "AnyObject"
intCount = 0

Set oUsrSel = CATIA.ActiveDocument.Selection
oUsrSel.Clear

Do While intFinish = 0
    intCount = intCount + 1
    strA = oUsrSel.SelectElement2(varTyp, "Bitte das fragliche Element anklicken", False)
    If strA = "Normal" Then
        Me.lblErklaerung.Caption = "Objekt-Typ ist:"
    Else
        Me.lblErklaerung.Caption = ""
    End If
    Me.txtAusgabe.Text = CStr(TypeName(oUsrSel.Item(1).Value))
    oUsrSel.Clear
Loop

End Sub

Private Sub UserForm_Initialize()

Me.cmdBeenden.Cancel = True
Me.cmdBeenden.Default = True
Me.txtAusgabe.Text = ""
Me.lblErklaerung.Caption = ""

End Sub

Und nun meine Fragen:
1. Die Schleife lässt sich aus irgendwelchem Grund nur in der UserForm realisieren. Wenn ich diese in die Hauptroutine verlege, hängt sich CATIA auf - weiss vielleicht jemand, wieso?
2. Nachdem ich mit "Beenden" die UserForm schliesse, wartet CATIA noch auf eine letzte Eingabe. Anscheinend lauft die Schleife da noch eine Runde weiter auch ohne UserForm. Um das zu Prüfen, habe ich extra die intCount-Variable eingefügt. Hier die gleiche Frage - wieso???
3. Das Setzen von cmdBeenden.Default auf True sollte, wenn ich es richtig verstehe, bewirken, dass der Beenden-Knopf sich auch mit der Enter-Taste bedienen lassen sollte. Ist aber irgendwie doch nicht der Fall, was zwar an sich auch nicht besonders dramatisch ist, allerdings schon wieder die selbe Frage aufkommen lässt - wieso?

Für eure Ideen und Unterstützung danke ich euch ganz herzlich im Voraus!

------------------

LG

Wadim

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: 26. Mrz. 2021 21:12    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 wadim-u 10 Unities + Antwort hilfreich

Servus Wadim

Zu 1): Me gilt nur im Code der in der entsprechenden UserForm steht. Von einer anderen UserForm oder einem Modul aus musst du per Namen zugreifen. Beispiel: ufAuswObj.TyplblErklaerung.Caption

Zu 2): Der Code wartet ja in der Zeile SelectElement2 auf eine Selektion. Erst wenn der Code bis loop weiter abgearbeitet wird kann die Schleife beendet werden. Du müsstest einen Weg finden aus der anderen Sub heraus die Selektion zu beenden und die Sub zu schließen.

Zu 3): Ist dann die UserForm auch aktiv (Vorsicht: vbModeless)? Hast du auch nicht eine andere Schaltfläche aktiviert (ist beim Start der UserForm das Beenden "hervorgehoben"? Im weiteren Verlauf auch?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

wadim-u
Mitglied



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

Beiträge: 20
Registriert: 11.01.2021

CATIA V5 R20 SP03 HF03

erstellt am: 29. Mrz. 2021 11: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


ObjTypAusw_2021-03-29_01.jpg

 
Hallo Bernd,

vielen Dank für deine Antwort!
1. "Me" sind es wohl gewesen, super! - habe die Schleife jetzt nach CATMain verlegt.
2. Fange so langsam an zu begreifen, dass die neue Schleife gleich anfängt, noch bevor intFinish vom "Beenden" entsprechend geändert wird. So wie ich im Internet nachgelesen habe, sollte ich theoretisch mit "End" in cmdBeenden_Click() das ganze Makro schliessen können, was mir in der Praxis leider doch nicht gelingt!!! Aber, ich denke, du hast da vollkommen Recht: ich müsste direkt von der UserForm raus so eine Haupt-Ausgangstür schaffen. Wiess leider noch nicht, wie...
3. vbModeless brauche ich, um auf die CATIA-Elemente draufklicken zu können; weiss zumindest momentan von keiner anderen Möglichkeit dafür. Eine andere Schaltfläche gibt's da nicht, nur das "Beenden". Als "hervorgehoben" beim Start kommt die Schaltfläche mir eigentlich nicht vor (siehe das angefügte Bild).

------------------

LG

Wadim

[Diese Nachricht wurde von wadim-u am 29. Mrz. 2021 editiert.]

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: 29. Mrz. 2021 13: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 wadim-u 10 Unities + Antwort hilfreich

Servus Wadim

Es wäre wohl einfacher wenn du auf die "endlos" laufende Schleife verzichten könntest. zB eine Schaltfläche "Element selektieren" einfügen durch die dann gezielt die Auswahl gestartet wird (oder ein zuvor selektiertes Element ausgewertet wird)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

wadim-u
Mitglied



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

Beiträge: 20
Registriert: 11.01.2021

CATIA V5 R20 SP03 HF03

erstellt am: 29. Mrz. 2021 13:42    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 Bernd,

an eine Zusatzschaltfläche habe ich auch schon gedacht - dies würde die Bedienung etwas weniger komfortabel gestalten. Ausserdem wäre interessant, wo dies einerseits eine Übung ist und andererseits für den späteren Ernstfall geübt wird, wie man das Problem eigentlich elegant lösen kann? Dass ich das CATMain aus einem andern sub schliessen kann. In Excell-Foren wird End-Anweisung als so einer Art Notausgang beschrieben. Ich wundere mich, dass es hier nicht funktioniert. Gibt es etwa bei CATIA diese End-Anweisung nicht?

------------------

LG

Wadim

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: 29. Mrz. 2021 13:53    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 wadim-u 10 Unities + Antwort hilfreich

Servus Wadim

End sollte schon gehen, aber ich vermute dass der Code da gerade wartet bis der User was selekiert hat. Dies könnte in dem Moment unabhängig vom Code/Makro sein.
Was du versuchen könntest: das Catia-Fenster aktivieren, per ESC (Sendkeys) die Selektion abbrechen und die Userform beenden.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

wadim-u
Mitglied



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

Beiträge: 20
Registriert: 11.01.2021

CATIA V5 R20 SP03 HF03

erstellt am: 29. Mrz. 2021 14: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

Hallo Bernd,

bei "ESC (Sendkeys)" was meinst du, was ist es?

------------------

LG

Wadim

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: 29. Mrz. 2021 14:10    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 wadim-u 10 Unities + Antwort hilfreich

Servus Wadim

Per Code die ESC-Taste drücken (siehe Suche)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

wadim-u
Mitglied



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

Beiträge: 20
Registriert: 11.01.2021

CATIA V5 R20 SP03 HF03

erstellt am: 29. Mrz. 2021 14:40    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 Bernd,

erstmal besten Dank!
Wenn ich Sendkeys(ESC) in den "Beenden"-Knopf einbaue, schmiert mir die UserForm zwar mit Geschimpfe ab aber das Warten auf die letzte Usereingabe lebt weiter! Kommt mir so langsam vor, als ob diese SelectElement2 bei CATIA aller höchste Priorität hätte.

------------------

LG

Wadim

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: 29. Mrz. 2021 14: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 wadim-u 10 Unities + Antwort hilfreich

Servus

Sendest du den Tastendruck auch an das richtige Fenster? (Catia nicht die UserForm)
Mehrere Subs/Functions parallel laufen lassen ist wohl keine gute Idee in VBA.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

wadim-u
Mitglied



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

Beiträge: 20
Registriert: 11.01.2021

CATIA V5 R20 SP03 HF03

erstellt am: 29. Mrz. 2021 14:53    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 Bernd,

der Quelltext sieht so aus:

Private Sub cmdBeenden_Click()

intFinish = 1
Unload Me
CATIA.SendKeys "{ESC}"
 
End Sub

------------------

LG

Wadim

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