funktion entgültig beenden

  • #1
B

Billy

Guest
hi all

mal ne kleine frage

gibst nen Befehl der mir eine funktion endgültig beendet?

beispiel

Code:
if x >= spalte_total Then
msgbox (ERROR!)
{nichts mehr machen aber noch auf dem Tabellenblatt bleiben }
end if

so etwas

mfg billy / fire-x
 
  • #2
Hi billy,

folgend Abbrüche sind die gebräulichsten:
Code:
Sub Test1()
  Dim x As Long
  For x = 1 To 10
    If x = 7 Then
      MsgBox (Die Subroutine wird jetzt verlassen !)
      Exit Sub
    End If
  Next
End Sub

Function Test2()
  Dim x As Long
  For x = 1 To 10
    If x = 7 Then
      MsgBox (Die Function wird jetzt verlassen !)
      Exit Function
    End If
  Next
End Function

Function Test3()
  Dim x As Long
  For x = 1 To 10
    If x = 7 Then
      MsgBox (Die For-Schleife wird jetzt verlassen !)
      Exit For
    End If
  Next
End Function

Function Test4()
  Dim x As Long
  Do
    If x = 7 Then
      MsgBox (Die Do-Schleife wird jetzt verlassen !)
      Exit Do
    End If
    x = x + 1
  Loop
End Function
Gruß Matjes  :)
 
  • #3
interessant

also kann ich anstatt for auch loop benutzen?

wo ist der hacken? *gg*
 
  • #4
In der For-Schleife werden Anfangs-, Endparameter und Schrittweite von vornherein gesetzt.

In der Do-Schleife mußt du selbst dafür sorgen.

Die Gefahr in der Do-Schleife eine Endlosschleife zu produzieren ist groß !

Gruß Matjes :)
 
  • #5
ja das risiko gehe ich gerne ein ^^

weil eine for schlaufe kann ich ja nicht einfach so beenden oder? :'(
 
  • #6
Doch, siehe Function Test3 ;)
 
  • #7
hm

ich denke mal ich hab das Problem soweit unter kontrolle sonst melde ich morgen nochmals :)

ich hab noch ein ander Problem auch basierend auf das.

ich ne call funktion auf nem worksheet

diese öffnet eine funktion und die widerum in sich selber eine neue call aufruft... (hoffe verstehst was ich meine)

nun wie kann ich verhindern dass die 2. call funktion mehrmals aufgerufen wird?

kann man das überhaupt?
 
  • #8
Ich glaub ich ahne was Du meinst  ;D

Mach einen neuen Thread auf mit einem kleinen Beispiel (nur die Funktions-Rümpfe). So ist das etwas in blauem Dunst.

Gruß Matjes :)
 
  • #9
mach ich

aber erst morgen wenn ich im geschäft bin =)
 
  • #10
oke

ich hab jetzt eine Funktion gemacht die macht soweit das was ich mach blos das mit dem beenden geht nicht =(

steht was von wegen Kompilierungsfehler

Code:
Code:
Option Explicit
Function mark_fuehrer(ws As Worksheet, s_fkurz, s_fname, anfang_spalte, ende_spalte, _
                      anfang_zeile, ende_zeile, fuehrer_zeile)
'MsgBox (mark_fuehrer)
Dim Zelle As Range, Bereich As String, columns As Long
Bereich = anfang_spalte & anfang_zeile & : & ende_spalte & ende_zeile

columns = ws.Range(Bereich).columns.Count - 1

Dim x As Long, y As Long, fuehrer As Long, fuehrer_spalte As String, fmsg_spalte As Long
fuehrer = 0

For x = 2 To columns
 For y = anfang_zeile To ende_zeile
  If Cells(y, x) = s_fkurz Then
   fuehrer = fuehrer + 1
   If fuehrer >= 2 Then
    fuehrer_spalte = fuehrer_spalte & ,  & Cells(y, x).Address(rowabsolute:=False, Columnabsolute:=False)
   Else
    fuehrer_spalte = Cells(y, x).Address(rowabsolute:=False, Columnabsolute:=False)
   End If
  End If
 Next
 
->MsgBox (s_fkurz &  <-- Bezeichnung Führer || fuehrer=  & fuehrer &  <->  & fmsg_spalte &  .  & x)
 
 If fuehrer >= 2 And x > fmsg_spalte Then
  MsgBox (Der Führer  & s_fname &  kommt in den Zeilen: & vbLf & fuehrer_spalte & vbLf & vor. Bitte Ändern!)
  fmsg_spalte = x
  Application.EnableEvents = False
  Cells(fuehrer_zeile, x).Value = 
  Application.EnableEvents = True
  fmsg_spalte = x
  End Function
 End If
 
 fuehrer = 0
 fuehrer_spalte = !
Next

End Function
 
  • #11
Hi billy,

8. Zeile von unten ändern in
Code:
     Exit Function

Gruß Matjes  :)
 
  • #12
danke ;D
 
Thema:

funktion entgültig beenden

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben