Ich würde gerne eine Excel-Datei, die unter Windows funktioniert, auch am Mac, MacOS 10.13, unter Excel 2016 Mac verwenden.
Allerdings kommt beim Start der Anwendung ein Laufzeitfehler "438" bei der Codezeile
If Worksheets("WortUhr").OptionButton1.Value = True Then (siehe Eintrag in rot)
Kann dazu jemand was beitragen?
(kann leider die XLSM-Datei nicht hochladen, daher nachf. VBA-Code)
Code:
'Public Const Schriftfarbe As Long = 255 'Farbe der Schrift, hier jetzt rot.
'Public Const Diffusor As Long = 5263440 'Farbe des Diffusors, hier jetzt grau
'Public Const Frontfolie As Long = 0 'Farbe der Frontfolie, hier jetzt schwarz
Dim Schriftfarbe As Long
Dim Diffusor As Long
Dim Frontfolie As Long
Dim U As TextRange2
Dim NextEvent As Date
Dim e, c, m, h, l, r, x, y, z As Long
Sub updateUhr() 'Dauerschleife zum Anzeigen der Uhrzeit
x = Worksheets("WortUhr").Cells(25, 2).Value 'gewählte Frontfolie einlesen
Frontfolie = Worksheets("UhrFarben").Cells(x + 1, 2).Value
y = Worksheets("WortUhr").Cells(28, 2).Value 'gewählte Schriftfarbe einlesen
Schriftfarbe = Worksheets("UhrFarben").Cells(y + 1, 2).Value
z = Worksheets("WortUhr").Cells(31, 2).Value 'gewählte Diffusorfarbe einlesen
Diffusor = Worksheets("UhrFarben").Cells(z + 1, 2).Value
' WÖRTER:
'ES/IT=2, IST/IS=3, FÜNF/FIVE=4, ZEHN/TEN=5, VIERTEL/QUARTER=6, ZWANZIG/TWENTY=7, VOR/TO=8, NACH/PAST=9, HALB/HALF=10
'EIN/A=11, EINS/ONE=12, ZWEI/TWO=13, DREI/THREE=14, VIER/FOUR=15, FÜNF/FIVE=16, SECHS/SIX=17, SIEBEN/SEVEN=18
'ACHT/EIGHT=19, NEUN/NINE=20, ZEHN/TEN=21, ELF/ELEVEN=22, ZWÖLF/TWELVE=23, UHR/O´CLOCK=24
Call deutsch 'stellt die Matrix auf deutsch um
Call löscheUhr 'löscht alle Buchstaben/Wörter
If Worksheets("WortUhr").OptionButton3.Value = False Then 'steht der OptionButton auf Uhrzeit ?
Call updateSekunden 'wurde die Sekundenanzeige gewählt, dann geht es hier weiter
Else 'wurde die Stundenzeige gewählt, dann geht es hier weiter
' ES IST / IT IS
Call zeigeZeit(2)
Call zeigeZeit(3)
' Minutenpunkte 1-4
For c = 1 To Minute(Now) Mod 5
Worksheets("WortUhr").Shapes("Minute" & c).Fill.ForeColor.RGB = Schriftfarbe
Next c
' alle fünf Minuten / UHR oder O`CLOCK wenn volle Stunde
m = Minute(Now) \ 5
'Minuten
Select Case m
Case 0: Call zeigeZeit(24) 'UHR, WENN VOLLE STUNDE
Case 1: Call zeigeZeit(4): Call zeigeZeit(9) 'FÜNF NACH
Case 2: Call zeigeZeit(5): Call zeigeZeit(9) 'ZEHN NACH
Case 3: Call zeigeZeit(6): Call zeigeZeit(9) 'VIERTEL NACH
Case 4: Call zeigeZeit(7): Call zeigeZeit(9) 'ZWANZIG NACH
Case 5: Call zeigeZeit(4): Call zeigeZeit(8): Call zeigeZeit(10): P = 1 'FÜNF VOR HALB + 1 STUNDE
Case 6: Call zeigeZeit(10): P = 1 'HALB + 1 STUNDE
Case 7: Call zeigeZeit(4): Call zeigeZeit(9): Call zeigeZeit(10): P = 1 'FÜNF NACH HALB + 1 STUNDE
Case 8: Call zeigeZeit(7): Call zeigeZeit(8): P = 1 'ZWANZIG VOR + 1 STUNDE
Case 9: Call zeigeZeit(6): Call zeigeZeit(8): P = 1 'VIERTEL VOR + 1 STUNDE
Case 10: Call zeigeZeit(5): Call zeigeZeit(8): P = 1 'ZEHN VOR + 1 STUNDE
Case 11: Call zeigeZeit(4): Call zeigeZeit(8): P = 1 'FÜNF VOR + 1 STUNDE
End Select
'Stunden
h = Hour(Now) + P 'Stunde plus 1 Stunde wenn P = 1
'wir rechnen mit 12 Stunden
If h <= 12 Then
h = h + 12
End If
If h > 12 Then
h = h - 12
End If
Select Case h
Case 1:
Select Case m
Case Is = 0: Call zeigeZeit(11) 'EIN (Minuten kleiner als 5 dann noch glatte Stunde)
Case Is > 0: Call zeigeZeit(12) 'EINS (Minuten größer als 4 dann "fünf nach")
End Select
Case 2: Call zeigeZeit(13) 'ZWEI
Case 3: Call zeigeZeit(14) 'DREI
Case 4: Call zeigeZeit(15) 'VIER
Case 5: Call zeigeZeit(16) 'FÜNF
Case 6: Call zeigeZeit(17) 'SECHS
Case 7: Call zeigeZeit(18) 'SIEBEN
Case 8: Call zeigeZeit(19) 'ACHT
Case 9: Call zeigeZeit(20) 'NEUN
Case 10: Call zeigeZeit(21) 'ZEHN
Case 11: Call zeigeZeit(22) 'ELF
Case 12: Call zeigeZeit(23) 'ZWÖLF
End Select
End If
NextEvent = Time + TimeSerial(0, 0, 1) 'eine Sekunde warten
Worksheets("WortUhr").Cells(2, 2).Value = Time 'die digitale Uhrzeit in Zelle B2 ausgeben
Application.OnTime NextEvent, "updateUhr" 'die Uhr updaten
End Sub
Sub updateSekunden() 'zeigt die Sekunden in der Matrix
Call löscheUhr
r = Right$(Format(Time, "ss"), 1) 'die Einer der Sekunden
l = Left$(Format(Time, "ss"), 1) 'die Zehner der Sekunden
e = 6 'ab Spalte 7(6) die Einer Sekunden
Select Case r 'die Einer der Sekunden
Case 0: Call zero 'Null
Case 1: Call eins 'Eins
Case 2: Call zwei 'Zwei
Case 3: Call drei 'Drei
Case 4: Call vier 'Vier
Case 5: Call fünf 'Fünf
Case 6: Call sechs 'Sechs
Case 7: Call sieben 'Sieben
Case 8: Call acht 'Acht
Case 9: Call neun 'Neun
End Select
e = 0 'ab Spalte 1(0) die Zehner Sekunden
Select Case l 'die Zehner der Sekunden
Case 0: Call zero 'Null
Case 1: Call eins 'Eins
Case 2: Call zwei 'Zwei
Case 3: Call drei 'Drei
Case 4: Call vier 'Vier
Case 5: Call fünf 'Fünf
Case 6: Call sechs 'Sechs
Case 7: Call sieben 'Sieben
Case 8: Call acht 'Acht
Case 9: Call neun 'Neun
End Select
End Sub
Sub zeigeZeit(row) 'zeigt die Worte in der Matrix
With Worksheets("UhrWorte")
If Worksheets("WortUhr").OptionButton1.Value = True Then 'wurde die deutsche Sprache gewählt, dann geht es hier weiter
Set U = Worksheets("WortUhr").Shapes("UhrForm").TextFrame2.TextRange
U.Characters(.Cells(row, 2), .Cells(row, 3)).Font.Fill.ForeColor.RGB = Schriftfarbe 'wo finde ich die deutschen Worte
Else 'wurde die englische Sprache gewählt, dann geht es hier weiter
Set U = Worksheets("WortUhr").Shapes("UhrForm").TextFrame2.TextRange
U.Characters(.Cells(row, 6), .Cells(row, 7)).Font.Fill.ForeColor.RGB = Schriftfarbe 'wo finde ich die englischen Worte
End If
End With
End Sub
Sub zeigeSekunden(row)
With Worksheets("UhrZahlen")
Set U = Worksheets("WortUhr").Shapes("UhrForm").TextFrame2.TextRange
U.Characters(.Cells(row, 1) + e, .Cells(row, 2)).Font.Fill.ForeColor.RGB = Schriftfarbe 'wo finde ich die Zahlen für die Einer/Zehner Sekunden
End With
End Sub
.
.
.
.
Allerdings kommt beim Start der Anwendung ein Laufzeitfehler "438" bei der Codezeile
If Worksheets("WortUhr").OptionButton1.Value = True Then (siehe Eintrag in rot)
Kann dazu jemand was beitragen?
(kann leider die XLSM-Datei nicht hochladen, daher nachf. VBA-Code)
Code:
'Public Const Schriftfarbe As Long = 255 'Farbe der Schrift, hier jetzt rot.
'Public Const Diffusor As Long = 5263440 'Farbe des Diffusors, hier jetzt grau
'Public Const Frontfolie As Long = 0 'Farbe der Frontfolie, hier jetzt schwarz
Dim Schriftfarbe As Long
Dim Diffusor As Long
Dim Frontfolie As Long
Dim U As TextRange2
Dim NextEvent As Date
Dim e, c, m, h, l, r, x, y, z As Long
Sub updateUhr() 'Dauerschleife zum Anzeigen der Uhrzeit
x = Worksheets("WortUhr").Cells(25, 2).Value 'gewählte Frontfolie einlesen
Frontfolie = Worksheets("UhrFarben").Cells(x + 1, 2).Value
y = Worksheets("WortUhr").Cells(28, 2).Value 'gewählte Schriftfarbe einlesen
Schriftfarbe = Worksheets("UhrFarben").Cells(y + 1, 2).Value
z = Worksheets("WortUhr").Cells(31, 2).Value 'gewählte Diffusorfarbe einlesen
Diffusor = Worksheets("UhrFarben").Cells(z + 1, 2).Value
' WÖRTER:
'ES/IT=2, IST/IS=3, FÜNF/FIVE=4, ZEHN/TEN=5, VIERTEL/QUARTER=6, ZWANZIG/TWENTY=7, VOR/TO=8, NACH/PAST=9, HALB/HALF=10
'EIN/A=11, EINS/ONE=12, ZWEI/TWO=13, DREI/THREE=14, VIER/FOUR=15, FÜNF/FIVE=16, SECHS/SIX=17, SIEBEN/SEVEN=18
'ACHT/EIGHT=19, NEUN/NINE=20, ZEHN/TEN=21, ELF/ELEVEN=22, ZWÖLF/TWELVE=23, UHR/O´CLOCK=24
Call deutsch 'stellt die Matrix auf deutsch um
Call löscheUhr 'löscht alle Buchstaben/Wörter
If Worksheets("WortUhr").OptionButton3.Value = False Then 'steht der OptionButton auf Uhrzeit ?
Call updateSekunden 'wurde die Sekundenanzeige gewählt, dann geht es hier weiter
Else 'wurde die Stundenzeige gewählt, dann geht es hier weiter
' ES IST / IT IS
Call zeigeZeit(2)
Call zeigeZeit(3)
' Minutenpunkte 1-4
For c = 1 To Minute(Now) Mod 5
Worksheets("WortUhr").Shapes("Minute" & c).Fill.ForeColor.RGB = Schriftfarbe
Next c
' alle fünf Minuten / UHR oder O`CLOCK wenn volle Stunde
m = Minute(Now) \ 5
'Minuten
Select Case m
Case 0: Call zeigeZeit(24) 'UHR, WENN VOLLE STUNDE
Case 1: Call zeigeZeit(4): Call zeigeZeit(9) 'FÜNF NACH
Case 2: Call zeigeZeit(5): Call zeigeZeit(9) 'ZEHN NACH
Case 3: Call zeigeZeit(6): Call zeigeZeit(9) 'VIERTEL NACH
Case 4: Call zeigeZeit(7): Call zeigeZeit(9) 'ZWANZIG NACH
Case 5: Call zeigeZeit(4): Call zeigeZeit(8): Call zeigeZeit(10): P = 1 'FÜNF VOR HALB + 1 STUNDE
Case 6: Call zeigeZeit(10): P = 1 'HALB + 1 STUNDE
Case 7: Call zeigeZeit(4): Call zeigeZeit(9): Call zeigeZeit(10): P = 1 'FÜNF NACH HALB + 1 STUNDE
Case 8: Call zeigeZeit(7): Call zeigeZeit(8): P = 1 'ZWANZIG VOR + 1 STUNDE
Case 9: Call zeigeZeit(6): Call zeigeZeit(8): P = 1 'VIERTEL VOR + 1 STUNDE
Case 10: Call zeigeZeit(5): Call zeigeZeit(8): P = 1 'ZEHN VOR + 1 STUNDE
Case 11: Call zeigeZeit(4): Call zeigeZeit(8): P = 1 'FÜNF VOR + 1 STUNDE
End Select
'Stunden
h = Hour(Now) + P 'Stunde plus 1 Stunde wenn P = 1
'wir rechnen mit 12 Stunden
If h <= 12 Then
h = h + 12
End If
If h > 12 Then
h = h - 12
End If
Select Case h
Case 1:
Select Case m
Case Is = 0: Call zeigeZeit(11) 'EIN (Minuten kleiner als 5 dann noch glatte Stunde)
Case Is > 0: Call zeigeZeit(12) 'EINS (Minuten größer als 4 dann "fünf nach")
End Select
Case 2: Call zeigeZeit(13) 'ZWEI
Case 3: Call zeigeZeit(14) 'DREI
Case 4: Call zeigeZeit(15) 'VIER
Case 5: Call zeigeZeit(16) 'FÜNF
Case 6: Call zeigeZeit(17) 'SECHS
Case 7: Call zeigeZeit(18) 'SIEBEN
Case 8: Call zeigeZeit(19) 'ACHT
Case 9: Call zeigeZeit(20) 'NEUN
Case 10: Call zeigeZeit(21) 'ZEHN
Case 11: Call zeigeZeit(22) 'ELF
Case 12: Call zeigeZeit(23) 'ZWÖLF
End Select
End If
NextEvent = Time + TimeSerial(0, 0, 1) 'eine Sekunde warten
Worksheets("WortUhr").Cells(2, 2).Value = Time 'die digitale Uhrzeit in Zelle B2 ausgeben
Application.OnTime NextEvent, "updateUhr" 'die Uhr updaten
End Sub
Sub updateSekunden() 'zeigt die Sekunden in der Matrix
Call löscheUhr
r = Right$(Format(Time, "ss"), 1) 'die Einer der Sekunden
l = Left$(Format(Time, "ss"), 1) 'die Zehner der Sekunden
e = 6 'ab Spalte 7(6) die Einer Sekunden
Select Case r 'die Einer der Sekunden
Case 0: Call zero 'Null
Case 1: Call eins 'Eins
Case 2: Call zwei 'Zwei
Case 3: Call drei 'Drei
Case 4: Call vier 'Vier
Case 5: Call fünf 'Fünf
Case 6: Call sechs 'Sechs
Case 7: Call sieben 'Sieben
Case 8: Call acht 'Acht
Case 9: Call neun 'Neun
End Select
e = 0 'ab Spalte 1(0) die Zehner Sekunden
Select Case l 'die Zehner der Sekunden
Case 0: Call zero 'Null
Case 1: Call eins 'Eins
Case 2: Call zwei 'Zwei
Case 3: Call drei 'Drei
Case 4: Call vier 'Vier
Case 5: Call fünf 'Fünf
Case 6: Call sechs 'Sechs
Case 7: Call sieben 'Sieben
Case 8: Call acht 'Acht
Case 9: Call neun 'Neun
End Select
End Sub
Sub zeigeZeit(row) 'zeigt die Worte in der Matrix
With Worksheets("UhrWorte")
If Worksheets("WortUhr").OptionButton1.Value = True Then 'wurde die deutsche Sprache gewählt, dann geht es hier weiter
Set U = Worksheets("WortUhr").Shapes("UhrForm").TextFrame2.TextRange
U.Characters(.Cells(row, 2), .Cells(row, 3)).Font.Fill.ForeColor.RGB = Schriftfarbe 'wo finde ich die deutschen Worte
Else 'wurde die englische Sprache gewählt, dann geht es hier weiter
Set U = Worksheets("WortUhr").Shapes("UhrForm").TextFrame2.TextRange
U.Characters(.Cells(row, 6), .Cells(row, 7)).Font.Fill.ForeColor.RGB = Schriftfarbe 'wo finde ich die englischen Worte
End If
End With
End Sub
Sub zeigeSekunden(row)
With Worksheets("UhrZahlen")
Set U = Worksheets("WortUhr").Shapes("UhrForm").TextFrame2.TextRange
U.Characters(.Cells(row, 1) + e, .Cells(row, 2)).Font.Fill.ForeColor.RGB = Schriftfarbe 'wo finde ich die Zahlen für die Einer/Zehner Sekunden
End With
End Sub
.
.
.
.