Übrigens: der ganze Block - es gehört noch mehr dazu, das Makro läuft so natürlich nicht - wurde 2002 das letzte Mal angepasst. Probleme gab es bei der Umstellung auf das neue Excel-Format xlsx, das ist aber nicht das Problem.
da der Thread jetzt schon recht lang ist hab ich nicht alles gelesen. Daher meine Frage - hast Du mal den Zellinhalt mal z.B. mit Formeln geprüft? =CODE(...) =LÄNGE(...)
Wenn da ein Ergebnis kommt, dann ist man schon schlauer. Sind dort ein oder mehrere Leerzeichen = CODE(32), dann könnte man bei der Prüfung trimmen. If Trim(Cells(j + l, 3).Value) <> "" Then Ist es ein Steuerzeichen, dann vielleicht mit Replace entfernen If Replace(Cells(j + l, 3).Value, chr(10),"") <> "" Then
Übrigens bringt die Excel-Funktion "CODE" nur die Codezahl des ersten Zeichens das Zellinhaltes. Daher am Besten zusätzlich noch die Länge prüfen ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Womit wohl bewiesen ist, dass diese Zelle entgegen aller Unkerei hier wirklich leer ist, was ich aber schon andersweitig bewiesen habe. Vielleicht glauben jetzt auch die ewigen Zweifler dran.
20.07.2015, 18:30 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2015, 18:31 von Steffl.)
Hallo Charly,
Zitat:ich habe einen Code der in einer Spalte mit (Datumszellen) das die 1. Zelle finden muss, die belegt ist: dieser Teil läuft. Danach muss die erste Zelle gefunden werden, die leer ist. Das Makro läuft in diesem Schleifenteil leider über die leere Zelle hinaus und stoppt nicht, es macht hier absolut keinen Sinn, das komplette Makro hier rein zu stellen.
Du hast hier geschachtelte If-Anweisungen und wenn die erste If-Anweisung nicht erfüllt ist, kommt Excel eben nicht in die zweite If-Anweisung.
In der Schleife prüfst Du auf verschieden von leeren Zellen und nicht auf Leere: <> "". Für den Fall einer leeren Zelle hast Du keine Aktion programmiert.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
20.07.2015, 21:36 (Dieser Beitrag wurde zuletzt bearbeitet: 21.07.2015, 07:21 von Rabe.)
Hi,
(20.07.2015, 16:21)karomue schrieb: nein, so geht das nicht. Wie jetzt schon mehrfach gepostet. Nimms nich übel. aber ich bin es langsam leid bei jedem der sich hier äußert immer wiede die gleichen Einwände zu schreiben.
Jetzt antworte ich wie Du: Aber lesen kannst Du schon?
Mal ganz kurz: Du fragst mit Schleife 1, ist die Zelle A5 ungleich leer, wenn ja, dann gehe in Schleife 2 und frage dort, ist die Zelle A5 gleichzeitig gleich leer, dann "Stop". Und Du fragst immer noch: Warum stoppt Excel nicht?
Eine Zelle, die voll (also "ungleich leer") ist, kann nichtgleichzeitig leer sein! Was Du da programmiert hast, sind keine aufeinanderfolgenden Schleifen, sondern geschachtelte Schleifen. Der einzige Zweig der Schleife 1 (der Zweig: Ja, die Zelle ist nicht leer), geht um die zweite Schleife rum, die fragt, ist die Zelle leer. Das heßt, die zweite Schleife startet nur, wenn die Zelle nicht leer ist. Wie soll Excel also jemals zum Stop kommen?
Wenn Du ein bißchen VBA könntest oder nicht so großkotzig überheblich daherkommen würdest, würdest Du dir vielleicht mal das von mir zitierte erste Codebeispiel anschauen und Deinen Denkfehler sehen.
Wenn Du jetzt nochmal kommst und sagst: Ihr seid alle zu doof, der erste Schritt tut doch, warum tut dann der zweite nicht, dann schließe ich das Thema. Und das ist keine Drohung, sondern eine Ankündigung!
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28 • Fred0
Wenn Du jetzt nochmal kommst und sagst: Ihr seid alle zu doof, --> klar, !!!
Aber versuchen wirs mal anders rum:
Code:
Sub Test_leereZelle()
Cells(2, 2).Value = "und es " Cells(3, 2).Value = "geht doch " For i = 1 To 5 Cells(i, 2).Select If Cells(2, i) <> "" Then If Cells(2, i).Value = " " Then Stop End If End If Next i Cells(4, 2).Value = "schade"
Stop Cells.Select Cells.Clear End Sub
Lasst das mal laufen und aktiviert das Überwachungsfenster mit i und
Code:
Cells(2, i).Value
dann taktet im Einzelschritt durch und beobachtet die Ausgabe.
Und dann alle die so vollmundig gebrüllt haben das geht nicht !!! Gebt euern Account zurück denn ihr seid es nicht wert in einem Excell-Fachforum zu sein!! Setzt euch in die entfernteste Ecke in euerm Keller... Eine Entschuldigung wäre angebracht.
Ein unschönes hat das allerdings: ich dachte es wäre ein E_2007-Fehler, es werden aber bei E_365 auch keine leeren Zellen gefunden.
21.07.2015, 13:31 (Dieser Beitrag wurde zuletzt bearbeitet: 21.07.2015, 13:32 von Steffl.)
Hallo,
ich lasse mir das immer auch sehr gerne im Direktfenster (STRG + G) anzeigen.
Code:
Sub Test_leereZelle()
Cells(2, 2).Value = "und es " Cells(3, 2).Value = "geht doch " For i = 1 To 5 Debug.Print "Schleifenwert " & i Cells(i, 2).Select If Cells(2, i) <> "" Then Debug.Print "1. Bedingung: Zelle ist " & IIf(Cells(2, i) <> "", "gefüllt", "leer") If Cells(2, i).Value = " " Then Debug.Print "2. Bedingung: Zelle ist " & IIf(Cells(2, i) = " ", "leer", "gefüllt") Stop End If End If Next i Cells(4, 2).Value = "schade"
Stop Cells.Select Cells.Clear End Sub
Da wird bei mir die erste Bedingung nur einmal erfüllt und wie ist es bei dir?