Leerzellen ausfüllen läuft auf Fehler
#1
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
Antworten Top
#2
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.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Hi,

Code:
With Range("A1:C1")
    If .SpecialCells(xlCellTypeBlanks).Cells.Count > 0 Then .SpecialCells(xlCellTypeBlanks) = "TBA"
End With
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#4
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
Antworten Top
#5
Was bietet 'TBA" mehr als Information als eine Leere Zelle ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
...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.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#7
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
Antworten Top
#8
Code:
Sub M_snb()
  On Error Resume Next
  Selection.SpecialCells(4) = "doof"
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Fanny
Antworten Top
#9
Danke, das hat geklappt.
Antworten Top
#10
...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")
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste