Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1668to1672
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

Überprüfung eines Codes

Überprüfung eines Codes
18.01.2019 17:28:27
Michael
Hallo Allerseits
Ich finde leider den Fehler nicht.
Der nachfolgende Code soll in einem Sheet überprüfen ob in Zeile 91 irgendetwas steht. Wenn dort etwas steht, dann fügt er 3 neue Zeilen ein, kopiert aus einem anderen Sheet, 3 Überschriften –Zeilen und fügt diese in die neuen Zeilen ein. Dieser Vorgang wird dann alle weiteren 42 Zeilen wiederholt, solange bis der Code leere Zeilen findet.
Das Problem ist, das der Code in jedem Fall in Zeile 91 Überschriften einfügt, auch wenn dort nichts steht. Ab dem zweiten Mal Überschriften einfügen, funktioniert der Code, wie erwartet.
Vielen Dank für eure Hilfe und Gruß
Michael
  • 
    Sub Überschriften()
    Dim loStart As Long
    Application.ScreenUpdating = False
    With Worksheets("Arbeitsaufwand")
    loStart = 91
    If Cells(loStart, 1) = "" Then GoTo Ende
    Do
    If loStart > 91 Then loStart = loStart + 3
    Worksheets("Tabelle1").Rows("1:3").Copy
    .Rows(loStart).Insert
    Application.CutCopyMode = False
    loStart = loStart + 42
    Loop While .Cells(loStart, 1)  ""
    End With
    Ende:
    Application.ScreenUpdating = True
    End Sub
    


  • 8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Überprüfung eines Codes
    18.01.2019 17:57:10
    onur
    "loStart = loStart + 42" - Soll direkt zum Ende springen?
    AW: Überprüfung eines Codes
    18.01.2019 19:03:39
    Luschi
    Hallo Michael,
    dieser Befehl: If loStart > 91 Then loStart = loStart + 3 kommt viel zu spät, da wurden
    schon 3 Zeilen eingefügt und aus 91 ist Zeile 94 geworden, deshalb so:
    
    Sub Ueberschriften()
    Dim loStart As Long
    Application.ScreenUpdating = False
    With Worksheets("Arbeitsaufwand")
    loStart = 91
    If Cells(loStart, 1) = "" Then GoTo Ende
    Do
    'If loStart > 91 Then loStart = loStart + 3
    Worksheets("Tabelle1").Rows("1:3").Copy
    .Rows(loStart).Insert
    Application.CutCopyMode = False
    loStart = loStart + 3 + 42
    Loop While .Cells(loStart, 1)  ""
    End With
    Ende:
    Application.ScreenUpdating = True
    End Sub
    
    Gruß von Luschi
    aus klein-Paris
    Anzeige
    AW: Überprüfung eines Codes
    19.01.2019 14:59:35
    Michael
    Hallo und vielen Dank für das Interesse an meiner Anfrage, und sorry für die späte Rückmeldung. War leider in der Zwischenzeit PC los.
    @onur und Luschi
    "loStart = loStart + 42" springt nicht gleich zum Ende und
    "loStart = loStart + 3 + 42" ist auch nicht die Lösung
    Nocheinmal die Beschreibung meines Problems mit anderen Worten: Eine Druckseite meiner Liste, umfasst 45 Zeilen. Die ersten beiden Seiten gibt es in jedem Fall. (Also 90 Zeilen) Der Code soll einfach überprüfen ob in Zeile 91 Spalte A "Cells(loStart, 1)" Text vorhanden ist oder nicht. Wenn dort Text ist, werden 3 Überschriften-Zeilen für die Dritte Druckseite eingefügt, anschließend prüft der Code ob 42 Zeilen tiefer immer noch Text steht (Mit Überschriften wieder 45 Zeilen = 1 Druckseite) und fügt wenn Text da ist wieder 3 Überschriften-Zeilen ein, für die 4.Druckseite. Erst wenn er auf keinen Text mehr trifft, wird nichts mehr eingefügt und der Code ist beendet.
    Wenn in Zeile 91 Text ist, läuft auch alles wie erwartet. Nur wenn in Zeile 91 kein Text ist, fügt der Code trotzdem Überschriften ein. Aber auch nur in Zeile 91, die restliche Routine (also der Loop ab Zeile 135) prüft dann wieder korrekt. Meiner Vermutung nach, ist der Fehler irgendwo hier:
    " If Cells(loStart, 1) = "" Then GoTo Ende" oder kann es sein das noch irgendwo ein "End IF" eingefügt werden muss?
    Viele Grüße
    Michael
    Anzeige
    AW: Überprüfung eines Codes
    19.01.2019 16:30:48
    Piet
    Hallo Michael
    ohne den ganzen Thread gelesen zu haben nur zur Goto Frage ein klares NEIN
    IF Then GoTo Ende - ist ein -Sprungbefehl- zum Label "Ende", da gibt es KEIN End İf!
    Im Fehlerfall meckert Excel durch Laufzeitfehler das er die Sprung-Adresse "Ende" nicht finden kann, mehr nicht!
    Dieser Sprungbefehl überspringt den ganzen anderen Code, bis zum Label Ende, der wir NICHT ausgeführt!!
    Benötigt wird er aber wenn zum Schluss wichtige Befehle stehen wie - Application.EnableEvetns = True
    Wo bestimmte Eigenschaften von Excel wieder in den -Urzustand zurückgesetzt- werden müssen!!
    Dann kann man IF Then xxx Exit Sub nicht nehmen! - Weil diese Eigenschaften dauerhaft verstellt bleiben!
    mfg Piet
    Anzeige
    AW: Überprüfung eines Codes
    19.01.2019 17:13:20
    Michael
    Hallo Piet
    Zitat:
    IF Then GoTo Ende - ist ein -Sprungbefehl- zum Label "Ende". Dieser Sprungbefehl überspringt den ganzen anderen Code, bis zum Label Ende, der wir NICHT ausgeführt!!
    Genau das soll er ja tun, wenn in Zeile 91 kein Text vorhanden ist
    Ende:
    Application.ScreenUpdating = True
    End Sub
    

    Aber die Prüfung = "" wird ignoriert, und es werden Überschriften eingefügt.
    Viele Grüße
    Michael
    AW: Überprüfung eines Codes
    19.01.2019 17:27:52
    Piet
    Hallo Michael
    ich habe gerade einen langen Text geschrieben was du alles prüfen kannst, aber ich glaube der Fehler liegt nur bei einem Punkt!!
    Der fehlt in der With Klammer!! - If Cells(loStart, 1) = "" Then GoTo Ende - Wo ist hier der Punkt vor If .Cells() ?
    mfg Piet
    Anzeige
    AW: Überprüfung eines Codes
    19.01.2019 17:45:55
    Michael
    Hallo Piet
    Habs mit Punkt ausprobiert. Nun läuft alles einwandfrei. Ein einziger Punkt fehlt! Mir wäre das nicht aufgefallen. Es gab auch nie irgendwelches gemecker oder so. Excel hat den Teil einfach ignoniert.
    Vielen, vielen Dank
    Gruß
    Michael
    AW: Überprüfung eines Codes
    20.01.2019 03:14:30
    Piet
    Hallo Michael
    danke für die Rückmeldung, freut mich das der Code jetzt einwandfrei laueft. Ignoriert hat es Excel NICHT!
    Heimtücke der With Klammer:
    Sie erleichtert die Programmier Arbeit sehr, ich nutze sie oft. Vergisst man den Punkt funktioniert der Code solange -einwandfrei- wie das Aktive Sheet mit der With Klammer identisch ist! Wechselst du das Blatt holt Excel sich den Vergleichswert aus dem aktiven Blatt! Genau das ist bei dir passiert, deswegen klappt der Code dann manchmal, und mal nicht! Ich habe nur mehr Erfahrung beim Suchen!
    mfg Piet
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige