Seite 1 von 1
Calc-Funktionen
Verfasst: Sa, 16.08.2008 13:44
von keksi1970
Hi,
also folgendes Problem :
warum funktioniert :
Code: Alles auswählen
Function checkKW(datum as date)as integer
Dim AuswertungDatum as string
Dim args( 1 ) As Variant
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
AuswertungDatum = datum
args(0) = AuswertungDatum
args(1) = "2"
CheckKW = oFunctionAccess.callFunction( "WEEKNUM", args() )
End Function
wie gewünscht (Soll mir die KW des Datums anzeigen)
während :
Code: Alles auswählen
Function checkWochen(startdatum as date, Enddatum as date)as integer
Dim args( 2 ) As Variant
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
args(0) = startdatum
args(1) = Enddatum
args(2) = "1"
checkWochen = oFunctionAccess.callFunction( "WEEKS", args() )
End Function
die Fehlermeldung "Objektvariable nicht belegt" zeigt
Code: Alles auswählen
REM ***** BASIC *****
Dim AuswertungsDoc as object
Dim Auswertungssheet as Object
dim AD as date
dim ED as date
Dim startdatum as date
dim enddatum as date
Sub Main
AuswertungsDoc = ThisComponent
Auswertungssheet = Auswertungsdoc.sheets(0)
AD = Auswertungssheet.getcellrangebyname("F2").value
ED = Auswertungssheet.getcellrangebyname("G2").value
datumKW = checkKW(AD)
print datumKW
Wochen = checkWochen(AD,ED)
print Wochen
End Sub
Damit rufe ich die Funktionen auf.
Wäre schön wenn mit das einer erklären könnte
LG Andreas
Re: Calc-Funktionen
Verfasst: Sa, 16.08.2008 22:44
von komma4
Ich kann Dir nicht erklären, warum die erste Variante funktioniert.
FunctionAccess verlangt die Übergabe der Parameter als
Long oder
Double, nicht als
date.
Es funktioniert hier (2,4,1 deutsch/Linux):
Code: Alles auswählen
Function checkWochen(startdatum , Enddatum )as integer
Dim args( 2 )
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
args(0) = startdatum
args(1) = Enddatum
args(2) = "1"
checkWochen = oFunctionAccess.callFunction( "WOCHEN" , args() )
End Function
WEEKS ergibt
NoSuchElementException
Code: Alles auswählen
' Array der FunktionsBeschreibungen
aFBn = _
createUnoService( "com.sun.star.sheet.FunctionDescriptions" )
If aFBn.hasByName( "WOCHEN" ) Then
' einzelne FunktionsBeschreibung
aEineFB = aFBn.getByName( "WOCHEN" )
Else
print "WOCHEN Funktion nicht vorhanden"
End If
If aFBn.hasByName( "WEEKS" ) Then
' einzelne FunktionsBeschreibung
aEineFB = aFBn.getByName( "WEEKS" )
Else
print "WEEKS Funktion nicht vorhanden"
End If
Wie gesagt: ich kann Dir nicht erklären, warum die Variante nur mit
WEEKNUM geht, aber nicht mit
KALENDERWOCHE
Re: Calc-Funktionen
Verfasst: So, 17.08.2008 00:19
von keksi1970
also werde ich wohl auf die Funktion verzichten müssen.
in Version 2.31 unter Windows funktionieren die deutschen Bezeichnungen nicht und WEEKS geht auch nicht :/
oder hat jemand ne Idee, wie ich relativ einfach die Anzahl der Wochen bestimmen kann ?
lg
Andreas
Verfasst: So, 17.08.2008 01:21
von komma4
Zur Präzisierung, Andreas:
Du hast den geänderten Funktionsaufruf WEEKS gesehen?
Code: Alles auswählen
Function checkWochen(startdatum , Enddatum )as integer
Keine Übergabe als
date !
Der folgende Code gibt dir aus, was Du nutzen kannst:
Code: Alles auswählen
' 2008-08-17
Sub zeigeFunctionDescriptions
' Array der FunktionsBeschreibungen
aFBn = _
createUnoService( "com.sun.star.sheet.FunctionDescriptions" )
sAlleFunktionen = "=== Funktionsnamen ===" & CHR(13)
for i = lBound( aFBn.ElementNames ) to uBound( aFBn.ElementNames )
aFB = aFBn.getByIndex( i )
for j = lBound( aFB ) to uBound( aFB )
If aFB( j ).Name = "Name" Then
sAlleFunktionen = _
sAlleFunktionen & aFB( j ).Value & CHR(13)
End If
Next
Next
' Ausgabe in ein Writer-Dokument,
' folgende Anweisung aus TOOLS/Debug kopiert
LocUrl = "private:factory/swriter"
' NoArgs durch Array() ersetzt
oLocDocument = _
StarDesktop.LoadComponentFromURL(LocUrl,"_default",0,Array())
oLocText = oLocDocument.text
oLocCursor = oLocText.createTextCursor()
oLocCursor.gotoStart(False)
' eigene STRING-Variable ausgeben
oLocText.insertString(oLocCursor,sAlleFunktionen,False)
' -----------------------------------------------------------
End Sub
Ich kann nicht erklären warum
WEEKNUM funktioniert (obwohl nicht in der Liste), mit einem
date-Parameter.
Und es könnte an der 2.3.1 liegen!
Suche in der
Fehlerliste
Re: Calc-Funktionen
Verfasst: So, 17.08.2008 10:32
von keksi1970
Hi
Weeknum funktioniert, ebenso wie alle anderen Daten-Funktionen, die lt. OO-Wiki, als Argument NUMBER brauchen, daher ruf ich zwar die Prozedur mit datum auf, ändere es aber in einen string. (Warum ist mir eigentlich reltiv egal

)
Die Funktionen, die ein Datum benötigen, krieg ich einfach nicht hin.
=WEEKNUM (number; mode)
=MINUTE (number)
=WEEKDAY (number; type)
funktioniert, während
=WEEKS (start date; end date; type)
=WEEKNUM_ADD (date; return type)
nicht funktioniert.
lg Andreas
Re: Calc-Funktionen
Verfasst: Mi, 20.08.2008 20:57
von hawe
Hm, bleib doch einfach bei den Funktionen die Basic bietet.
Bei mir 2.4.1 Win funktioniert der Aufruf WEEK nicht dagegen aber WOCHEN.
Nach meinen Erfahrungen funktioniert WEEK wie
Code: Alles auswählen
Function Week(date1 as Date, Date2 as Date) as Integer
Dim d as double
d = Date2 - Date1
Week = int(d/7) - ((d mod 7)>1)*1
End Function
Gruß HW
Hans W. Hofmann
Re: Calc-Funktionen
Verfasst: Mi, 20.08.2008 22:53
von keksi1970
brauch ich wenigstens keine hilfszeile mehr
danke dir, auf die idee bin ich jetzt nu nich gekommen, naja, ich brauch urlaub
lg andreas