Wochentag vor Datum und Uhrzeit setzen

Hallo zusammen,

ich brauche mal wieder fachmännische Hilfe.

Ich habe eine VBA Abfrage, in der unter anderem von einer Datumsspalte, Spalte K, bei bestimmten Voraussetzungen 2 abgezogen wird. Hinter das neu berechnete Datum wird dann auch sofort mittels VBA Code entweder 8h oder 12h geschrieben. Nun müsste ich aber vor dem neu berechneten Datum noch den Wochentag stehen haben, da ich die Wochenenden rot markieren möchte.Leider ist dies nicht so einfach, da ja immer hinter dem neuen Datum 8h oder 12h steht. Gibt es eine Möglichkeit die Ausgabe der Wochentage gleich mit in das Makro einzubauen?

Hier ein Teil des Makros:

'Berechnung der internen Bereitstellung

For Zei3 = 2 To Range(„A65536“).End(xlUp).Row

If Cells(Zei3, 2) = 100004 Or _
Cells(Zei3, 2) = 100008 Then
Cells(Zei3, 10).Value = Cells(Zei3, 11) - 2 & „, 12h“
Else: Cells(Zei3, 10).Value = Cells(Zei3, 11) - 2 & „, 8h“

End If
Next

Ich hoffe Ihr könnt mir weiterhelfen. Bin für jede Hilfe dankbar.

LG Martina

Hallo Martina,

die zweite Prozedur ist die schnellere bei vielen Zeilen.

Sub ttt()
Dim Zei3 As Long
For Zei3 = 2 To Cells(Rows.Count, 1).End(xlUp).Row
 If Cells(Zei3, 2) = 100004 Or Cells(Zei3, 2) = 100008 Then
 Cells(Zei3, 10).Value = Format(Cells(Zei3, 11) - 2, "DDD DD.MM.YYYY") & ", 12h"
 Else
 Cells(Zei3, 10).Value = Format(Cells(Zei3, 11) - 2, "DDD DD.MM.YYYY") & ", 8h"
 End If
Next Zei3
End Sub

Sub ttt2()
Dim Zei3 As Long, Formel As String
Zei3 = Cells(Rows.Count, 1).End(xlUp).Row
Formel = "=TEXT(K2-2;""TTT TT.MM.JJJJ"")&WENN(ODER(B2=100004;B2=100008);"", 12h"";"", 8h"")"
Range("J2:J" & Zei3).FormulaLocal = Formel
Range("J2:J" & Zei3).Value = Range("J2:J" & Zei3).Value
End Sub

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für die schnelle Antwort. Sie hat mir sehr geholfen. Ich habe aber noch eine Frage.

Wird bei der zweiten Prozedur davon ausgegangen, dass vom Datum immer 2 abgezogen werden? Das könnte man dann nicht so variabel gestalten, wie bei der ersten Prozedur? Und wozu stehen die beiden " " in der Formel?

LG Martina

Wird bei der zweiten Prozedur davon ausgegangen, dass vom
Datum immer 2 abgezogen werden? Das könnte man dann nicht so
variabel gestalten, wie bei der ersten Prozedur? Und wozu
stehen die beiden " " in der Formel?

Hallo Martina,

du hast in deiner Anfrage zwar im Text geschrieben:
„…bei bestimmten Voraussetzungen 2 abgezogen wird…“
Wenn du das aber willst muß dein Code eine anderen Aufbau haben.
So wie du ihn zeigst zieht er immer 2 ab.
daran wird dann je nach Erfüllung der IF-Bedingung , 8h oder , 12h
angehängt.

Die „“? (Da ist kein leerzeichen drin.)

Formel = „=TEXT(K2-2;“„TTT TT.MM.JJJJ“")&WENN(ODER(B2=100004;B2=100008);"", 12h"";"", 8h"")"

Wenn du mit Vba eine Excelformel in eine Zelle schreiben willst,
so sit die für Vba ein String und Strings werden in Anführungszeichen eingeschlossen…
Also so: Range(„A1“).FormulaLocal = „=B2&B3“

Deshalb sind wohl die beiden einzelnen äußeren Anführungszeichen um die Gesamtformel für dich klarer.
Vba weiß die soll es wegfallen lassen bei dem was es in der Zelle
reinschreibt.

jetzt will man aber auch einzelne leerzeichen in der Formel haben.
Z.B. bei
=Wenn(A1=„huhu“;…;…)
Dann muß man im Code die Anführungszeichen pro erscheinendes Leerzeichen verdoppeln.
also so:
Formel="=Wenn(A1="„huhu“";…;…)"

=Wenn(A1="";…;…)
wird dann zu
Formel="=Wenn(A1="""";…;…)"

Ist anfänglich verwirrend beim Benutzen aber das gibt sich.
Wie immer, probiere es bei Interesse einfach selbst aus bis sich
der Aha-Effekt einstellen wird.

Stelle dir mal einfach selbst die Aufgabe in A1 per Vba diese Formel einzutragen:
=Wenn(B2="";"";c2&„huhu“)
Tipp:
nach Formel=…
schreib diese Codezeilen
Msgbox Formel
Exit Sub

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für Deine ausführliche Antwort. Ja ich werde es ausprobieren. Ich habe auch schon angefangen. Klappt super.

Kannst Du mir vielleicht auch noch die Frage beantworten: Wenn nun vor dem Datum und der Uhrzeit Sa oder So steht, ist es dann möglich von dem Datum noch mal 1 bei Sa oder 2 bei So abzuziehen?

Vielen Dank schon einmal für die Hilfe.

LG Martina

Kannst Du mir vielleicht auch noch die Frage beantworten: Wenn
nun vor dem Datum und der Uhrzeit Sa oder So steht, ist es
dann möglich von dem Datum noch mal 1 bei Sa oder 2 bei So
abzuziehen?

Hallo Martina,

als Excelformel könnte man das u.a. so machen:

=TEXT(K2-WAHL(WOCHENTAG(K2;2);3;4;2;2;2;2;2);
„TTT TT.MM.JJJJ“)&WENN(ODER(B2=100004;B2=100008);", 12h";", 8h")

Gruß
Reinhard

Hallo Reinhard,

zu erst muss ich mich entschuldigen, dass ich erst jetzt antworte, aber ich war die letzten Tage nicht vorm PC.

Vielen Dank für die Antwort. Es funktioniert bestens.

LG Martina

Danke für das Danke :smile: ow.T.