Anzeige
Archiv - Navigation
1812to1816
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

Datumabfragemaske x64

Datumabfragemaske x64
17.02.2021 15:36:43
engelchen
Ich möchte erstmal danke sagen für die Mühe, die in diesem Forum steckt, ich bin voran gekommen scheitere aber an einem Projekt, dass ich derzeit ohne eure Hilfe nicht schaffe.
Daher die Frage:
WIe schaffe ich es einen Report, den ich mal monatlich mal wöchentlich generiert habe, bei dem Startdatum und Enddatum in "YYYYMMDD" stehen und ich dann per Abfragemaske oder Ähnlichem ein gewisses Datum eingeben möchte und dann das in diesen Report eingefügt - also quasi ersetzt - wird.
Ich müsste dann auch noch wissen, wie ich eine Spalte bis zur letzten Zeile mit Inhalt (oder auch ohne Inhalt) markiert wird, Denn: Ich habe standardmäßige Zeilen nehmen wir an 150 Zeilen bei der 150 Zeile steht nichts drin, diese muss ich aber mit einem Wert auch befüllen, durch strg + h suchen nach NULL und ersetzen mit ***
Nur möchte ich die anderen Zellen in der Spalte wo auch wirklich nichts drin stehen soll, weil sie 150 sind nicht steht und nicht ***.
Könnt ihr mir bei beiden Fällen weiterhelfen?
Ich versuche in VBA alles per Macro zu erstellen und anschließend per Visual Code eine ausführbare exe-Datei zu kompilieren.
Danke für die Mühe und ich hoffe ich konnte mich verständlich ausdrücken.

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumabfragemaske x64
17.02.2021 21:35:56
Yal
Hallo Engelchen,
zu der ersten Frage: verwende dafür den Marko-Rekorder. Im Menüband muss den Reiter "Entwicklertools" aktiviert sein. Dort findest Du den Makro-Rekorder.
_ Makro-Rekorder starten
_ Suchen-ersetzen starten,
_ Datum A in Datum B ersetzen lassen,
_ MakroRecorder stoppen
_ Code anscheuen
_ 2 Variable hinzufügen
Dim NeueDatum as Date
Dim AlteDatum as Date

_ 2 Inputbox hinzufügen
    AlteDatum = InputBox("Alte Datum:", "Eingabe", Format(Now, "YYYYMMDD"))
NeueDatum = InputBox("Neue Datum:", "Eingabe", Format(Now, "YYYYMMDD"))

_ feste Werte in den Replace durch Variable ersetzen.
Am Ende sieht es so aus:
Sub test()
Dim AlteDatum As Date
Dim NeueDatum As Date
AlteDatum = InputBox("Alte Datum:", "Eingabe", Format(Now, "YYYYMMDD"))
NeueDatum = InputBox("Neue Datum:", "Eingabe", Format(Now, "YYYYMMDD"))
Cells.Replace What:=AlteDatum, Replacement:=NeueDatum, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Die zweite Frage ist sehr ähnlich. Makro-Rekorder. Stellt sicher, dass Du dein Zielbereich markiert hast und das Ersetzen nur auf dem markierten Bereich einsetzt.
Es ist löblich, dass Du versuchst das mit VBA zu machen. Aber versucht zuerst den VBA innerhalb Excel zu beherrschen, anstatt zu schnell den Weg über VS Code + Exe-Compile einzuschlagen. Wobei .. wer nicht wagt, der nicht gewinnt.
Viel Erfolg
Yal
Anzeige
AW: Datumabfragemaske x64
18.02.2021 10:57:55
engelchen
Danke für deine tolle Hilfe!!!
So sieht es aus, wo füge ich jetzt deine Werte ein?
Sub Makro2()
' Makro2 Makro
Columns("D:D").Select
Cells.Replace What:="Startdatum im Format JJJJMMTT", Replacement:= _
"AlteDatum", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Columns("E:E").Select
Cells.Replace What:="Enddatum im Format JJJJMMTT", Replacement:="NeueDatum" _
, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat _
:=False, ReplaceFormat:=False
End Sub

AW: Datumabfragemaske x64
18.02.2021 13:40:15
Yal
Hallo Engelchen,
wenn Du möchtest, dass deine Datei die Makros mitspeichern, musst Du sicherstellen, dass es als "Excel mit Makros" gespeichert wird. Es wird dann eine ".xlsm"-Datei. Die von Dir hochgeladene Datei ist eine xlsx und hat keine Makro.
Du muss nur die beide miteinander kombinieren. Es sieht dann so aus:
Sub Makro2()
Dim StartDatum As String
Dim EndDatum As String
StartDatum = InputBox("Start-Datum:", "Eingabe", Format(Now, "YYYYMMDD"))
EndDatum = InputBox("End-Datum:", "Eingabe", Format(Now, "YYYYMMDD"))
Columns("D:D").Select
Cells.Replace _
What:="Startdatum im Format JJJJMMTT", _
Replacement:=StartDatum, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Columns("E:E").Select
Cells.Replace _
What:="Enddatum im Format JJJJMMTT", _
Replacement:=EndDatum, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
End Sub
Beachte bei Replacement deine Version mit Hochkomma: "NeueDatum" wird als festen Text verstanden, es wird "NeueDatum" eingefügt, und meine Version ohne Hochkomma. Hier wird die Variable StartDatum (ich habe den Namen der Variable dem Sachverhalt angepasst), bzw. dessen Inhalt, der durch InputBox aufgenommen worden wurde, als der zu einfügende Wert verwendet.
VG
Yal
Anzeige
AW: Datumabfragemaske x64
18.02.2021 13:53:29
engelchen
1000X Danke, wenn ich weitere Fragen habe (wie zum Beispiel wie speichere ich nach Abschluss der Makro den Text automatisch innerhalb der Makro als einen gewünschten Text?
Weil in der Datei steht wieder JJJJMMTT und das soll ersetzt werden mit dem anfangs eingegebenem Datum und das Enddatum eben.
VG zurück!
AW: Datumabfragemaske x64
18.02.2021 14:00:15
engelchen
Zu meiner zu Beginn zweiten Frage.
Manchmal gibt es auch 200 Werte statt 150, wie markiere ich denn alle auf einmal, wenn diese Werte unterchiedlich lang sind?
AW: Datumabfragemaske x64
18.02.2021 14:12:27
Yal
hallo Engelchen,
Speichern:
Es ist ein ganz normale Datei. Einfach speichern.
Per Makro: vor dem End Sub:
ThisWorkook.Save

einfügen.
Da die Spalte D, bzw. E für das ersetzen markiert werden, spielt 10, 60, 150, 200 Zeilen keine Rolle.
VG
Yal
Anzeige
AW: Datumabfragemaske x64
18.02.2021 14:18:47
engelchen
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.End(xlDown).Select
Range("B150").Select
Range("H150").Select
Hab das jetzt so gelöst, aber wie gesagt es sind nicht immer 150Zeilen
Dass ich per Shift und Strg runter gehe dann nochmal eins runter dann nach rechts bis zur Zeile H Und dann wollte ich nach oben, aber so kann das ja nicht gehen.
Da er jetzt die Range festlegt.
Hier möchte ich in Spalte H alles was #NULL ist mit einer 0 belegen.
AW: Datumabfragemaske x64
18.02.2021 14:25:37
engelchen
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 1).Select
Habe es jetzt so, wie komme ich dann dann wieder nach oben während ich alles bis dahin markieren will?
Anzeige
AW: Datumabfragemaske x64
18.02.2021 14:41:37
engelchen
https://www.herber.de/bbs/user/144044.xlsx
Hier nochmal hochgeladen ich möchte von A1 runter auf die letzte markierte Zeile und dann bis zur Spalte H nach rechts und dann nach oben komplett und alles was den WErt #NULL Hat mit einer 0 befüllen, wie geht das?
VG
AW: Datumabfragemaske x64
18.02.2021 15:57:11
Yal
Hallo Engelchen,
les Du etwa, was ich schreibe? Suchen-Ersetzen versteht selber, wo die letzte Zelle steht.
Ich hätte bei deiner letzte Frage gemeint, suchen nach #NULL und ersetzen durch 0, aber ich sehe keine #NULL. Ich gehe davon aus, dass Leerzellen gemeint sind:
_ Eine Zelle in der Mitte markieren
_ Shift+Strg+* drucken
_ in Start, Suchen und Auswählen , Inhalt auswählen anklicken, Leerzellen (oder strg+g, Alt+i, Alt+r)
_ 0 eintippen und mit Strg + Enter abschliessen
VG
Yal
Anzeige
AW: Datumabfragemaske x64
19.02.2021 09:12:20
engelchen
So wie du das beschrieben hast sucht er im gesamten Dokument nach Leerzeilen, ich habe aber etwas später danach in paar Zeilen auch noch Leerzeilen die ich nicht mit 0 füllen will...
Nur die Spalte H (Sorry ich habe nicht gelesen was du geschrieben hast, da ich es nicht gesehen habe.
AW: Datumabfragemaske x64
18.02.2021 14:42:42
Yal
Hallo Engelchen,
wenn es nur um den Replace geht, brauchst Du kene Gedanken zu machen, weil Excel selber optimiert. Markiere einfach den Bereich A1:AZ10000 und gut ist.
Ansonsten
Range("A1", UsedRange.SpecialCells(xlCellTypeLastCell)).Select
Bei Deine Version https://www.herber.de/forum/messages/1814407.html
gilt nur die letzte Anweisung
Range("H150").Select
Alles anderes ist zu dieser Zeitpunkt "passé". (Du kannst mit F8 im Schritt-Modus laufen lassen und sehen, was passiert)
VG
Yal
Anzeige
AW: Datumabfragemaske x64
18.02.2021 14:56:58
engelchen
Hallo Yal,
Ich habe nicht heraugefunden wie ich es machen soll, habe dir mal eine Excel vorhin geschickt, dort müsste es visualisiert da stehen.
Wenn ich Range("A1", UsedRange.SpecialCells(xlCellTypeLastCell)).Select schlägt er mir einen Laufzeitfehler 424 vor.
AW: Datumabfragemaske x64
18.02.2021 16:02:41
Yal
Range("A1", Me.UsedRange.SpecialCells(xlCellTypeLastCell)).Select 

AW: Datumabfragemaske x64
19.02.2021 09:00:58
engelchen
Dort zeigt er mir eine Ungültige Verwendung des Schlüsselbegriffs Me an.
AW: Datumabfragemaske x64
19.02.2021 12:09:20
Yal
Hallo Engelchen,
Me gilt nur in Code-Pane von Worksheets, nicht im Module.
In Modul weiß VBA nicht welchem Worksheet gemeint ist.
Die Kurzform ist der With / End With. Alles vor dem Punkt kommt im With und der Rest startet ab dem Punkt
With Worksheets("xyz")
.Range("A1", .UsedRange.SpecialCells(xlCellTypeLastCell)).Select
End With
VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige