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
ow.T.