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

Schaltjahr

Schaltjahr
Werner
Hallo und guten Abend
in meiner Orginaldatei komme ich nicht weiter und habe deshalb ein Auszug mit dem Problem erstellt.
Wenn das Drehfeld auf ein Schaltjahr kommt soll der 29 Februar sichtbar sein
ansonsten Spalte ausgeblendet werden.
Mit der Sub Worksheet_Change Methode klappt es bei mir nicht
Wer hat eine Lösung?

Die Datei https://www.herber.de/bbs/user/78215.xls wurde aus Datenschutzgründen gelöscht

Vielen Dank im voraus
Tschüss Werner

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Schaltjahr
04.01.2012 21:12:40
Andre´
Hallo Werner,
Worksheet_Change wird erst ausgelöst, wenn du z.B. in einer Zelle etwas eingibst und mit der Enter bestätigst.
Versuche es so:
https://www.herber.de/bbs/user/78217.xls
MFG Andre
AW: Schaltjahr
04.01.2012 21:24:51
Werner
Danke Andre
klappt zwar aber ich erkenne nicht was du anders gemacht hast außer den Test.Der Worksheet_Change
Befehl ist doch weiterhin da?
Bitte um Antwort
Werner
AW: Schaltjahr
04.01.2012 21:36:37
Werner
Andre
ich habe es gefundenDu hast das Drehfeld nit dem Makro Test belegt. Klasse- wieder etwas gelernt
Danke und Tschüss
Werner
AW: Schaltjahr
04.01.2012 21:39:20
fcs
Hallo Werner,
wie André schon schrieb: Das Change-Ereignis wird durch die Änderungen mit dem Drehfeld nicht ausgelöst, auch wenn du die Zelle B3 als Target-Zelle prüfst.
Möglichkeit A: Du verwendest das Calculate-Ereignis des Sheets
Private Sub Worksheet_Calculate()
With Me.Range("BO:BO").EntireColumn
If Range("B6").Value = "KeinSchaltjahr" And .Hidden = False Then
.Hidden = True
ElseIf Range("B6").Value = "Schaltjahr" And .Hidden = True Then
.Hidden = False
End If
End With
End Sub

Möglichkeit B: Du weist dem Drehfeld das folgende Makro zu, welches du vorher in ein allemeines Modul der Datei kopierst.
Public Sub Spalte_BO_Ein_Aus()
With Range("BO:BO").EntireColumn
If Range("B6").Value = "KeinSchaltjahr" Then
.Hidden = True
Else
.Hidden = False
End If
End With
End Sub

Möglichkeit C:
Du verwendest das Drehfeld/Spinbutton aus den Active-X-Steuerelementen mit folgendem Ereignismakro:
Private Sub SpinButton1_Change()
With Me.Range("BO:BO").EntireColumn
If Range("B6").Value = "KeinSchaltjahr" Then
.Hidden = True
Else
.Hidden = False
End If
End With
End Sub

Unter den Eigenschaften des Spinbuttons stellst du ein:
LinkedCell: B3
Min: 1900
Max: 9999
Gruß
Franz
Anzeige
Schaltjahrformel einfacher
05.01.2012 01:24:12
Erich
Hi Werner,
deine Formel in B6 für das Schaltjahr erscheint mir zu kompliziert. Hier drei Alternativen:
 B
32012
4 
5 
6Schaltjahr
7Schaltjahr
8Schaltjahr
9Schaltjahr

Formeln der Tabelle
ZelleFormel
B6=WENN(TAG(DATUM(REST(B3;400)+100;3;))=29;"";"Kein ")&"Schaltjahr"
B7=WENN(TAG(DATUM(B3;2;29))=1;"Kein ";"")&"Schaltjahr"
B8=WENN(TAG((3&-B3)-1)=28;"Kein ";"")&"Schaltjahr"
B9=WENN(TAG(H5+59)=1;"Kein ";"")&"Schaltjahr"

Auch die Formel in BP5
=WENN(BO5"";BO5+1;BN5+1)
kannst du einfacher schreiben:
=MAX(BO5;BN5)+1
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Schaltjahrformel einfacher
05.01.2012 07:28:37
Luschi
Hallo Erich,
das hier ist die offzielle Formel zur Erkennung des Schaltjahres von M$:
=IF(OR(MOD(A1,400)=0,AND(MOD(A1,4)=0,MOD(A1,100)0)),"Leap Year", "NOT a Leap Year")
zu dt.
=WENN(ODER(REST(A1;400)=0;UND(REST(A1;4)=0;REST(A1;100)0));"Leap Year"; "NOT a Leap Year")
siehe: http://support.microsoft.com/kb/214019/EN-US vom 13.12.2011
Interessant ist auch dieser Artikel: http://support.microsoft.com/kb/214326/de
Dort wird das Schaltjahr-Problem von Excel 2000 beschrieben; aber auch Excel XP. 2003, 2007 und 2010 SP1 haben dieses Problem.
Es gibt in diesen Excel-Versionen den Tag '20.02.1900'
Doch auf welchen Tag zur ERmitlung des Schaltjahres soll man sich denn Berufen; dazu ein kleines Bildchen!
Gruß von Luschi
aus kein-Paris
Userbild
Anzeige
AW: Schaltjahrformel einfacher
05.01.2012 09:31:42
Erich
Hi Luschi,
danke, aber: Was willst du mir damit sagen?
Ich habe eine Weile gebraucht dafür, herauszubekommen, was du da eigentlich berechnet hast.
Was passiert da beim Übergang vom 03.03.1900 zum 04.03.1900? Was wird da zum Schaltjahr?
Ich glaube, da hast du Äpfel und Birnen ein wenig vertauscht:
Die Schaltjahresformeln gehen von einen Jahr als Parameter aus, nicht von einem Datum...
Hast du gewusst, dass du z. B. überprüft hast, ob das Jahr 1960 ein Schaltjahr war?
Hier deine Grafik (?!) als Tabelle, etwas ergänzt und mit Formeln:
 ABCDEF
1?Jahr"29.2." in Jahr ErichM$
221.02.19005229.02.1952 SchaltjahrLeap Year
322.02.19005301.03.1953 Kein SchaltjahrNOT a Leap Year
423.02.19005401.03.1954 Kein SchaltjahrNOT a Leap Year
524.02.19005501.03.1955 Kein SchaltjahrNOT a Leap Year
625.02.19005629.02.1956 SchaltjahrLeap Year
726.02.19005701.03.1957 Kein SchaltjahrNOT a Leap Year
827.02.19005801.03.1958 Kein SchaltjahrNOT a Leap Year
928.02.19005901.03.1959 Kein SchaltjahrNOT a Leap Year
1029.02.19006029.02.1960 SchaltjahrLeap Year
1101.03.19006101.03.1961 Kein SchaltjahrNOT a Leap Year
1202.03.19006201.03.1962 Kein SchaltjahrNOT a Leap Year
1303.03.19006301.03.1963 Kein SchaltjahrNOT a Leap Year
1404.03.19006429.02.1964 SchaltjahrLeap Year
1505.03.19006501.03.1965 Kein SchaltjahrNOT a Leap Year

Formeln der Tabelle
ZelleFormel
B2=A2
C2=DATUM(A2;2;29)
E2=WENN(TAG(DATUM(A2;2;29))=1;"Kein ";"")&"Schaltjahr"
F2=WENN(ODER(REST(A2;400)=0;UND(REST(A2;4)=0;REST(A2;100)<>0)); "Leap Year"; "NOT a Leap Year")

Ob man nun wie der M$-Kalender den falschen 29.2.1900 zulässt oder nicht, ist IMHO Geschmackssache.
Wenn man nicht in die Nähe des Jahres 1900 kommt, spielt das überhaupt keine Rolle.
Übrigens: Anlass meines ersten Beitrags war Werners Formel für das Schaltjahr.
Hast du die verstanden? Ich nicht.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Schaltjahrformel einfacher
05.01.2012 12:26:48
Luschi
Hallo Erich,
danke Für Deine Aufklärung, bin wohl heute Morgen etwas zu früh aufgestanden. Natürlich hast Du Recht, daß nur die Jahreszahl eine Rolle spielt und nicht das vollständige Datum.
Trotzdem ist es für M$ kein Ruhmesblatt, daß auch in der neuesten Excelversion dieses Anfangsproblem immer noch besteht.
Gruß von Luschi
aus klein-Paris
AW: Schaltjahrformel einfacher
05.01.2012 12:41:58
Luschi
Hallo Erich und an alle anderen Excel-Fan's,
hab mir mal die Mühe gemacht und die Datumsanzeige des Betriebssystems (Windows 7-Ultimate) auf Februar 1900 umgeschalten. Und siehe da, 'Null Problemo' - alles OK - es gibt keinen 29.02.1900.
Als für die Windowseinführung stark geworben wurde, da hieß es: Eine Resourcen-DLL für alle Programme.
Aber MS-Office scheint da die berühmte Ausnahme zu sein - da kocht jeder sein Süppchen.
Gruß von Luschi
aus klein-Paris
Anzeige
der 29.02.1900
05.01.2012 12:59:23
Erich
Hi Luschi,
"die Datumsanzeige des Betriebssystems (Windows 7-Ultimate) auf Februar 1900 umgeschalten"
Ich verstehe absolut nicht, was du da "umgeschaltet" hast.
Wie könnte man eine Datumsanzeige auf Februar 1900 umschalten? Was bedeutet das?
Und wo gibt es dann keinen 29.02.1900 mehr?
Nochmal zum Ausgangspunkt:
Anlass meines ersten Beitrags war Werners Formel für das Schaltjahr. Hast du die verstanden? Ich nicht.
Und noch mal zum 29.2.1900 in M$-Office:
Wenn M$ das jetzt ändern würde - gäbe das nicht ein heftiges Chaos?
Für den heutigen 05.01.2012 steht jetzt als Wert 40913 in der Zelle.
Killt man den 29.02.1900, wird daraus dann der 06.01.2012. Viel Spaß beim Systemwechsel!
(Das hat sich M$ wohl auch schon gedacht, als sie den Fehler von Lotus 1-2-3 übernommen haben.)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
ich denke mal, er hat ...
05.01.2012 13:12:52
Rudi
Hallo,
... das Systemdatum auf Feb. 1900 geändert.
btw.: Gibt's eigentlich für Samoa eine Spezial-Edition? Da ist ja der 30.12.2011 entfallen.
Gruß
Rudi
AW: der 29.02.1900
05.01.2012 13:22:26
Luschi
Hallo Erich,
ich habe in der Datumsanzeige der Taskleiste mir das Datum anzeigen lassen und dann solange auf die Bild-Oben-Taste gedrückt, bis die Datumsvorschau für den Februar 1900 angezeigt wurde.
Egal woher das Problem kommt in MS-Office, VB6, wenn die Datumsfunktionen nicht korrekt sind, wie soll man dann zu den anderen Funktionen vollstes Vertrauen haben.
In meiner Firma werden die Daten zwar in eine SQL-DB verwaltet, aber dann auf Excel runtergebrochen und die Auswertungen an den Vorstand sind ppt-Ansichten auf der Grundlage von Excel-Pivot-Tabellen.
Naja, man soll ja den Glauben an M$ nicht verlieren, wer aber altbekannte Probleme nicht löst, ... wo bleibt da die Zukunft (und Lotus-123 und Multiplan dürfen da kein Alibi sein - sonst haben wir nur noch Plagiatoren).
Laut Wikepedia:
Im Jahre 1990 wurde, mit dem Erscheinen der letzten Version 4.2, die Entwicklung von Multiplan eingestellt, da Microsoft schon seit 1987 Excel parallel auf dem Markt etabliert hatte.
siehe: http://de.wikipedia.org/wiki/Microsoft_Multiplan#Geschichte
Gruß von Luschi
aus klein-Paris
Anzeige
Glauben und vertrauen
05.01.2012 16:44:47
Erich
Hi Luschi,
das habe ich jetzt so verstandem, dass du im Windows-Kalender nachgesehen hast, ob es da den 29.02.1900 gibt.
Es gibt ihn nicht. (Verstellt hast du das Sysgtemdatum damit ja nicht.) :-)
Du hättest nicht si weit gehen zu brauchen. Schon der Office-Bestandteil VBA weiß, dass es dieses Datum nicht gab.
Probier mal:

Sub aaaaa()
MsgBox "59: " & Format(59, "dd.mm.yyyy") & vbLf & _
"60: " & Format(60, "dd.mm.yyyy") & vbLf & _
"61: " & Format(61, "dd.mm.yyyy") & vbLf & vbLf & _
"40967: " & Format(40967, "dd.mm.yyyy") & vbLf & _
"40968: " & Format(40968, "dd.mm.yyyy") & vbLf & _
"40969: " & Format(40969, "dd.mm.yyyy") & vbLf
End Sub
Noch paar Nebenbemerkungen:
"wie soll man dann zu den anderen Funktionen vollstes Vertrauen haben":
Sollte man nicht.
"man soll ja den Glauben an M$ nicht verlieren":
Ich glaube ja manches, aber M$ und jenes höhere Wesen gehören nicht dazu.
"Auswertungen an den Vorstand":
Selbst Vorstände sind Menschen und müssen mit den Ergebnissen ihrer menschlichen Mitarbeiter
und der von Menschen programmierten Software leben.
"die offzielle Formel zur Erkennung des Schaltjahres von M$":
'Offiziell' ist da überhaupt nichts, auch wenn M$ das vielleicht gern so sehen möchte - per Marktbeherrschung.
Schau mal nach der (alten) Funktion KALENDERWOCHE...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige