Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler: Überspringen einer Schleife

Fehler: Überspringen einer Schleife
02.05.2022 14:38:20
Jonas
Hey, ich habe folgendes Problem:
Ich möchte aus einem Sheet ("Hilfsblatt") gewisse Werte auslesen. Sagen wir in einer Spalte steht der Name in der zweiten ein Status zu diesem und in einer dritten eine Gruppierung.
Nun gibt es zu jeder Gruppierung ein extra Blatt in welchem die Namen und deren Status stehen.
Es soll dann in der ersten Tabelle der Status händisch aktualisiert werden. Auf Knopfdruck soll dann der Status zu allen Namen in den dazugehörigen Tabellenblättern der Gruppierungen aktualisiert werden.
Es nimmt sich also den Namen und die Zeile dessen. Entscheidet welches Sheet er nimmt. Sucht in diesem nach den Namen und ändert den Status, welcher in der selben Zeile steht.
Ich hab nun das Problem, dass in meinem folgenden Code irgendwie die Schleife nur einmal durchlaufen wird und alles was hinter dem End If steht wird ignoriert.
Ich danke für eure Hilfe, der Code ist folgender:
letztezeile = Worksheets("Hilfsblatt").Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Integer
For i = 2 To letztezeile
name = Range("A" & i)
status = Worksheets("Hilfsblatt").Cells(i,3).Value
If Worksheets("Hilfsblatt").Cells(i, 2).Value = "*Gruppe2*" Or Worksheets("Hilfsblatt").Cells(i, 2).Value.Value = "*G2*" Then
variablesheet= "WorksheetGruppe2"
ElseIf Worksheets("Hilfsblatt").Cells(i, 2).Value = "*Gruppe0*" Or Worksheets("Hilfsblatt").Cells(i, 2).Value = "*G0*" Then
variablesheet= "WorksheetGruppe0"
ElseIf Worksheets("Hilfsblatt").Cells(i, 2).Value = "*Gruppe5*" Or Worksheets("Hilfsblatt").Cells(i, 2).Value = "*G5*" Then
variablesheet= "WorksheetGruppe5"
ElseIf Worksheets("Hilfsblatt").Cells(i, 2).Value = "*Gruppe1*" Or Worksheets("Hilfsblatt").Cells(i, 2).Value = "*G1*" Then
variablesheet= "WorksheetGruppe1"
Else:
MsgBox ("Für mindestens einen Wert wurde kein passendes Tabellenblatt gefunden. Das Übertragen wurde abgebrochen")
Exit For
End If
namenszeile = Sheets(variablesheet).Columns("A:A").Find(What:=name, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
atchCase:=False, SearchFormat:=False).Row
Worksheets(variablesheet).Cells(namenszeile, 3).Value = status
Next i

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler: Überspringen einer Schleife
02.05.2022 14:57:12
Rudi
Hallo,
etwas übersichtlicher:

Dim LetzteZeile As Long, i As Long, NamensZeile As Long
Dim strName As String, strVariableSheet As String, vntStatus
With Worksheets("Hilfsblatt")
LetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To LetzteZeile
strName = .Cells(i, 1)
vntStatus = .Cells(i, 3).Value
Select Case .Cells(i, 2)
Case "*Gruppe2*", "*G2*": strVariableSheet = "WorksheetGruppe2"
Case "*Gruppe0*", "*G0*": strVariableSheet = "WorksheetGruppe0"
Case "*Gruppe5*", "*G5*": strVariableSheet = "WorksheetGruppe5"
Case "*Gruppe1*", "*G1*": strVariableSheet = "WorksheetGruppe1"
Case Else
MsgBox ("Für mindestens einen Wert wurde kein passendes Tabellenblatt gefunden. Das Übertragen wurde abgebrochen")
Exit For
End Select
NamensZeile = Sheets(strVariableSheet).Columns("A:A").Find(What:=strName, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
Worksheets(strVariableSheet).Cells(NamensZeile, 3).Value = vntStatus
Next i
End With
mehr kann man ohne Mappe nicht sagen.
Gruß
Rudi
Anzeige
AW: Fehler: Überspringen einer Schleife
03.05.2022 09:09:04
Jonas
Danke erstmal für die Antwort, ich habe mal eine Mappe nach dem Beispiel erstellt. Es besteht immer das Problem, dass er es scheinbar nicht richtig ausliest und somit immer sagt, dass er kein passendes Arbeitsblatt findet.
Danke für die Hilfe!
https://www.herber.de/bbs/user/152812.xlsm
AW: Fehler: Überspringen einer Schleife
03.05.2022 10:13:12
peterk
Hallo

Sub SORTIEREN()
Dim LetzteZeile As Long, i As Long, NamensZeile As Long
Dim strName As Long, strVariableSheet As String, vntStatus
With Worksheets("Hilfsblatt")
LetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To LetzteZeile
strName = .Cells(i, 1)
vntStatus = .Cells(i, 3).Value
If .Cells(i, 2).Value Like "*Gruppe2*" Or .Cells(i, 2).Value Like "*G2*" Then
strVariableSheet = "WorksheetGruppe2"
ElseIf .Cells(i, 2).Value Like "*Gruppe0*" Or .Cells(i, 2).Value Like "*G0*" Then
strVariableSheet = "WorksheetGruppe0"
ElseIf .Cells(i, 2).Value Like "*Gruppe5*" Or .Cells(i, 2).Value Like "*G5*" Then
strVariableSheet = "WorksheetGruppe5"
ElseIf .Cells(i, 2).Value Like "*Gruppe1*" Or .Cells(i, 2).Value Like "*G1*" Then
strVariableSheet = "WorksheetGruppe1"
Else
MsgBox ("Für mindestens einen Wert wurde kein passendes Tabellenblatt gefunden. Das Übertragen wurde abgebrochen")
Exit For
End If
NamensZeile = Sheets(strVariableSheet).Columns("A:A").Find(What:=strName, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
Worksheets(strVariableSheet).Cells(NamensZeile, 3).Value = vntStatus
Next i
End With
End Sub
Peter
Anzeige
AW: Fehler: Überspringen einer Schleife
03.05.2022 12:14:07
Rudi
Hallo,

Sub SORTIEREN()
Dim LetzteZeile As Long, i As Long, NamensZeile As Long
Dim strName As String, strVariableSheet As String, vntStatus
Dim strCheck As String
With Worksheets("Hilfsblatt")
LetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To LetzteZeile
strName = .Cells(i, 1)
vntStatus = .Cells(i, 3).Value
strCheck = LCase(.Cells(i, 2))
Select Case True
Case strCheck Like "*gruppe2*", strCheck Like "*g2*": strVariableSheet = "WorksheetGruppe2"
Case strCheck Like "*gruppe0*", strCheck Like "*g0*": strVariableSheet = "WorksheetGruppe0"
Case strCheck Like "*gruppe5*", strCheck Like "*g5*": strVariableSheet = "WorksheetGruppe5"
Case strCheck Like "*gruppe1*", strCheck Like "*g1*": strVariableSheet = "WorksheetGruppe1"
Case Else
MsgBox ("Für mindestens einen Wert wurde kein passendes Tabellenblatt gefunden. Das Übertragen wurde abgebrochen")
Exit For
End Select
NamensZeile = Sheets(strVariableSheet).Columns(1).Find( _
What:=strName, LookIn:=xlValues, LookAt:=xlPart).Row
Worksheets(strVariableSheet).Cells(NamensZeile, 3).Value = vntStatus
Next i
End With
End Sub
Gruß
Rudi
Anzeige

93 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige