Clever-Excel-Forum

Normale Version: Leerzellen ausfüllen läuft auf Fehler
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Guten Morgen zusammen,

mein Makro (aufgenommen im Rekorder) sucht nach Leerzellen und füllt diese mit "TBA" aus.
Bisher hatte ich immer Listen, in denen mindestens eine Leerzelle auftaucht, so dass der Rest des Makros dann ohne Probleme weiterlief.
Nun habe ich das erste Mal eine Liste ohne Leerzellen, so dass das Makro dann (nicht überraschend) einen Laufzeitfehler anzeigt, weil er keine Leerzellen finden und somit ausfüllen konnte.
Nun die Frage, wie kann ich das Makro so erweitern, dass für den Punkt geschaut wird, ob es Leerzellen gibt, die dann ausgefüllt werden und falls nicht, dass der Teil dann übersprungen und mit dem restlichen Makro weitergemacht wird?

Momentan sieht der Teil so aus:

Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "TBA"

Danke für Eure Hilfe!
Gruß
Fanny
Hi,

mit diesem Makro, welches so garnicht läuft, werden alle Zellen von A1 bis C1048576 ausgewählt. Was soll das werden????

Präzisiere mal Deine Wünsche, am Besten mit Hilfe einer Mustertabelle und des kompletten Makros.
Hi,

Code:
With Range("A1:C1")
    If .SpecialCells(xlCellTypeBlanks).Cells.Count > 0 Then .SpecialCells(xlCellTypeBlanks) = "TBA"
End With
Hallo Ralf, 

vielen Dank, aber leider bekomme ich hierbei auch den Laufzeitfehler 1004 mit dem Hinweis, dass keine Leerzellen gefunden wurden.
Im Debugger wird der Part gelb eingefärbt: 

 If .SpecialCells(xlCellTypeBlanks).Cells.Count > 0 Then

Gruß
Fanny

Hallo Edgar, 

ich würde nicht sagen, dass das Makro so gar nicht läuft, denn wenn ich Leerzellen enthalten habe, läuft es ohne Probleme.
Das ganze Makro ist relativ lang und kann ich leider nicht posten, weil daraus Internas hervorgehen.
Da ich das Makro mit dem Rekorder aufnahm, habe ich die Spalten A bis C markiert, da meine Listen immer variabel sind und ich es dadurch bei der Aufnahme mit nicht end machen konnte.

Um meine Wünsche zu präzisieren: 

Ich habe eine Tabelle, in die ich immer unterschiedliche Daten einkopiere und die durch das Makro in eine andere Tabelle umgeschrieben werden.
Alle Leerzellen, die in den Spalten A bis C enthalten sind, möchte ich durch "TBA" ausfüllen lassen.

Das funktioniert so lange, wie ich auch Leerzellen habe, wenn ich jedoch keine habe, dann stoppt das Makro hier, weil er nichts zum Ausfüllen findet. Also möchte ich das gerne so umgehen, dass nur geschaut wird, OB Leerzellen da sind, die ausgefüllt werden müssen (und dann ausgefüllt werden) und falls nicht, dass der Teil dann übersprungen wird.

Gruß
Fanny
Was bietet 'TBA" mehr als Information als eine Leere Zelle ?
...hmmm.... bei mir gab's keine Probleme. Du hattest auch das With Statement beachtet?
Und wie wäre es mit der Worksheetfunction?

Code:
If WorksheetFunction.CountBlank(Range("A1:C1")) > 0 Then...

Wenn der Code außerhalb des Tabellenmoduls steht, dann musst Du auch noch auf die korrekte Referenzierung achten.
Hallo Ralf, 

ich habe es so eingetragen: 

    With Range("A1:C1")
        If .SpecialCells(xlCellTypeBlanks).Cells.Count > 0 Then .SpecialCells(xlCellTypeBlanks) = "TBA"
    End With


Sorry, den Satz verstehe ich leider nicht, dafür habe ich leider zu wenig Ahnung vom VBA: 
"Wenn der Code außerhalb des Tabellenmoduls steht, dann musst Du auch noch auf die korrekte Referenzierung achten."
Könntest Du mir den bitte erklären?

Vielen Dank!

VG
Fanny

Hallo snb, 

keine, aber es ist eine Vorgabe, die ich zu erfüllen habe.

Gruß
Fanny
Code:
Sub M_snb()
  On Error Resume Next
  Selection.SpecialCells(4) = "doof"
End Sub
Danke, das hat geklappt.
...Resume Next ist immer doof.... solltest Du vermeiden.

Versuch es lieber nochmal mit der Worksheetfunction:

If WorksheetFunction.CountBlank(Range("A1:C1")) > 0 Then Range("A1:C1").SpecialCells(xlCellTypeBlanks) = "TBA"


Zitat:"Wenn der Code außerhalb des Tabellenmoduls steht, dann musst Du auch noch auf die korrekte Referenzierung achten."

Könntest Du mir den bitte erklären?



Aber gerne doch. Gemeint ist, wenn der Code nicht im Modul der betreffenden Tabelle steht (Bsp. Tabelle1), sondern woanders, also z, Bsp. in einem anderen Modul, aber Tabelle1 gemeint ist, dann muss Tabelle1 auch referenziert werden.
Bsp.: Tabelle1.Range("A1:C1")
Seiten: 1 2