Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1424to1428
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

Mit Macro Datum 00.01.1900 löschen

Mit Macro Datum 00.01.1900 löschen
05.05.2015 16:22:09
Arnold
https://www.herber.de/bbs/user/97475.xlsx
Hallo zusammen
Ich habe einen Exceldownload aus unserem SharePoint. Damit diese Daten "sauber" durch das Makro laufen, habe ich ein Tabellenblatt "Bastel-File" in welchem ich schon viele der Werte mittels Formeln richtig stellen kann.
In den Datums-Spalten (I & J) werden im SharePoint zum Teil keine Datum angegeben, sprich diese Werte sind leer (Zelle blanc). Die leeren Datumsfelder werden mir im Bastel-File mit dem Wert 00.01.1900 ausgegeben. Ich habe mit verschiedensten Formatierungen (*13.01.2001, oder Benutzerdefiniert TT,MM,YYYY;@, Werte in eine andere Spalte schreiben und mittels Werte einfügen wieder zurück, etc.).
Das komisch ist, wenn ich manuell mittels der Excelfunktion die Werte 00.01.1900 mit "" ersetze, also lösche, funktioniert es.
Wenn ich das im Makrorecorder aufzeichne und das dann einbaue, funktioniert das wieder nüscht.
Vielen Dank für eure Mithilfe und nen Tipp wo ich mir selber auf dem Schlauch stehe.
Arnold
'Blendet Tabellenblatt ein
Sheets("Bastel-File").Visible = True
'Variablen deklarieren
Sheets("Bastel-File").Select
Range("A2:AD2").Select
Selection.AutoFill Destination:=Range("A2:AD1500"), Type:=xlFillDefault
Range("A2:AD1500").Select
'Formeln werden gelöscht
Range("A3:AE1500").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Zeile 2 wird mittels Werte einfügen kopiert, damit die Formel nicht gelöscht wird
Rows("2:2").Select
Selection.Copy
Rows("3:3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Datumswert 00.01.1900 wird gelöscht
Range("I3:J1500").Select
Cells.Replace What:="00.01.1900", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'End With

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

Betreff
Datum
Anwender
Anzeige
AW: Mit Macro Datum 00.01.1900 löschen
05.05.2015 16:33:31
Daniel
Hi
Excel und VBA sind bei Datumswerten etwas kritisch.
Formatiere den Zellbereich mit dem Zahlenformat "Standard" und Ersetze dann alle 0 durch nichts mit LookAt:=xlwhole.
Dannach kannst du dann wieder die Zellen mit einem Datums-Zahlenformat formatieren.
Btw es ist unnütz, wenn du erst die Zellen im Bereich I3:J1500 selektierst und dann das Replace auf das ganze Blatt anwendest (Cells.replace).
Lass das mit dem Select Weg und gib gleich vor dem Replace den Bereich an, den du damit bearbeiten willst:
Range("I3:J1500").Numberformat = "General"
Range("I3:J1500").Replace 0, "", lookat:=xlwhole
Range("I3:J1500").Numberformat = "DD.MM.YYYY"
Gruß Daniel

Anzeige
AW: Mit Macro Datum 00.01.1900 löschen
05.05.2015 16:38:22
Arnold
Hallo Daniel
Wow, super. Das klappt.
Vielen Dank für deinen Super Tipp.
Einen schönen Nachmittag
Arnold

AW: Mit Macro Datum 00.01.1900 löschen
05.05.2015 16:44:00
Nepumuk
Hallo,
ich würde die Zeile:
Range("I3:J1500").Replace 0, "", lookat:=xlwhole
so ändern:
Range("I3:J1500").Replace 0, Empty, LookAt:=xlWhole
Mit "" enthält die Zelle einen leeren String und ist nicht leer (Empty). Das kann bei manchen Funktionen das Ergebnis verfälschen.
Gruß
Nepumuk

AW: Mit Macro Datum 00.01.1900 löschen
05.05.2015 17:02:04
Daniel
Hi
Replace ist wie eine Neueingabe des Zellinhaltes und dabei wird erneut überprüft, ob die eingegebene Zeichenfolge eine Leerzelle, eine Zahl, ein Datum, eine Formel oder einen Text darstellt.
Dabei wird dann die Zeichenfolge "" in eine echte Leerzelle gewandelt.
Dh es ist nicht möglich, mit Replace eine Zelle zu erzeugen die den Text "Leerstring" enthält.
Diese Automatsische Prüfung und Umwandlung des Zellinhaltes findet statt bei Replace und bei .Formula = .Value.
Sie findet nicht statt bei .Copy/.PasteSpeical xlpastevalues
Gruß Daniel

Anzeige
AW: Mit Macro Datum 00.01.1900 löschen
05.05.2015 17:09:53
Nepumuk
Hallo Daniel,
hab's soeben getestet, und du hast Recht. Die Abfrage auf IsEmpty liefert tatsächlich True zurück.
Gruß
Nepumuk

Das ist zwar richtig, weil so gewollt und ...
05.05.2015 19:45:41
Luc:-?
…sinnvoll, Daniel,
aber man kann auch mit Replace einen Leer-String erzeugen. Dazu muss man dann allerdings entweder ein TextPräfix in die Zelle einfügen oder die reine Zell­Löschung ander­weitig verhindern, bspw durch Forma­tierung solcher Zellen als Text (@).
Übrigens, erst in diesem letzteren Fall wirkt Empty anders als ein (Lösch-)Leer-String.
Gruß, Luc :-?

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige