Seite 1 von 1
Basic - eingebaute Funktion will nicht
Verfasst: Mi, 28.02.2024 23:35
von Neandertaler
edit (Modaration: mikeleb): Thema von Calc nach Makros und allgemeine Programmierung verschoben
Ich versuche eine Excel-Datei zu LibreOffice zu migrieren.
Bei den folgenden Zeilen erscheint die Fehlermeldung "basic-Laufzeitfehler 449 Arguent ist nicht optional.
Dim myYear
myYear = Year(myDate)
Re: Basic - eingebaute Funktion will nicht
Verfasst: Do, 29.02.2024 00:22
von Karolus
Mir
Fällt jetzt nur auf das du offenbar die Fehlermeldung falsch abgetippt hast ( Hint: copy&paste existiert )
Mehr kann ich, trotz der überwältigenden Informationsmenge von deiner Seite, auch nicht erraten!
Re: Basic - eingebaute Funktion will nicht
Verfasst: Do, 29.02.2024 10:08
von Neandertaler
Function osterSonntag(myDate As Long) As Long
Dim myYear
myYear = Year(myDate)
Dim tmp As Long
If Minute(myYear / 38) / 2 + 55 < 60 Then
tmp = 1
Else
tmp = 0
End If
osterSonntag = _
WorksheetFunction.Round((CDate(Day(Minute(myYear / 38) / 2 + 55) + _
tmp & ".4." & myYear) / 7), 0) * 7 - 6
End Function
Fehlermeldung ist:
BASIC-Laufzeitfehler.
'449'
Argument ist nicht optional.
Re: Basic - eingebaute Funktion will nicht
Verfasst: Do, 29.02.2024 12:24
von Karolus
Du hast Glück, die Funktion
OSTERSONNTAG gibts bereits als Calc-funktion, du darfst daher das gute Stück UDF einfach löschen!
apropos UDFs testen:
Function osterSonntag( myDate As Long ) As Long
Was glaubst du woher die Funktion das Argument:
myDate As Long hernimmt, wenn du sie einfach so direkt aus der Basic-IDE aufrufst?
Re: Basic - eingebaute Funktion will nicht
Verfasst: Do, 29.02.2024 14:42
von Neandertaler
Irgendwie hat es sich beruhigt und es funktioniert. Mir geht es auch im das Prinzip. Ich habe nun versucht, in Basic die Funktion EASTERSUNDAY aufzurufen. Aber es kommt ein paar mal die Fehlermeldung
BASIC-Laufzeitfehler.
'35'
Prozedur Sub oder Function nicht definiert.
Zusätzliche Informationen: EASTERSUNDAY
Mit Shift-F8 kommt dann die Fehlermeldung
BASIC-Laufzeitfehler.
'449'
Argument ist nicht optional
Re: Basic - eingebaute Funktion will nicht
Verfasst: So, 03.03.2024 22:56
von Hiker
Neandertaler hat geschrieben: ↑Do, 29.02.2024 14:42
.... Mir geht es auch im das Prinzip. Ich habe nun versucht, in Basic die Funktion EASTERSUNDAY aufzurufen. ...
Im Prinzip sind die Welten getrennt, d.h. BASIC weiss nicht, dass es eine Funktion EASTERSUNDAY in Calc gibt. Das muss man erst bekanntgeben.
Vgl:
https://forum.openoffice.org/en/forum/v ... p?t=110081
Re: Basic - eingebaute Funktion will nicht
Verfasst: Mo, 04.03.2024 09:22
von mikeleb
Hallo,
wenn ich in einer Calc-Datei die folgende Funktion als Makro anlege:
Code: Alles auswählen
Function eastersunday(myDate As Long) 'As Long
Dim myYear
myYear = Year(myDate)
eastersunday =int(cdate(( Minute(myYear / 38) / 2 + 55 < 60)+Day(Minute(myYear / 38) / 2 + 55) & ".4." & myYear)/7+.5)*7-6
End Function
dann funktioniert der Aufruf zum Beispiel per
einfacher wäre es natürlich der Funktion nur das Jahr zu übergeben. Die integrierte Funktion OSTERSONNTAG() erledigt das Problem ja sowieso.