Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Weekday-Funktion VBA-Makro

Weekday-Funktion VBA-Makro
24.06.2020 15:36:20
Gehard
Hallo zusammen,
ich habe in einer Tabelle ein Problem mit dem Datum und kommen einfach nicht mehr weiter.
In einer Spalten befindet sich ausschließlich Daten (Mehrzahl von Datum).
Ich möchte jetzt mit meinem Makro jedes Datum, dass auf einen Samstag fällt auf Freitag zurücksetzten lassen.
Ich spiele jetzt schon eine Weile mit der Weekday-Funktion herum aber komme einfach nicht weiter.
Egal wie ich ansetzte erhalte ich Fehlermeldungen wie z.B. "Typen unverträglich".
Ich wollte die Spalte der Tabelle von n = 1 bis sagen wir mal 10000 durchgehen und jeweils wenn der Weekday des jeweiligen Datum einem Samstag entspricht, einen Tag von Datum abziehen.
Vielleich gibt es hier ja einen viel einfacheren Ansatz oder eine Lösung für meinen Ansatz.
Vielen Dank schon einmal.

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

Betreff
Datum
Anwender
Anzeige
AW: Weekday-Funktion VBA-Makro
24.06.2020 15:59:15
Werner
Hallo,
so:
Option Explicit
Sub Schaltfläche1_Klicken()
Dim i As Long, raBereich As Range
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
If Weekday(.Cells(i, "A")) = 7 Then
If raBereich Is Nothing Then
Set raBereich = .Cells(i, "A")
Else
Set raBereich = Union(raBereich, .Cells(i, "A"))
End If
End If
Next i
If Not raBereich Is Nothing Then
raBereich = raBereich - 1
End If
End With
Set raBereich = Nothing
End Sub
Gruß Werner
AW: Weekday-Funktion VBA-Makro
25.06.2020 09:22:23
Gehard
Hallo Werner,
vielen Dank für die schnelle Antwort.
Ich habe damit jetzt folgendes Problem, was wahrscheinlich darauf zurückzuführen ist, dass ich mich vielleicht nicht ganze korrekt ausgedrückt habe.
Das Makro bewirkt, dass alle Samstage auf den als erstes ermittelten Freitag zurück gesetzt werden.
Ich habe z.B. in der Datumsspalte Daten von 01.06.2020 - 25.06.2020. Jetzt werden alle meine Samstage auf den 05.06.2020 zurück gesetzt, weil das der zuerst ermittelte Freitag ist.
Ich möchte aber, dass die Samstage jeweils auf den vorangegangenen Freitag zurück gesetzt werden.
So würde der 06.06.20 auf den 05.06.20 zurück gesetzt, der 13.06.20 auf den 12.06.20 usw.
Wie müsste das Makro abgeändert werden, damit es die Samstage jeweils auf den vorangegangenen Freitag setzt?
Anzeige
AW: Weekday-Funktion VBA-Makro
25.06.2020 10:44:06
Werner
Hallo,
dann mit Daniels Methode (die du einfach mal so ignoriert hast) per Formel.
Option Explicit
Sub Schaltfläche1_Klicken()
Dim loSpalte As Long, loLetzte As Long
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1).Column
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range(.Cells(1, loSpalte), .Cells(loLetzte, loSpalte)).FormulaLocal = _
"=A1-(WOCHENTAG(A1;2)=6)"
.Range(.Cells(1, loSpalte), .Cells(loLetzte, loSpalte)).Copy
.Range("A1").PasteSpecial Paste:=xlPasteValues
.Columns(loSpalte).ClearContents
Application.CutCopyMode = False
End With
End Sub
Gruß Werner
Anzeige
AW: Weekday-Funktion VBA-Makro
25.06.2020 14:23:20
Gehard
Hallo Werner,
hall Daniel,
ich habe alles auf meine Tabelle angepasst und es funktioniert jetzt.
Vielen Dank für eure Hilfe.
Gerne u. Danke für die Rückmeldung. o.w.T.
25.06.2020 14:28:53
Werner
AW: Weekday-Funktion VBA-Makro
24.06.2020 16:05:01
Daniel
Hi
Es ist schwer zu sagen was du falsch gemacht hast, wenn du uns nicht zeigt, was du gemacht hast.
Auch müsste man wissen, was du tatsächlich für Daten hast, echte Datumswerte oder Texte, die wie solche aussehen.
Bei Excel gut sollte es dir aber nicht schwer fallen, eine Formellösung für diese Aufgabe zu erstellen.
=A1-Wenn(Wochentag(A1;2)=6;0;1
Oder als kurzform:
=A1-(Wochentag(A1;2)=6)
Oder ohne Wochentag:
=A1-(Text(A1;"TTT")="Sa")
In VBA programmiert man dann einfach nur das Einfügen der Formel (der Rekorder hilft), sowie das Kopieren und Einfügen der Werte an der gewünschten stelle.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige