Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
384to388
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
384to388
384to388
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler in der Schleife

Fehler in der Schleife
19.02.2004 17:15:21
Christoph
Hallo Leute könnt Ihr euch bitte folgende code anschauen und sagen warum er die Schleife immer nur ein mal durchläuft und nicht solgange der name gleich bleibt??

Sub test()
name = Cells(41, 2)
pruefung = name
zeile = 3
ausgabe = 52
art = "Carriermanagement Festnetz"
art2 = "Carriermanagement Mobilfunk"
art3 = "VODAFONE Grundgebühr"
Do While pruefung = name
If Cells(zeile, 4) = art Then Cells(ausgabe, 3) = 1 Else
If Cells(zeile, 4) = art2 Then Cells(ausgabe, 4) = 2 Else
If Cells(zeile, 4) = art3 Then Cells(ausgabe, 5) = 3 Else
zeile = zeile + 1
pruefung = Cells(zeile, 2)
Loop
End Sub

Danke Chris

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in der Schleife
19.02.2004 17:21:49
Jan P
Hallo Chris,
das liegt glaube ich an folgendem:
Du setzt pruefung=name, wobei name aus der Zelle 41,2 geholt wird. Dann ist aber in der Schleife der Wert pruefung beim ersten Schleifendurchlauf der Wert aus Zelle 4,2.
Der ist vermutlich nicht mit dem aus Zelle 41,2 (name) identisch, also Abbruch.
Weiß leider nicht, was Du erreichen möchtest, also kann ich keinen Tipp zur Fehlerbehebung geben.
MfG Jan
AW: Fehler in der Schleife
19.02.2004 17:26:57
Christoph
eigentlich müsste es schon identisch sein denn das excel blatt schaut folgendermassen aus:
michi
michi
michi
chris
chris
andy
andy
und in zelle 41,2 steht michi drinen und er sollte also 3 mal die schleife durchlaufen, macht er aber nicht???
Anzeige
AW: genauer bitte....
19.02.2004 17:30:59
Jan P
Was steht in den Zellen 4,2 5,2 6,2 ???
Wie und wo sind die Variablen definiert?
AW: genauer bitte....
19.02.2004 17:43:16
Christoph
hi, also es schaut so aus
A B C D
3 | | michi| | Carriermanagement Festnetz
4 | | michi | Carriermanagement Festnetz
5 | | michi | XP ICM CSA-Pauschale
6 | | chris |
7 | | chris |
8

und die idee ist die folgende in Zelle (2,41) schreibe ich einen namen rein (in diesem fall michi) dann soll mir das programme einen Wert ausgeben, wenn der Name und die "art" (definiert mit der if-abfrage) stimmt sonst soll er nichts tun.
und hier noch mal der kommentierte code:

Sub test()
Dim name As String
Dim purefung As String
name = Cells(41, 2)     'Hole dir name aus Zelle 41,2 in meinem Fall steht dort michi
pruefung = name         'Setze Prüfung gleich Name
zeile = 3
ausgabe = 52
art = "Carriermanagement Festnetz"          'Danach soll in den If-Abrfagen in der schleife gefragt werden
art2 = "Carriermanagement Mobilfunk"
art3 = "VODAFONE Grundgebühr"
Do While pruefung = name                    'solange Pfüfung, also die Laufvariable gleich michi wdh.
If Cells(zeile, 4) = art Then
Cells(ausgabe, 3) = 1
End If
If Cells(zeile, 4) = art2 Then
Cells(ausgabe, 4) = 2
End If
If Cells(zeile, 4) = art3 Then
Cells(ausgabe, 5) = 3
End If
zeile = zeile + 1
pruefung = Cells(zeile, 2)
Loop
End Sub

Anzeige
AW: Prüff mal bitte folgendes...
19.02.2004 17:49:43
Jan P
Setz mal in den einzelnen Abschnitten Deines Codes Message-Boxes ein und lass Dir immer die Werte der einzelnen Variablen anzeigen.
Iich kann sonst später erst leider wieder einmal den Code direkt ausprobieren....
Gruß
AW: Prüff mal bitte folgendes...
19.02.2004 18:04:43
Christoph
habe nach einem tipp vom alex die if abfrag wie folgt umgebasstelt:
Do While pruefung = name
If Cells(zeile, 4) = art Then
Cells(ausgabe, 3) = 1

ElseIf Cells(zeile, 4) = art2 Then
Cells(ausgabe, 4) = 2

