Microsoft Excel

Herbers Excel/VBA-Archiv

zu Spungmarke in anderem Modul springen

Betrifft: zu Spungmarke in anderem Modul springen von: ela
Geschrieben am: 08.08.2014 15:23:01

Hallo,

ich bin gerade dabei meinen Code zu modularisieren.
Den Code den ich in Modul1 "outsource" enthält eine Sprungmarke, welche in Tabelle1 definiert ist.

Hier ein kurzes Codebsp:

Sub Test ()
dim zaehler as integer
dim nenner as integer

'code

'Aufruf der Prozedur in Modul 1 mit übergabe der werte von zähler und nenner
Modul1.teilen zaehler, nenner

'code

beenden:
'code

End Sub
Sub teilen(zaehler as integer, nenner as integer)
dim ergebnis as integer

on error goto beenden
ergebnis = zaehler/nenner
on error goto 0

End Sub

Geht es nun, dass wenn in Modul1.teilen() ein fehler auftritt, dass die prozedur abbricht und zur sprungmarke "beenden" in Tabelle1.Test springt?

Bzw wie programmiere ich das?

Vielen dank für eure Hilfe

Grüße
Ela

  

Betrifft: AW: zu Spungmarke in anderem Modul springen von: Arthur
Geschrieben am: 08.08.2014 15:34:57

Hallo Ela.

Beruhigender Weise geht das nicht - hoffentlich. Nutze dafür anstelle einer Sub eine Function und gebe als Returnwert die Erro.Number zurück. Damit bist du frei in Test() alles zu tun, was du möchtest.

Gruß, Arthur


  

Betrifft: AW: zu Spungmarke in anderem Modul springen von: Nepumuk
Geschrieben am: 08.08.2014 15:36:59

Hallo,

im Prinzip könntest du das so machen:

Sub Test()
    Dim zaehler As Integer
    Dim nenner As Integer
    
    'code
    
    'Aufruf der Prozedur in Modul 1 mit übergabe der werte von zähler und nenner
    If Modul1.teilen(zaehler, nenner) Then
        
        'code
        
    End If
    'code
    
End Sub
Public Function teilen(zaehler As Integer, nenner As Integer) As Boolean
    Dim ergebnis As Integer
    
    On Error GoTo err_exit
    ergebnis = zaehler / nenner
    teilen = True
    err_exit:
End Function

Oder du schleifst den Fehler in die Hauptroutine durch. Denn du willst ja wahrscheinlich nicht nur zum testen teilen, sondern du willst auch das Ergebnis zurück bekommen.

Sub Test()
    Dim zaehler As Integer
    Dim nenner As Integer
    Dim ergebniss As Integer
    
    On Error GoTo err_exit
    
    'code
    
    'Aufruf der Prozedur in Modul 1 mit übergabe der werte von zähler und nenner
    
    On Error GoTo Notausgang
    
    ergebniss = Modul1.teilen(zaehler, nenner)
    
    On Error GoTo err_exit
    
    'code
    
    Notausgang:
    
    On Error GoTo err_exit
    
    'code
    
    err_exit:
End Sub
Public Function teilen(zaehler As Integer, nenner As Integer) As Integer
    teilen = zaehler / nenner
End Function


Gruß
Nepumuk


 

Beiträge aus den Excel-Beispielen zum Thema "zu Spungmarke in anderem Modul springen"