Basic - eingebaute Funktion will nicht

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Neandertaler
Beiträge: 5
Registriert: Mi, 28.02.2024 23:10

Basic - eingebaute Funktion will nicht

Beitrag 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)
Karolus
********
Beiträge: 7442
Registriert: Mo, 02.01.2006 19:48

Re: Basic - eingebaute Funktion will nicht

Beitrag 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!
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Neandertaler
Beiträge: 5
Registriert: Mi, 28.02.2024 23:10

Re: Basic - eingebaute Funktion will nicht

Beitrag 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.
Karolus
********
Beiträge: 7442
Registriert: Mo, 02.01.2006 19:48

Re: Basic - eingebaute Funktion will nicht

Beitrag 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?
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Neandertaler
Beiträge: 5
Registriert: Mi, 28.02.2024 23:10

Re: Basic - eingebaute Funktion will nicht

Beitrag 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
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Basic - eingebaute Funktion will nicht

Beitrag 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
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Basic - eingebaute Funktion will nicht

Beitrag 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

Code: Alles auswählen

=EASTERSUNDAY(DATUM(2024;1;1))
einfacher wäre es natürlich der Funktion nur das Jahr zu übergeben. Die integrierte Funktion OSTERSONNTAG() erledigt das Problem ja sowieso.
Gruß,
mikeleb
Antworten