Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
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

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

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
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
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

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige