Sie sind auf Seite 1von 4

Microsoft Knowledge Base

Push-Push Button mit VBA realisieren

Frage:

Wie kann ich unter Microsoft EXCEL 5.0/7.0/8.0 einen Symbolleistenschalter erzeugen, der beim ersten Mausklick gedrückt bleibt und beim
zweiten Mausklick ungedrückt ist (Push-Push-Schalter) usw. ?

Antwort:

Erstellen Sie hierzu die folgenden Prozeduren unter den jeweiligen Microsoft EXCEL Versionen und weisen Sie dem neuen Symbol die Prozedur
zu. Im Beispiel heißt die neue Symbolleiste "Symbolleiste 1" kann aber entsprechend Ihrer Vorstellung angepaßt werden.
Beispiel zu Microsoft EXCEL 5.0/7.0:

Sub Push_Push_Button_Toolbar()

If Toolbars("Symbolleiste 1").ToolbarButtons(1).Pushed Then


Toolbars("Symbolleiste 1").ToolbarButtons(1).Pushed = False
'hier Ihren Makro-Code einfügen
Else
Toolbars("Symbolleiste 1").ToolbarButtons(1).Pushed = True
'hier Ihren Makro-Code einfügen
End If

End Sub

Beispiel zu Microsoft EXCEL 8.0:

Sub Push_Push_Button_Commandbar()

If CommandBars("Symbolleiste 1").Controls(1).State = msoButtonDown Then


CommandBars("Symbolleiste 1").Controls(1).State = msoButtonUp
'hier Ihren Makro-Code einfügen
Else
CommandBars("Symbolleiste 1").Controls(1).State = msoButtonDown
'hier Ihren Makro-Code einfügen
End If

End Sub

Anmerkung: Das Beipiel für Microsoft EXCEL 5.0/7.0 ist auch unter der Version 8.0 lauffähig. Es wird jedoch empfohlen unter Microsoft EXCEL 8.0
das neue Objekmodell einzusetzen. Das alte Objektmodell ist jedoch aus Kompatibilität noch enthalten.

Die Verwendung des hier abgedruckten Makro- bzw. Programm-Codes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diesen
Makro bzw. dieses Programmlisting ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität, sowie ohne Anspruch auf Support zur
Verfügung. Der Makro bzw. das Programmlisting soll lediglich exemplarisch die Funktionsweise des hier abgedruckten oder auf der Diskette
enthaltenen Beispiels aufzeigen.
drückt bleibt und beim

neuen Symbol die Prozedur


den.

en unter Microsoft EXCEL 8.0

osoft stellt Ihnen diesen


Anspruch auf Support zur
n oder auf der Diskette
Microsoft Knowledge Base

Deutsche Kalenderwoche berechnen


Frage:

Ich arbeite mit Microsoft EXCEL 5.0 für WINDOWS oder mit Microsoft EXCEL für WINDOWS 95, Version 7.0 oder Version 8.0. Ich möchte zu einem
gegebenen Datum die dazugehörige Kalenderwoche berechnen. Die Funktion KALENDERWOCHE aus dem AddIn ANALYSEFUNKTIONEN
rechnet leider nicht entsprechend der DIN-Norm, sondern nach dem amerikanischen Standard.
Wie kann ich die Kalenderwochen nach DIN 1355 berechnen ?

Antwort:

Die deutschen Kalenderwochen berechnen sich wie folgt: Der 1. Januar eines Jahres gehört erst dann zur ersten Kalenderwoche, wenn dieser Tag
auf einen Montag, Dienstag, Mittwoch oder Donnerstag fällt. Falls der 1.Januar ein Freitag, Samstag oder Sonntag ist, zählt er, und ggf. auch der 2.
und 3. Januar, noch zur letzten Kalenderwoche des vorherigen Jahres.

Weiterhin können der 29., 30. und 31.12. eines Jahres schon zur Kalenderwoche 1 des neuen Jahres gehören. Das ist genau dann der Fall, wenn
der 31.12. auf einen Montag, Dienstag oder Mittwoch fällt.

Die folgende VBA-Funktion (VISUAL BASIC für Applikationen) liefert für ein Datum die Kalenderwoche nach deutschem Standard:

Function dt_Kalenderwoche(dat As Date) As Integer


Dim a As Integer
a = Int((dat - DateSerial(Year(dat), 1, 1) + _
((WeekDay(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
If a = 0 Then
a = dt_Kalenderwoche(DateSerial(Year(dat) - 1, 12, 31))
ElseIf a = 53 And (WeekDay(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 < = 3 Then
a=1
End If
dt_Kalenderwoche = a
End Function

Bitte beachten Sie:


Die Verwendung des hier abgedruckten Makro- bzw. Programm-Codes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diesen
Makro bzw. dieses Programm-Listing ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität, sowie ohne Anspruch auf Support zur
Verfügung. Der Makro bzw. das Programm-Listing soll lediglich exemplarisch die Funktionsweise des hier abgedruckten oder auf der Diskette
enthaltenen Beispiels aufzeigen.

12/16/1997
on 8.0. Ich möchte zu einem
ALYSEFUNKTIONEN

derwoche, wenn dieser Tag


ählt er, und ggf. auch der 2.

genau dann der Fall, wenn

Standard:

soft stellt Ihnen diesen


Anspruch auf Support zur
oder auf der Diskette