ElseIf Cells(zeile, 4) = art3 Then
Cells(ausgabe, 5) = 3

End If

zeile = zeile + 1
pruefung = Cells(zeile, 2)
Loop
folgendes ist mir bei deinem msgbox test aufgefallen: in der schleife hat der wert pruefung wenn ich ihm mit Msgbox(pruefung) ausgeben lasse keinen wert. Sowohl in der if abfrage wie auch am ende der schleife. woran könnte das liegen
Anzeige
AW: Prüff mal bitte folgendes...
19.02.2004 18:11:50
Alex K.
Hallo Christoph,
noch einmal den Tipp, setzte einen Haltepunkt und schaue dir die Variablenwerte an. Sonst fummelst du ewig mit MsgBox und rätselt.
Eine Möglichkeit wäre, prüfung in pruefung umzubennen, vielleicht hat Office XP mit dem Umlaut Schwierigkeiten.
Wie gesagt, Trace das Ganze mal.
kurze berichtigung
19.02.2004 18:14:02
Christoph
sorry kurze berichtigung..
er gibt einen wert für msgbox(prüfung) zurück aber nur in der erste if abrage in die zweite kommt er gar nichtl. Liegt aber am else if also habe ich es wieder auf endif umgestellt.
Aber dann springt er immer noch nicht in die zweite if abfrage sondern nur in die erste und wenn er die dann verläst verläst er auch die schleife
Anzeige
kurze berichtigung
19.02.2004 18:14:10
Christoph
sorry kurze berichtigung..
er gibt einen wert für msgbox(prüfung) zurück aber nur in der erste if abrage in die zweite kommt er gar nichtl. Liegt aber am else if also habe ich es wieder auf endif umgestellt.
Aber dann springt er immer noch nicht in die zweite if abfrage sondern nur in die erste und wenn er die dann verläst verläst er auch die schleife
AW: kurze berichtigung
19.02.2004 18:26:11
Alex K.
Hallo Chris,
stelle bitte noch einmal den jetztigen Code vollständig ein. Sehr mysteriös, was du da erzählst.
Mit der If ElseIf Abfrage ist es so, dass die zweite Abfrage nur durchlaufen wird, wenn die erste If Abfrage nicht zutraf. Da das End If aber vor der Zuweisung von pruefung = steht, wird dieser Teil auf jeden Fall durchlaufen. Es sei denn, ein Fehler tritt auf und er verlässt deshalb die Prozedur.
Anzeige
AW: kurze berichtigung
19.02.2004 18:30:31
Christoph
Hi
habe die Datei unter:

Die Datei https://www.herber.de/bbs/user/3806.xls wurde aus Datenschutzgründen gelöscht

hochgeladen:
es sind zur zeit nur spielereien und deswegen ist der code noch einbisschen spagethi artig, aber hoffentlich noch verstädlich.
AW: kurze berichtigung
19.02.2004 18:49:20
Alex K.
Hallo Chris,
das war eine Super-Idee. Fehler auf Anhieb gefunden.
Der Name hier hat in Zelle B41 gefehlt. Diese fragst du mit pruefung = Cells(41,2) ab!! Warum hast du dort keinen Namen eingetragen, so kann das Makro nicht funktionieren.
Ausserdem fragst du nach den Nachnamen ab, da in Spalte B der Nachname steht und nicht der Vorname. Somit also nicht den Vornamen in B41 eintragen, sondern den Nachnamen!!!!
Ich habe mal die Sache für "Grande" angepasst und das Makro / Tabellenblatt mit Kommentaren versehen!

Die Datei https://www.herber.de/bbs/user/3807.xls wurde aus Datenschutzgründen gelöscht

Anzeige
AW: Fehler in der Schleife
19.02.2004 17:43:28
Alex K.
Hallo Chris,
lass in der Zeile
If Cells .. Else
das Else hinten weg. Ist mir nicht ganz klar, was das soll, da es keine Wirkung hat.
WEnn du IF Else haben willst, dann so

If Cells(zeile, 4) = art Then
Cells(ausgabe, 3) = 1
ElseIf Cells(zeile, 4) = art2 Then
Cells(ausgabe, 4) = 2
ElseIf Cells(zeile, 4) = art3 Then
Cells(ausgabe, 5) = 3
End If

Ansonsten stetze mal einen Haltepunkt in der Zeile
Do While pruefung = name
und schaue mal Step by Step was in den Variblen drinsteht. So kommst du am Schnellsten zum Fehler.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige