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

VBA - wenn Sonntag, dann...

VBA - wenn Sonntag, dann...
24.01.2021 10:27:24
Peer
Hallo.
Ich rätsel schon seit langer Zeit, warum eigentlich einfacher Code nicht funktioniert und den Laufzeitfehler 13 bringt.
Ich möchte aus lbl_Kalendertag (Cells(ActiveCell.Row, 2)) den Wochentag auslesen und wenn er ein Sonntag ist, die Zeit zwischen txt_ArbZ_Beginn (Cells(ActiveCell.Row, 20)) und txt_ArbZ_Ende (Cells(ActiveCell.Row, 21)) in txt_SonnZ anzeigen lassen.
Dabei habe ich beim Change-Event von txt_ArbZ_Ende folgendes geschrieben
Userbild
.
Was ist hier falsch?
Selbst

If Weekday(CDate(lbl_Kalendertag, vbMonday)) = 7 Then
Me.txt_SonnZ = Format(DateDiff("n", txt_ArbZ_Beginn, txt_ArbZ_Ende) / 60, "hh:mm")
Else
Me.txt_SonnZ = "00:00"
End If
hat kein Erfolg.
Manchmal denke ich, ich komme in regelmäßigen Abständen wieder zum Anfang meiner Kenntnisse zurück. Das ist zum Verzweifeln.
Peer

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

Betreff
Datum
Anwender
Anzeige
vermutlich vergleichst Du Text mit Zahl 7 <> "7"
24.01.2021 10:31:56
Matthias
Hallo
und dann sieht es so aus als wolltest Du mit Text rechnen.
Du müsstest also esrt umwandeln.
Gruß Matthias
AW: vermutlich vergleichst Du Text mit Zahl 7 <> "7"
24.01.2021 10:48:48
Peer
Hallo Matthias.
Umwandeln mit CDate(lbl_Kalendertag) bringt auch nichts?
Gruß
Peer
probier mal: Clng(lbl_Kalendertag) owT
24.01.2021 10:52:52
Matthias
kein Erfolg (owT)
24.01.2021 11:03:44
Peer
AW: VBA - wenn Sonntag, dann...
24.01.2021 10:32:03
Hajo_Zi
Halo Peer,
If Weekday(CDate(lbl_Kalendertag), vbMonday) = 7 Then
Klammer richtig setzen.
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
ändern.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
Falls Link nicht ausgeführt wird:
1. Link kopieren
2. rechte Maustaste neues Fenter.
3. Umschaltstaste drücken und Klick auf den Link
4. STRG+ Link mit Maus aktivieren

Anzeige
AW: VBA - wenn Sonntag, dann...
24.01.2021 10:46:20
Peer
Danke, Hajo_Z
Guter Tipp. Aber keinen Erfolg.
AW: VBA - wenn Sonntag, dann...
24.01.2021 11:06:45
Werner
Hallo,
If Weekday(CDate(Split(lbl_Kalendertag, " ")(1)), vbMonday) = 7 Then
Gruß Werner
AW: VBA - wenn Sonntag, dann...
24.01.2021 11:09:14
Matthias
Moin!
Falls die vorherigen Tipps nicht geholfen haben, würde ich es so probieren
If Weekday(CDate(Split(lbl_Kalendertag, " ")(1)), vbMonday) = 7 Then

Da dein Text aus einer TB kommt, wird er auch als Text interpretiert. Auch wenn das Format im Blatt so eingestellt war, bin ich mir nicht sicher, ob VBA das richtig umwandelt. Bei der Variante, wird nur der Teil ab dem Leerzeichen genommen und umgewandelt. DA sollte das richtige Datum dann rauskommen. Ggf. kann man sowas auch vorher abfragen und prüfen, bspw. wieder mit isdate oder instr (um zuprüfen, ob das Leerzeichen vorkommt).
VG
Anzeige
AW: VBA - wenn Sonntag, dann...
24.01.2021 11:25:18
Matthias
Moin!
Und hier noch ein anderer Ansatz. WEnn dein lbl_KAlendertag wirklich immer so aussieht,
"NamevomTag Datum" und das auch immer sicher ist, könnte man auch auf den Weekday Funktion verzichten.
Nimm dann
If left(lbl_Kalendertag,7) = "Sonntag" then

Damit wird dann nur geschaut, ob der String am Anfang mit Sonntag beginnt.
VG
AW: VBA - wenn Sonntag, dann...
24.01.2021 11:30:09
Peer
Das war es, Matthias.
Vielen Dank.
An diese Lösung hätte ich nie gedacht.
Gruß
Peer
AW: VBA - wenn Sonntag, dann...
24.01.2021 11:26:14
Peer
Leider auch kein Erfolg.
Den Inhalt in lbl_Kalender kommt aus der aktiven Zeile Spalte 2 und wird formatiert in die UF _ angezeigt

zeile = ActiveCell.Row
'Application.EnableEvents = False
If zeile = 12 Then btn_Prev.Enabled = False
If zeile = dZeileMax Then btn_Next.Enabled = False
If Weekday(Cells(zeile, 2)) = 1 Or Weekday(Cells(zeile, 2)) = 7 Or Not Cells(zeile, 2). _
Comment Is Nothing Then
lbl_Kalendertag = Format(CDate(Cells(zeile, 2)), "DDDD " & " " & "DD.MM.YYYY")
lbl_Kalendertag.ForeColor = vbRed
Else
lbl_Kalendertag = Format(CDate(Cells(zeile, 2)), "DDDD " & " " & "DD.MM.YYYY")
lbl_Kalendertag.ForeColor = vbBlack
End If

Liegt der Fehler vielleicht hier? Aber wo?
Gruß
Peer
Anzeige
Liest du eigentlich die Beiträge...
24.01.2021 11:27:38
Werner
Hallo,
...die man dir schickt?
Gruß Werner
AW: Liest du eigentlich die Beiträge...
24.01.2021 11:39:46
Peer
Ja, natürlich.
Wieso?
ach ja, siehe Beitrag von 11:06 h, o.w.T.
24.01.2021 11:57:35
11:06
AW: ach ja, siehe Beitrag von 11:06 h, o.w.T.
24.01.2021 12:21:20
11:06
Entschuldige, Werner.
Natürlich habe deinen Beitrag auch gelesen. Matthias hatte zeitgleich den selben Vorschlag, den ich 11:09 beantwortet habe. Leider hat diese Lösung keine Erfolg. Da bist du durchgerutscht.
Ich bedanke mich natürlich für deine Hilfe.
Nochmal Entschuldigung.
Gruß
Peer
Du hast FirstDayOfWeek vergessen
24.01.2021 11:44:38
Matthias
Beispiel:
In Cells(Zeile, 2) steht das Datum 24.01.2021
Option Explicit
Sub tt()
Dim Zeile&
Zeile = 3
MsgBox Weekday(Cells(Zeile, 2), 2)
If Weekday(Cells(Zeile, 2), 2) = 7 Then
MsgBox "Bingo: Sonntag"
End If
End Sub

Anzeige
AW: Du hast FirstDayOfWeek vergessen
24.01.2021 12:02:44
Peer
Stimmt, Matthias.
Danke

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige