Microsoft Excel

Herbers Excel/VBA-Archiv

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

Start von Makro und Funktion

    Betrifft: Start von Makro und Funktion von: Werner Busch
    Geschrieben am: 01.10.2003 08:59:18

    Guten Morgen,

    ich möchte, dass mein Jahreskalender mit 12 Monatsblättern im aktuellen Monat startet. Außerdem sollen die Feiertage (Tag in Spalte A, Wochentag in Spalte B)berechnet und farbig unterlegt werden. Bei den Feiertagen soll eine Meldung erfolgen, um welchen Feiertag es sich handelt. Dies wollte ich mit folgendem Makro realsieren, leider läuft es nicht. Woran hängt es? Danke im Voraus!


    Private Sub Workbook_Open()
       Worksheets(Month(Date)).Activate
    End Sub
    


    Function Ostern(Yr As Integer)
    Dim D As Integer
    D = (((255 - 11 * (Yr Mod 19)) - 21) Mod 30) + 21
    Ostern = DateSerial(Yr, 3, 1) + D + (D > 48) + 6 - ((Yr + Yr \ 4 + D + (D > 48) + 1) Mod 7)
    End Function


    Function Feiertagsberechnung()
    Dim sOstern As Date
    Dim sNeujahr As Date
    Dim sOstermontag As Date
    Dim sKarfreitag As Date
    Dim sFastnacht As Date
    Dim sRosenmontag As Date
    Dim sMaifeiertag As Date
    Dim sPfingstsonntag As Date
    Dim sPfingstmontag As Date
    Dim sFronleichnam As Date
    Dim sChristiHimmelfahrt As Date
    Dim sTagderDeutschenEinheit As Date
    Dim sHeiligabend As Date
    Dim sWeihnachstag1 As Date
    Dim sWeihnachtstag2 As Date
    Dim sSylvester As Date
    Dim sEintrag As String

    sOstern = Ostern(Year(Date))
    sOstermontag = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) + 1)
    sNeujahr = "01.01." & Year(Date)
    sKarfreitag = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) - 2)
    sFastnacht = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) - 47)
    sRosenmontag = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) - 48)
    sMaifeiertag = "01.05." & Year(Date)
    sPfingstsonntag = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) + 49)
    sPfingstmontag = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) + 50)
    sFronleichnam = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) + 60)
    sChristiHimmelfahrt = DateSerial(Year(sOstern), Month(sOstern), Day(sOstern) + 39)
    sTagderDeutschenEinheit = "03.10." & Year(Date)
    sHeiligabend = "24.12." & Year(Date)
    sWeihnachtstag2 = "26.12." & Year(Date)
    sWeihnachstag1 = "25.12." & Year(Date)
    sSylvester = "31.12." & Year(Date)

    Select Case Str(Date)
    Case sNeujahr
    sEintrag = "Neujahr"

    Case sOstern
    sEintrag = "Ostersonntag"

    Case sOstermontag
    sEintrag = "Ostermontag"

    Case sKarfreitag
    sEintrag = "Karfreitag"

    Case sFastnacht
    sEintrag = "Fastnacht"

    Case sRosenmontag
    sEintrag = "Rosenmontag"

    Case sMaifeiertag
    sEintrag = "Maifeiertag"

    Case sChristiHimmelfahrt
    sEintrag = "Christi Himmelfahrt"

    Case sPfingstsonntag
    sEintrag = "Pfingstsonntag"

    Case sPfingstmontag
    sEintrag = "Pfingstmontag"

    Case sFronleichnam
    sEintrag = "Fronleichnam"

    Case sTagderDeutschenEinheit
    sEintrag = "der Tag der dt. Einheit"

    Case sHeiligabend
    sEintrag = "Heiligabend"

    Case sWeihnachstag1
    sEintrag = "der 1. Weihnachtstag"

    Case sWeihnachtstag2
    sEintrag = "der 2. Weihnachtstag"

    Case sSylvester
    sEintrag = "Silvester"

    Case Else
    sEintrag = ""

    End Select

    If sEintrag <> "" Then
    MsgBox "Heute ist " + sEintrag + ". Bitte Eintragungen prüfen!", vbInformation

    End If
    End Function

      


    Betrifft: AW: Start von Makro und Funktion von: Hans W. Hofmann
    Geschrieben am: 01.10.2003 09:12:14

    Läuft nicht, ist natürlich eine sehr brauchbare Fehlerbeschreibung, wenn man eine Glaskugel besitzt. Aber wer hat sowas heute noch?


    Gruß HW


      


    Betrifft: AW: Start von Makro und Funktion von: Werner Busch
    Geschrieben am: 01.10.2003 09:24:49

    Hallo,
    "läuft nicht" bedeutet im Detail, dass die Mappe zwar im aktuellen Monat startet, die Meldung über den entsprechenden Feiertag jedoch unterbleibt. Ist die Einbindung der beiden Funktionen überhaupt so richtig? Wie erreiche ich, dass nach der Feiertagsberechnung diese farbig unterlegt werden?

    Gruß
    Werner


      


    Betrifft: AW: Start von Makro und Funktion von: Hans W. Hofmann
    Geschrieben am: 01.10.2003 10:56:32

    Halten wir uns mal an den vorgestellten Code:
    So wie ich das sehe nimmt Deine(?) Funktion das Systemdatum und überprüft es auf die vorgegebenen Feiertage und meldet einen Treffer mittels MsxBox.
    Wie muss man sich das vorstellen, wenn
    > die Mappe zwar im aktuellen Monat startet?
    Welcher einer wäre
    > den entsprechenden Feiertag?
    Und was bitte soll
    > farbig unterlegt werden?
    Fragen über Fragen...


    Gruß HW


      


    Betrifft: AW: Start von Makro und Funktion von: Werner Busch
    Geschrieben am: 01.10.2003 11:14:55

    Die Mappe besteht, wie gesagt, aus 12 Monatsblättern, die mit "Jan, Feb,..." bezeichnet sind. Beim Öffnen der Mappe startet sie genau im aktuellen Monat, heute also auf dem Tabellenblatt "Okt". Das klappt!
    Aus der Berechnung der Feiertage vom Ostertermin aus, diese sind im Code näher bezeichnet, soll die msgbox den jeweiligen Text "Heute ist ..." ausgeben.
    Als Zusatz, und das ist nicht im Makro enthalten, suche ich einen Weg, wie ich das Makro ergänzen muss, um die dort angegebenen Feiertage im ganzen Jahr, also in den jeweiligen Tabellenblättern "Jan, Feb,...) zu markieren. Wie ich schon schrieb, sind das Tagesdatum in Spalte A und der Wochentag in Spalte B.

    Gruß
    Werner


      


    Betrifft: AW: noch offen von: Hans W. Hofmann
    Geschrieben am: 01.10.2003 12:19:48

    Ach ja, Excel gut - VBA nein
    Von wem ist dann der Code? Allenfalls nicht von Dir!
    Ich empfinde es als granatenmäßig schlechten Stil, wenn man fremden Code publiziert, ohne den Autor zu zitieren :-( das kann doch wenigstens verlangen, oder?
    Unter den Umständen sehe ich auch keine Chance Dir weiterzuhelfen...
    Wie willst Du denn einen Lösungsvorschlag umsetzen, wenn Du keine Ahnung von VBA hast?


    Gruß HW


      


    Betrifft: AW: noch offen von: Werner Busch
    Geschrieben am: 01.10.2003 12:28:10

    Danke, auch wenn Du mir nicht helfen willst (kannst?).

    Die Oster-Funtion wurde mir von einem Kollegen zur Verfügung gestellt. Seine Quelle kenne ich nicht. Ich habe diese Anfrage mit seinem Einverständnis gestellt. Mir ist die Zeit zu wertvoll, um mich mit Dir über Etikette zu unterhalten.

    Ich wünsche einen schönen Tag.

    wb


     

    Beiträge aus den Excel-Beispielen zum Thema " Start von Makro und Funktion"