In einer For-Schleife Bedingung nicht erfüllt dann..
#1
Hi zusammen,

ich habe eine For Schleife in der folgender Inhalt vorkommt.

   
    If rng Is Nothing Then
        Fehler = Fehler + 1
        Exit For
    End If
   

Doch anstatt des Exit for würde ich gerne dass er die Variable i um einen erhöht und wieder am anfang der Forschleife mit dem erhöhtem i-Wert weiter macht.

Wie bekomm ich das hin?

Vielen dank schonmal.

:)
Top
#2
Code:
Next i
Schöne Grüße
Berni
Top
#3
Dann wirft er den Fehler ... next ohne for.. weil die For schleife ja nicht in der If anweisung drin ist :(


Code:
Sub Suchen()

Dim Eingabe As String
Dim rng As Range
Dim i As Integer

Fehler = 0

For i = 15 To 16

   '-----------Quellen-----------
   ID = Sheets(2).Cells(i, 1)
   DT = Sheets(2).Cells(i, 5)
   ML = Sheets(2).Cells(i, 6)
   BE = Sheets(2).Cells(i, 8)
   FB = Sheets(2).Cells(i, 9)
   AK = Sheets(2).Cells(i, 10)
   
   Eingabe = Left(Sheets(2).Range("B" & i), 7)
   
   '------Hier wird in blatt aktivitäten B"x" als Such wert genommen------
   
   Set rng = Workbooks("Kühlturm_Tagebuch").Sheets(1).Range("C1:C100").Find(Eingabe)
   
   '------Suchen in der Datei  im Übersichtsblatt nach der Maschine und dem Blatt-----
   
   If rng Is Nothing Then
       Fehler = Fehler + 1
       Next i
   End If
   
   '-----------Zielblatt festlegen-------------
   Ziel = Workbooks("Kühlturm_Tagebuch").Sheets(1).Range("B" & rng.Row).Value
   Debug.Print Ziel
   
   '-------Bereich definieren-------
   
   LRow = Sheets(Ziel).Range("A19").End(xlDown).Row + 1
   
   'Windows("Kühlturm_Tagebuch.xlsm").Activate
   Sheets(Ziel).Cells(LRow, 1) = ID 'ETZ-ID_ Quelle: "A"
   Sheets(Ziel).Cells(LRow, 2) = DT 'Datum _ Quelle: "E"
   Sheets(Ziel).Cells(LRow, 3) = ML 'Melder _ Quelle: "F"
   Sheets(Ziel).Cells(LRow, 4) = BE 'Beschreibung_ Quelle: "H"
   Sheets(Ziel).Cells(LRow, 5) = FB 'FehlerB._ Quelle: "I"
   Sheets(Ziel).Cells(LRow, 6) = AK 'Aktivität _ Quelle: "J"
   
Next i

Sheets(Ziel).Select

End Sub
Top
#4
Hallo,

Zitat:Dann wirft er den Fehler ... next ohne for.. weil die For schleife ja nicht in der If anweisung drin ist :(

... gelöscht, weil meine Frage schon beantwortet ist
Top
#5
Du hast ja jetzt auch 2 x Next i drinstehen.
Deine Frage vorhin war dermaßen unkonkret, dass du nur eine unkonkrete Antwort bekommen konntest

Code:
  If rng Is Nothing Then
      Fehler = Fehler + 1
      GoTo weitermachen
  End If

und weiter unten
Code:
weitermachen:
Next i
Schöne Grüße
Berni
Top
#6
Sry dafür.

Habs hinbekommen:


Code:
Sub Suchen()

Dim Eingabe As String
Dim rng As Range
Dim i As Integer

Fehler = 0

For i = 8 To 12

   '-----------Quellen-----------
   ID = Sheets(2).Cells(i, 1)
   DT = Sheets(2).Cells(i, 5)
   ML = Sheets(2).Cells(i, 6)
   BE = Sheets(2).Cells(i, 8)
   FB = Sheets(2).Cells(i, 9)
   AK = Sheets(2).Cells(i, 10)
   
   Eingabe = Left(Sheets(2).Range("B" & i), 7)
   
   '------Hier wird in blatt aktivitäten B"x" als Such wert genommen------
   
   Set rng = Workbooks("Kühlturm_Tagebuch").Sheets(1).Range("C1:C100").Find(Eingabe)
   
   '------Suchen in der Datei  im Übersichtsblatt nach der Maschine und dem Blatt-----
   
   If rng Is Nothing Then
       Fehler = Fehler + 1
       Debug.Print "Fehler"
       
   Else
       '-----------Zielblatt festlegen-------------
       Ziel = Workbooks("Kühlturm_Tagebuch").Sheets(1).Range("B" & rng.Row).Value
       Debug.Print Ziel
   
       '-------Bereich definieren-------
   
       LRow = Sheets(Ziel).Range("A19").End(xlDown).Row + 1
   
       'Windows("Kühlturm_Tagebuch.xlsm").Activate
       Sheets(Ziel).Cells(LRow, 1) = ID 'ETZ-ID_ Quelle: "A"
       Sheets(Ziel).Cells(LRow, 2) = DT 'Datum _ Quelle: "E"
       Sheets(Ziel).Cells(LRow, 3) = ML 'Melder _ Quelle: "F"
       Sheets(Ziel).Cells(LRow, 4) = BE 'Beschreibung_ Quelle: "H"
       Sheets(Ziel).Cells(LRow, 5) = FB 'FehlerB._ Quelle: "I"
       Sheets(Ziel).Cells(LRow, 6) = AK 'Aktivität _ Quelle: "J"
       Debug.Print "OK"
       
   End If
   
Next i


End Sub
Top
#7
Hallo,

mal ein paar Anmerkungen.

1 .Du hast hier die Variablen Fehler und Ziel nicht in der Prozedur deklariert.
2. Ich gehe mal davon aus, das die Variable Fehler nicht als Modulvariable oder als globale Variable deklariert ist, dann ist eine Anweisung Fehler = 0 nicht nötig.
3. Ich würde in der Find-Methode die optionalen Parameter Lookat und LookIn mit angebenn ansonsten kannst Du ein falsches Ergebnis erhalten (siehe OH zur Find-Methonde).
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Terades
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste