Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Abbruch eines Makros bei Erreichen e.leeren Zeile

Abbruch eines Makros bei Erreichen e.leeren Zeile
18.09.2008 06:46:00
Josef
Guten Morgen!
Ich muß regelmäßig Textdateien in ein Arbeitsblatt einlesen lassen.
In dem nachfolgenden Makro Markierung_I werden die Zellen von I1 bis I10000 markiert und danach in diese Zellen die nachstehende Formel reinkopiert.
Wenn ich jedoch z.B. nur 180 Zeilen einlesen lassen muß, dann werden trotzdem die 10000 Formeln klarerweise eingetragen und abgearbeitet.
Formel:
Wenn in der Zeile in der ein Wert steht in der Spalte A kein Wert steht, dann wird in der Spalte I ein "NEIN" eingetragen. Steht in der Spalte A die Zahl 01 bis 09 dann wird ein "JA" eingetragen.
Wie kann ich es bitte ohne Select erreichen, dass nach der letzten wirklich vorhandenen Zeile in der ein Wert steht, der Eintrag der Formel beendet wird und der nächste Vorgang gestartet wird?

Sub Markierung_I()
Range("I1:I10000").Select
End Sub



Sub Formel_einfügen()
Dim rngCell As Range
For Each rngCell In Selection
rngCell.FormulaR1C1 = _
"=IF(OR(RC[-8]=""01"",RC[-8]=""02"",RC[-8]=""03"",RC[-8]=""04"",RC[-8]=""05"",RC[-8]="" _
06"",RC[-8]=""07"",RC[-8]=""08"",RC[-8]=""09""),""JA"",""NEIN"")"
Next
End Sub


Danke
Josef

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abbruch eines Makros bei Erreichen e.leeren Zeile
18.09.2008 07:15:00
Josef
Hallo nochmals!
Zu
Wie kann ich es bitte ohne Select erreichen, dass nach der letzten wirklich vorhandenen Zeile in der ein Wert steht, der Eintrag der Formel beendet wird und der nächste Vorgang gestartet wird?
Ich bin gerade daraufgekommen, dass es in dieser Textdatei dazwischen auch leere Zeilen gibt.
Bei diesen leeren Zeilen sollten die formel jedoch auch eingetragen werden. Erst am Schluss sollte der Abbruch erfolgen.
Danke
Josef
Anzeige
AW: Abbruch eines Makros bei Erreichen e.leeren Zeile
18.09.2008 07:38:00
firmus
Hallo Josef,
und wie ist das tatsächliche Ende erkennbar, da eine Leerzeile nicht zwingend das Ende bedeutet?
zum Thema:
gute Dienste lieferte mir die Funktion "FIND"...
Beispiel: leere Zelle in Spalte A suchen. In alle Zeilen daüber die Formel aus Zelle A2 kopieren.
Columns("A:A").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
nextoutrow = ActiveCell.Row
Range("A2").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[VL_Caselist_Support-issues-all.xls]caselist-cumm'!A1,1,FALSE)"
Selection.Copy
Range("A2:A" & nextoutcell).Select
ActiveSheet.Paste
Das sollte klappen.
Gruß,
firmus
Anzeige
AW: Abbruch eines Makros bei Erreichen e.leeren Zeile
18.09.2008 07:58:39
Josef
Hallo firmus!
Danke für Deine Antwort.
Habe gerade getestet mit folgendem Code:

Sub Test()
Columns("A:A").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
nextoutrow = ActiveCell.Row
Range("A2").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(RC[-8]=""01"",RC[-8]=""02"",RC[-8]=""03"",RC[-8]=""04"",RC[-8]=""05"",RC[-8]=""06"",RC[- _
8]=""07"",RC[-8]=""08"",RC[-8]=""09""),""JA"",""NEIN"")"
Selection.Copy
Range("A2:A" & nextoutcell).Select
ActiveSheet.Paste
End Sub


Bekam bei "Range("A2:A" & nextoutcell).Select" folgenden Fehlerhinweis:
Die Methode Range für das Objekt Global ist fehlgeschlagen.
Josef

Anzeige
AW: Abbruch eines Makros bei Erreichen e.leeren Zeile
18.09.2008 08:20:09
Josef
Hallo firmus!
Normalerweise müßte es ja reichen , in der Spalte nur dann einen Wert mittels einer Formel zu setzen, wenn in der Spalte A die Zahl 01-09 vorkommt und dann einen Makroabbruch durchzuführen.
Dann könnte man ja das Problem mit den Leerzeilen komplett weglassen, oder irre ich mich hier wieder mal?
Josef
Anzeige
AW: Abbruch eines Makros bei Erreichen e.leeren Zeile
18.09.2008 10:46:18
firmus
Hi Josef,
Deine ursprüngliche Zielsetzung:
- Formel nicht 10000 mal kopieren.
- Kriterium für "Letzte Zeile" kann nicht "leere Zelle Annn" sein,
da leere Zeilen dazwischen existieren.
Dein Ansatz:
"Normalerweise müßte es ja reichen , in der Spalte nur dann einen Wert mittels einer Formel zu setzen,
wenn in der Spalte A die Zahl 01-09 vorkommt und dann einen Makroabbruch durchzuführen.
Dann könnte man ja das Problem mit den Leerzeilen komplett weglassen,...."
Warum nicht: Es fehlt das Endekritium, um die Anzahl der relevanten Zeilen festzustellen.
vermutliche Lösung:
vom Ende (Zeile 10000) rückwärts (per Schleife) prüfen ob in Spalte A die Zelle nnn nicht-leer ist.
Diese Zeile ist dann definitiv das Ende des zu bearbeitenden Bereichs.
Wie die Lösung zu Deiner Problemstellung aussieht: siehe https://www.herber.de/bbs/user/55486.xls
Gruß
Firmus
Anzeige
AW: Abbruch eines Makros bei Erreichen e.leeren Zeile
18.09.2008 10:22:16
David
Hallo Josef,
ermittele die letzte benötigte Zeile per
Cells.SpecialCells(xlLastCell).Row
und nimm keine "For Each"-Schleife, sondern eine "For Next"-Schleife:
For I=1 to Cells.SpecialCells(xlLastCell).Row
Gruß
David

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige