Basic - eingebaute Funktion will nicht

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Basic - eingebaute Funktion will nicht

Re: Basic - eingebaute Funktion will nicht

von mikeleb » Mo, 04.03.2024 09:22

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.

Re: Basic - eingebaute Funktion will nicht

von Hiker » So, 03.03.2024 22:56

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

von Neandertaler » Do, 29.02.2024 14:42

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

von Karolus » Do, 29.02.2024 12:24

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

von Neandertaler » Do, 29.02.2024 10:08

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

von Karolus » Do, 29.02.2024 00:22

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!

Basic - eingebaute Funktion will nicht

von Neandertaler » Mi, 28.02.2024 23:35

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)

Nach oben