Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  On Error Goto läuft nur einmal durch

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:  On Error Goto läuft nur einmal durch (1867 mal gelesen)
CATIA86
Mitglied
Maschinenbauingenieur


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

Beiträge: 26
Registriert: 17.06.2015

Windows 10 64 bit
CATIA V5-6R2016
Microsoft .NET
Version 4.6.01038
Visual Basic 2013

erstellt am: 29. Jul. 2015 00:56    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

Liebe Community,

Ich versuche ein Makro zu schreiben welches den Namen und die Länge eines Tropfen aus dem Konstruktionsbaum des Blech Modellers liest und diese mit einer Message ausgibt. Ich habe zur Kontrolle mehrere Fehler eingebaut. Der erste Fehler wird entdeckt die weiteren aber nicht mehr. Die Recherche in Google hat ergeben, dass VBA den Fehler speichert und sobald ein weiterer auftaucht überfordert ist. Im Netz wurde einige Vorschläge mit "On Error GoTo 0" und/oder Err.Clear vorgeschlagen. Leider ist es mir nicht gelungen diese richtig einzubauen. Könnt Ihr mir bitte behilflich sein. Bin auf eure Hilfe angewiesen.

Vielen Dank 


Code:
Sub tropfenflansch()
    Dim oSel As Selection
    Dim partDocument1 As PartDocument
    Set partDocument1 = CATIA.ActiveDocument

    Dim part1 As Part
    Set part1 = partDocument1.Part
   
    Dim parameters1 As Parameters
    Set parameters1 = part1.Parameters
 
 
    Set part1 = CATIA.ActiveDocument.Part
    Set oSel = CATIA.ActiveDocument.Selection
    oSel.Search "CATSmd_Search.PredefinedFlange.Type=TearDrop,all" 
   

   
If oSel.Count >= 1 Then
    For i = 1 To oSel.Count + 10
       
        Dim length1 As Length
        Set length1 = parameters1.Item("Part1\Hauptkörper\Tropfen." & i & "\Länge")
        On Error GoTo A
        H = length1.Value

               
       
        MsgBox ("Tropfen." & i & " ist vorhanden und hat die Länge "& H &"")
       
A:
       
        Next
End If
oSel.Clear
End Sub


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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 29. Jul. 2015 06: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 Nur für CATIA86 10 Unities + Antwort hilfreich

Code:
For i = 1 To oSel.Count + 10
      
        Dim length1 As Length

     On Error GoTo A   'Fehlerbehandlung einschalten

        Set length1 = parameters1.Item("Part1\Hauptkörper\Tropfen." & i & "\Länge")

     On Error GoTo 0    'Fehlerbehandlung ausschalten

        H = length1.Value

              
      
        MsgBox ("Tropfen." & i & " ist vorhanden und hat die Länge "& H &"")
      
A:
       MsgBox ("Tropfen." & i & " ist nicht vorhanden.")

        Next


[Diese Nachricht wurde von imation1999 am 29. Jul. 2015 editiert.]

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

CATIA86
Mitglied
Maschinenbauingenieur


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

Beiträge: 26
Registriert: 17.06.2015

Windows 10 64 bit
CATIA V5-6R2016
Microsoft .NET
Version 4.6.01038
Visual Basic 2013

erstellt am: 29. Jul. 2015 09:50    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 Imation,

danke für die schnelle Antwort. Leider ändert sich nichts. Hast du sowas ähnliches schonmal selbst programmiert? Gibt es vielleicht andere Lösungswege?

Vielen Dank 

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 29. Jul. 2015 10:13    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 CATIA86 10 Unities + Antwort hilfreich

Hallo,

welche Fehler erkennt dein Makro nicht?

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

CATIA86
Mitglied
Maschinenbauingenieur


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

Beiträge: 26
Registriert: 17.06.2015

Windows 10 64 bit
CATIA V5-6R2016
Microsoft .NET
Version 4.6.01038
Visual Basic 2013

erstellt am: 29. Jul. 2015 10:15    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,

der erste Fehler wird erkannt, sobald ein weiterer dazu kommt klappt es wieder nicht.

Gruß

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 29. Jul. 2015 15: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 CATIA86 10 Unities + Antwort hilfreich

Hallo catia,

füg bitte nach der Sprungadresse 'A:' die Zeile in Dein Makro ein:

Code:
Sub tropfenflansch()
    Dim oSel As Selection
    Dim partDocument1 As PartDocument
    Set partDocument1 = CATIA.ActiveDocument

    Dim part1 As Part
    Set part1 = partDocument1.Part
   
    Dim parameters1 As Parameters
    Set parameters1 = part1.Parameters
 
 
    Set part1 = CATIA.ActiveDocument.Part
    Set oSel = CATIA.ActiveDocument.Selection
    oSel.Search "CATSmd_Search.PredefinedFlange.Type=TearDrop,all"  
   

   
If oSel.Count >= 1 Then
    For i = 1 To oSel.Count + 10
       
        Dim length1 As Length
        Set length1 = parameters1.Item("Part1\Hauptkörper\Tropfen." & i & "\Länge")
        On Error GoTo A
        H = length1.Value

               
       
        MsgBox ("Tropfen." & i & " ist vorhanden und hat die Länge "& H &"")
       
A:
        debug.print "Error found!"
        Next
End If
oSel.Clear
End Sub


Tschau,
Joe

PS: Falls Du nicht mit dem VBA-Editor arbeitest, ersetze bitte

Debug.Print "Error found!"

mit

MsgBox "Error found!"

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

CATIA86
Mitglied
Maschinenbauingenieur


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

Beiträge: 26
Registriert: 17.06.2015

Windows 10 64 bit
CATIA V5-6R2016
Microsoft .NET
Version 4.6.01038
Visual Basic 2013

erstellt am: 29. Jul. 2015 15: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 Joe,

ich habe die MsgBox eingefügt. Dann kommt bei jedem Durchlauf diese MsgBox bis dann der zweite Fehler kommt und das Makro stoppt. Wenn ich vor die MsgBox ein On Error GoTo 0 einfüge wird der erste Fehler erkannt, beim zweiten leider wieder nicht mehr   

Grüße

[Diese Nachricht wurde von CATIA86 am 29. Jul. 2015 editiert.]

[Diese Nachricht wurde von CATIA86 am 29. Jul. 2015 editiert.]

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

CATIA86
Mitglied
Maschinenbauingenieur


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

Beiträge: 26
Registriert: 17.06.2015

Windows 10 64 bit
CATIA V5-6R2016
Microsoft .NET
Version 4.6.01038
Visual Basic 2013

erstellt am: 29. Jul. 2015 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

Hallo an Alle,

ich habe es gelöst. Anstatt On Error GoTo 0 muss es On Error GoTo -1 heißen.

Danke an Alle für die Unterstützung 

Code:
Sub tropfenflansch()
    Dim oSel As Selection
    Dim partDocument1 As PartDocument
    Set partDocument1 = CATIA.ActiveDocument
    Dim part1 As Part
    Set part1 = partDocument1.Part
   
    Dim parameters1 As Parameters
    Set parameters1 = part1.Parameters
 
 
    Set part1 = CATIA.ActiveDocument.Part
    Set oSel = CATIA.ActiveDocument.Selection
    oSel.Search "CATSmd_Search.PredefinedFlange.Type=TearDrop,all" 
 

   
If oSel.Count >= 1 Then
    For i = 1 To oSel.Count + 10
       
        Dim length1 As Length
        Set length1 = parameters1.Item("Part1\Hauptkörper\Tropfen." & i & "\Länge")
        On Error GoTo A
        H = length1.Value

               
       
        MsgBox ("Tropfen." & i & " ist vorhanden und hat die Länge "& H &"")
       
A:
        On Error GoTo -1
        Next
End If
oSel.Clear
End Sub


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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 29. Jul. 2015 15:51    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 CATIA86 10 Unities + Antwort hilfreich

Hallo catia,

ich hab die Routine umgebaut; die Dims nach vorne(und aus der Schleife raus!),
die Fehlerbehandlung neu.

Wenn jetzt beim Ablaufen des Makros ein unbehandelter Fehler auftritt, kommt eine MsgBox mit Fehlernummer und Text.
Diese Fehlernummer handelst jetzt in der Select Case ab(gegebenenfalls legst einen neuen 'Case' an).
Das so lange, bis alle Fehler abgehandelt werden.

Code:

Sub tropfenflansch()
  Dim oSel As Selection
  Dim partDocument1 As PartDocument
  Dim length1 As Length
  Dim part1 As Part
  Dim parameters1 As Parameters
 
  On Error GoTo tropfenflansch_Error

  Set partDocument1 = CATIA.ActiveDocument
  Set part1 = partDocument1.Part
  Set parameters1 = part1.Parameters
 
  Set part1 = CATIA.ActiveDocument.Part
  Set oSel = CATIA.ActiveDocument.Selection
  oSel.Search "CATSmd_Search.PredefinedFlange.Type=TearDrop,all"
 
  If oSel.Count >= 1 Then
      For i = 1 To oSel.Count + 10
         
        Set length1 = parameters1.Item("Part1\Hauptkörper\Tropfen." & i & "\Länge")
        H = length1.Value
 
        MsgBox ("Tropfen." & i & " ist vorhanden und hat die Länge " & H & "")
      Next
  End If
  oSel.Clear

Exit Sub
'---------------------------------------------------------------------------------------
tropfenflansch_Error:
  Dim errMsg As String
  Dim errRet As VbMsgBoxResult

  Select Case Err.Number
'      Case 438
'          resume next
'      Case -2147467259 'automation error
      Case Else
        errMsg = Err.Number & ": " & Err.Description & " in procedure tropfenflansch"
        errRet = MyMsgBox(errMsg, vbOKOnly, "tropfenflansch")
  End Select

  'Resume Next                                          'fall thru to quit sub
'---------------------------------------------------------------------------------------
End Sub


Tschau,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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