Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1656to1660
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

Code Bedingung hinzufügen

Code Bedingung hinzufügen
16.11.2018 08:02:19
Michael
Benötige Hilfe bei unten stehendem Code.
Beschreibung: Der Code fügt in Regelmäßigen Abständen einen Adresskopf in eine Liste ein. Er beginnt in Zeile 91 (loStart = 91) fügt 3 Zeilen Adresse ein und wiederholt das, solange er Text vorfindet. Lief auch bisher super.
Nun wurde die Tabelle aber dahingehend geändert, das der erste Adresskopf, bereits
in der Tabelle vorhanden ist.
Was ich benötige ist eine weitere Bedingung, die folgendes ausführt/abfragt:
Wenn nichts in Zeile 91 steht, dann soll nichts gemacht werden.
Nur wenn in Zeile 91 Text vorhanden ist soll der Code wie er unten steht ausgeführt werden.
Habe selbst versucht die Bedingung zu formulieren: If loStart = "" Then Exit Sub. Wenn ich das aber vor die If loStart Anweisung in den Code einfüge, wird der Code leider auch beendet wenn in Zeile 91 noch Text vorhanden ist.
Bin für jede Hilfe Dankbar
Viele Grüße
Michael
  • 
    Sub Lieferschein()
    Dim loStart As Long
    Application.ScreenUpdating = False
    With Worksheets("Hamburg")
    loStart = 91
    Do
    If loStart > 91 Then loStart = loStart + 3
    Worksheets("IDHamburg").Rows("1:3").Copy
    .Rows(loStart).Insert
    Application.CutCopyMode = False
    loStart = loStart + 42
    Loop While .Cells(loStart, 1)  ""
    End With
    Application.ScreenUpdating = True
    End Sub
    

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Code Bedingung hinzufügen
    16.11.2018 09:27:40
    Herbert
    Hallo Michael,
    Option Explicit
    Sub Lieferschein()
    Dim loStart As Long
    Application.ScreenUpdating = False
    With Worksheets("Hamburg")
    loStart = 91
    If Cells(loStart, 1) = "" Then GoTo ende
    Do
    If loStart > 91 Then loStart = loStart + 3
    Worksheets("IDHamburg").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
    
    Servus
    AW: Code Bedingung hinzufügen
    16.11.2018 11:51:04
    Michael
    Hallo Herbert
    Habe "If Cells(loStart, 1) = "" Then GoTo ende" ausprobiert, das funktioniert leider nicht. Wenn ich den Code ausführe, stolpert er über GoTo ende. "Zeilennummer oder Sprungmarke nicht angegeben"
    Hast du noch einen anderen Vorschlag?
    Gruß
    Michael
    Anzeige
    AW: Code Bedingung hinzufügen
    16.11.2018 12:02:58
    Michael
    Hallo Herbert
    Habe die Lösung selbst gefunden:"If Cells(loStart, 1) = "" Then Exit Sub"
    Vielen Dank für deine Hilfe, so wusste ich wenigstens wo ich den Befehl einbauen musste.
    Viele Grüße
    Michael
    AW: Code Bedingung hinzufügen
    16.11.2018 12:37:59
    Herbert
    Hallo Michael,
    deine "Lösung" hat nur einen gravierenden Bug: ScreenUpdating wird dabei nicht auf "True" gesetzt! Und das gibt Probleme! Hast du meinen gesamten Code verwendet, oder nur die eine Zeile?
    Servus
    Das macht Excel...
    16.11.2018 13:23:16
    Werner
    Hallo Herbert,
    ...automatisch, sonst könntest du ja gar nicht mehr weiterarbeiten.
    Gruß Werner
    AW: Das macht Excel...
    16.11.2018 13:33:51
    Herbert
    Wenn du das nicht brauchst ist mir das auch egal, ich verwende es auf alle Fälle! Und wahrscheinlich setzt du auch die Set-Befehle nicht auf „Nothing“! Na ja, ich programmiere ja auch noch nicht so lange. Erst seit 1975! Aber ich lerne das schon noch!
    Servus
    Anzeige
    Das war evtl nicht immer so, ...
    16.11.2018 14:46:44
    Luc:-?
    Werner,
    und Herbert geht hier nur (aus gutem PgmmiererBrauch!) auf Nr Sicher (andere Software mit anderem VBA-Compiler ist häufig weniger tolerant und verlangt sogar strikte Einhaltung ursprünglicher VB-Syntax!).
    Ansonsten, Herbert,
    hat das Eine mit dem Anderen wenig zu tun. Die automatische Freigabe von Objekt-Variablen ist zweifelhaft (für manche auch die von Array-Variablen) und erfolgt zumindest bei Global-Variablen erst bei Schließen von Xl.
    Übrigens, ich pgmmiere seit 1970. Hier relevant sind aber erst die letzten 20 Jahre. Das dürfte bei dir auch nicht anders sein. Erhebt sich die Frage, was du in diesen 20 Jahren in VBA gemacht hast. Volle Durchdringung der (sperrigen) Materie…‽ ;-]
    🙈 🙉 🙊 🐵 Gruß, Luc :-?
    „Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
    Anzeige
    AW: Das war evtl nicht immer so, ...
    16.11.2018 16:26:51
    Werner
    Hallo Luc,
    ich kann nicht nachvollziehen warum jemand aufgrund einer ganz normalen, sachlichen Feststellung derart angep... sein muß.
    Der Hinweis bezüglich der Objektvariablen und deren Freigabe dürfte dann wohl eher dem Bereich "unsachlich" zugewiesen werden. Das dürfte dann wohl mit der eigentlichen Feststellung bezüglich Screenupdating ziemlich wenig zu tun zu haben, wie du ja bereits angemerkt hast.
    Keine Ahnung warum Herbert sich, aufgrund meiner Bemerkung, offensichtlich persönlich angegriffen fühlt.
    Es steht mir nicht zu hier im Forum jemanden zu kritisieren, zumal mir durchaus bewußt ist, dass meine VBA-Kenntnisse, im Vergleich zu vielen anderen hier, maximal über die Kinderschuhe hinausgewachsen sind.
    Es liegt mir fern jemanden persönlich angreifen zu wollen.
    Und damit ist für mich das Thema jetzt durch.
    Gruß Werner
    Anzeige
    Ja, das hatte mich auch etwas verwundert, Werner!
    16.11.2018 18:12:01
    Luc:-?
    Deshalb mein Nachsatz, denn nach meinem Eindruck in den letzten 10 Jahren, ist er in VBA kaum weiter als du… ;-]
    Luc :-?
    AW: Das war evtl nicht immer so, ...
    16.11.2018 18:37:03
    Herbert
    Hallo Werner,
    hiermit entschuldige ich mich für meine völlig überzogenen Post von vorhin. Es tut mir leid und ich gelobe Besserung! Ich weiß jetzt auch nicht mehr warum ich da so blöde darauf reagiert habe, aber es tut mir wirklich leid. Ich hoffe du kannst mir verzeihen!
    Servus und ein schönes WE.
    AW: Das war evtl nicht immer so, ...
    16.11.2018 20:12:35
    Werner
    Hallo Herbert
    alles gut. Ich konnte deine Reaktion nicht verstehen. Entschuldigung angenommen. Danke für deine Antwort
    Gruß Werner

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige