Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Steuerelement Calendar

Betrifft: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 16:44:40

Hallo!

Mit

Private Sub CommandButton2_Click()
    Me!Calendar1.NextDay
End Sub


kann ich im Kalendersteuerelement immer einen Tag weiter kommen.
Gibt es bitte mittels VBA die Möglichkeit, das Wochenende (Samstag und Sonntag), sowie Feiertage zu überspringen?

Danke

Josef
  


Betrifft: Falls es dich betrifft! Gruß mit Link von: Luc:-?
Geschrieben am: 18.02.2006 17:17:36

https://www.herber.de/forum/archiv/732to736/t732035.htm#734568


  


Betrifft: AW: Falls es dich betrifft! Gruß mit Link von: Josef
Geschrieben am: 18.02.2006 17:24:02

Hallo Luc!

Leider bin ich nicht der Josef, der hinter diesem Link steht. Ich sehe auch keine Verbindung zu meiner Frage oder irre ich mich vielleicht diesbezüglich.

Josef


  


Betrifft: Nein! War für den Anderen! ...dauernd heißen alle von: Luc:-?
Geschrieben am: 19.02.2006 00:50:50

...gleich! Wer soll das noch unterscheiden?
Gruß Luc :-?


  


Betrifft: AW: Steuerelement Calendar von: chris b
Geschrieben am: 18.02.2006 17:17:56

Hallo das mit Wochenende könntest du so machen.
Feiertage weiss ich keine Lösung.
Soweit mir bekannt bräuchtest du auch erst eine Tabelle mit allen Feiertagen.

Private Sub CommandButton1_Click()
x = ""
Tag = Calendar1.Day + 1
monat = Calendar1.Month
jahr = Calendar1.Year

Datum = Tag & "." & monat & "." & jahr

wochentag = Weekday(Datum)


If wochentag = 7 Then x = 3

If wochentag > 1 And wochentag < 7 Then x = 1


 Me!Calendar1.Day = Calendar1.Day + x
 
End Sub



  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 17:26:44

Hallo Chris!

Danke für Deine Antwort.

Leider bekomme ich eine Fehlermeldung in dieser Zeile

Me!Calendar1.Day = Calendar1.Day + x

Josef


  


Betrifft: AW: Steuerelement Calendar von: PeterW
Geschrieben am: 18.02.2006 17:24:09

Hallo Josef,

die Wochenenden sind kein Problem:
Option Explicit

Private Sub CommandButton1_Click()
   If Weekday(Calendar1, vbMonday) = 5 Then
      Calendar1 = Calendar1 + 3
   Else
      Calendar1 = Calendar1 + 1
   End If
End Sub


Private Sub UserForm_Initialize()
   If Weekday(Date, vbMonday) > 5 Then
      Calendar1 = Date + 8 - Weekday(Date, vbMonday)
   End If
End Sub


Feiertage sind etwas aufwändiger, allein schon wegen regionaler Unterschiede. Am einfachsten wäre es, alle in ein Array zu schreiben und für jede Änderung das Array zu durchlaufen. Berücksichtigt werden müssten dann die Sonderfälle Feiertag am Montag und Freitag.

Gruß
Peter


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 17:34:02

Hallo Peter!

Danke für Deine Antwort. Die Wochenendlösung passt bestens.

zu
Am einfachsten wäre es, alle in ein Array zu schreiben und für jede Änderung das Array zu durchlaufen

Wie würde hier z.B. so ein Ansatz von einem Array aussehen, wenn der Feiertag z.b. der 6.Jänner wäre oder die Feiertage zu Ostern.
Und wie läßt man dann dieses Array duchlaufen?

Vielleicht könnte ich dan mal an einem Muster weiterbasteln.


Josef


  


Betrifft: AW: Steuerelement Calendar von: Peter W
Geschrieben am: 18.02.2006 17:37:42

Servus ein anderer Peter W,

vorschlag meinerseits, schreib die Feiertage in irgendeine Range. Dann könnte man es so lösen.
Private Sub CommandButton1_Click()
Dim intZ As Integer
Dim rngFeier As Range
Dim bolDat As Boolean
Set rngFeier = Range("A1:A3")
Do
    Me.Calendar1.NextDay
    Select Case Weekday(Me.Calendar1.Value, vbMonday)
        Case vbSaturday: bolDat = True
        Case vbSunday: bolDat = True
    End Select
        
    For intZ = 0 To rngFeier.Rows.Count - 1
        If CDbl(Me.Calendar1.Value) <> CDbl(Cells(rngFeier.Row + intZ, rngFeier.Column)) _
            And Not bolDat Then
                bolDat = False
        Else: bolDat = True: End If
    Next
    
    If bolDat = False Then
        Exit Do
    Else: bolDat = False: End If
Loop
End Sub


MfG Peter


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 17:45:13

Hallo WernerW!

Danke für Deine Antwort.
Ich habe Deine lösung gerade getestet.

Ich bekomme die Fehhlermeldung
Objekt unterstützt diese Eigenschaft oder Methode nicht.

Markiert wird

Me.Calendar1.NextDay



Josef


  


Betrifft: AW: Steuerelement Calendar von: Peter W
Geschrieben am: 18.02.2006 17:51:19

Servus Gabriele,

Werner ??? Egal, versteh ich nicht siehe Bsp.
https://www.herber.de/bbs/user/31186.xls

MfG Peter


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 17:58:17

Hallo Peter W!

Tut mir sehr leid mit der falschen Anrede. Ich entschuldige mich.

Habe jetzt Dein Muster getestet
Ich bekomme jetzt den gleichen Fehler bei

Select Case Weekday(Me.Calendar1.Value, vbMonday)

Kann es vielleicht an der Excel Version liegen? Zu Hause arbeite ich mit Excel 2000


Josef


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 17:58:24

Hallo Peter W!

Tut mir sehr leid mit der falschen Anrede. Ich entschuldige mich.

Habe jetzt Dein Muster getestet
Ich bekomme jetzt den gleichen Fehler bei

Select Case Weekday(Me.Calendar1.Value, vbMonday)

Kann es vielleicht an der Excel Version liegen? Zu Hause arbeite ich mit Excel 2000


Josef


  


Betrifft: AW: Steuerelement Calendar von: Peter W
Geschrieben am: 18.02.2006 18:04:36

Servus,

überhaupt kein Thema nicht. Kann sein versuchs mal mit der Ansprache wie es bei dir schon funktioniert hat. Bin in der 2000 Version nicht so bewandert.
Mit der Ansprache von dir Me!Calender klappts bei mir auf jeden Fall nicht.
Wenns net funtzt lad mal ein schlankes Bsp. hoch.
Private Sub CommandButton1_Click()
Dim intZ As Integer
Dim rngFeier As Range
Dim bolDat As Boolean
Set rngFeier = Range("A1:A3")
Do
    Me!Calendar1.NextDay
    Select Case Weekday(Me!Calendar1.Value, vbMonday)
        Case vbSaturday: bolDat = True
        Case vbSunday: bolDat = True
    End Select
        
    For intZ = 0 To rngFeier.Rows.Count - 1
        If CDbl(Me!Calendar1.Value) <> CDbl(Cells(rngFeier.Row + intZ, rngFeier.Column)) _
            And Not bolDat Then bolDat = False
        Else: bolDat = True: End If
    Next
    
    If bolDat = False Then
        Exit Do
    Else: bolDat = False: End If
Loop
End Sub


MfG Peter


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 18:15:49

Hallo Peter!

Jetzt hast du mich auf den Fehler gebracht.

Es funktioniert komischerweise mit Me! in Excel 2000. eigenartig.

Danke

Eine Frage noch zum Calendar

Ist es vielleicht mit dieser Methode möglich, dass z.B. beim Anklicken vom 6.1.06 gar nichts passiert, dass der Druck auf den Button6 keinen Befehl ausführt, also tot bleibt?

Josef


  


Betrifft: AW: Steuerelement Calendar von: Peter W
Geschrieben am: 18.02.2006 18:21:01

Servus,

mhhm k.a. aber Trick 17 wäre nach dem Muster. Nicht vergessen die andere Ansprache, wobei mir das ein Rätsel ist.
Public dblCal As Double
Private Sub Calendar1_Click()
If dblCal = 0 Then dblCal = Date
If Day(Me.Calendar1.Value) = 6 Then
    Me.Calendar1.Value = dblCal
Else: dblCal = Me.Calendar1.Value
End If
End Sub


MfG Peter


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 18:33:10

Hallo Peter!

Ich nehme mal an dass man auch so das Feiertagproblem lösen kann. Nur müßte man dann auch den jeweiligen Monat hineinnehmen,sonst würde in jedem Monat der 6. lahmgelegt werden.

Josef


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 18:23:43

Hallo Peter!

Ich habe gerade festgestellt, dass beim Ausführen des Makros als Wochenende immer Sonntag und Montag angenommen wird.

Josef


  


Betrifft: AW: Steuerelement Calendar von: Peter W
Geschrieben am: 18.02.2006 18:37:40

Servus,

was hast du den für ein komisches Excel ;-) aus der OH:
Konstante Wert Beschreibung
vbSunday 1 Sonntag
vbMonday 2 Montag
vbTuesday 3 Dienstag
vbWednesday 4 Mittwoch
vbThursday 5 Donnerstag
vbFriday 6 Freitag
vbSaturday 7 Samstag


Dann ändere in der Select Case Anweisung folgende Zeilen,
Case vbSaturday: bolDat = True
Case vbFriday: bolDat = True
du wirst aber selber zugeben das, dass keinen Sinn macht, oder ?

MfG Peter


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 18:48:20

Hallo Peter!

Jetzt schicke ich dir mal mein Muster. Dein Makro liegt unter CommandButton4

https://www.herber.de/bbs/user/31189.xls


Josef


  


Betrifft: AW: Steuerelement Calendar von: Horst
Geschrieben am: 18.02.2006 18:59:20

Hi,

mit dem Calendar im Multipage wirst du nicht viel Freude haben.

mfg Horst


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 19:02:28

Hallo Horst!

Das weiß ich, ist ja auch nur ein Muster. Im Original liegt das Steuerelement außerhalb der Multipage.

Danke

Josef


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 19:00:30

Hallo Peter!


mit

Select Case Weekday(Me.Calendar1.Value, vbSunday)

funktioniert es jetzt richtig.

Ich habe vbMonday auf vbSunday geändert.

Bei Deinem 2.Makro wenn ich den 6.Jänner anklicke so wird der heutige Tag, 18.02.06 automatisch aktiviert.


Josef


  


Betrifft: AW: Steuerelement Calendar von: Peter W
Geschrieben am: 18.02.2006 19:05:50

Servus,

na ist doch schön. Ja er geht auf das zuletzt gewählte Datum, auser er kennt noch kein zuletzt gewähltes Datum, dann geht er auf das heutige Datum.
Sag ja Trick 17b, was anderes fällt mir nicht ein.

MfG Peter


  


Betrifft: AW: Steuerelement Calendar von: Josef
Geschrieben am: 18.02.2006 19:15:45

Hallo Peter!

Danke für Deine Geduld und Deine Mühe.
Ich wünsache Dir noch einen schönen Abend.

Josef


 

Beiträge aus den Excel-Beispielen zum Thema "Steuerelement Calendar"