Registriert seit: 12.04.2022
Version(en): 365 Business
25.04.2022, 10:42
(Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2022, 10:44 von Fanny.)
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
Registriert seit: 13.04.2014
Version(en): 365
25.04.2022, 11:07
(Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2022, 11:08 von BoskoBiati.)
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.
Registriert seit: 25.11.2021
Version(en): 2019, 365
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
Registriert seit: 12.04.2022
Version(en): 365 Business
25.04.2022, 11:26
(Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2022, 11:31 von Fanny.)
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
Registriert seit: 29.09.2015
Version(en): 2030,5
Was bietet 'TBA" mehr als Information als eine Leere Zelle ?
Registriert seit: 25.11.2021
Version(en): 2019, 365
25.04.2022, 11:40
(Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2022, 11:44 von Ralf A.)
...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
Registriert seit: 12.04.2022
Version(en): 365 Business
25.04.2022, 16:26
(Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2022, 16:27 von Fanny.)
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
Registriert seit: 29.09.2015
Version(en): 2030,5
Code: Sub M_snb() On Error Resume Next Selection.SpecialCells(4) = "doof" End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Fanny
Registriert seit: 12.04.2022
Version(en): 365 Business
Registriert seit: 25.11.2021
Version(en): 2019, 365
...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
|