Seite 1 von 1

Re: Objektvariable nicht belegt

Verfasst: Di, 23.06.2009 11:33
von komma4
Die Funktionsnamen müssen ENGLISCH geschrieben werden, die Parameter als ARRAY() übergeben werden

Hilft Dir das weiter?

Re: Objektvariable nicht belegt

Verfasst: Di, 23.06.2009 11:48
von komma4
Wäre mir neu, dass die Funktionsnamen lokalisiert wurden (3.0.1 hier).

Die Parameter einer Funktion als ARRAY, bspw. beim ERSETZEN(suchbegriff, ab, wieviel, ersatzbegriff) [4 Parameter]

Code: Alles auswählen

aResult=FuncAcc.callFunction("REPLACE", Array( oCell.String , 1,3,"ZZZ" ))

Hilft das?

Re: Objektvariable nicht belegt

Verfasst: Di, 23.06.2009 12:00
von komma4
SEARCH braucht min. 2 Parameter, Dein zweiter ist ein Zellobjekt und nicht die zu durchsuchende Zeichenkette.


Was möchtest Du mit Deinem Code erreichen? Jeweils einen Teil aus drei Zellen entnehmen und zusammensetzen?

Re: Objektvariable nicht belegt

Verfasst: Di, 23.06.2009 12:34
von John.Mops
meist kommt es auf jedes Zeichen an... :D
=SEARCH("Autor:",AH4) klappt bei mir z.B. gar nicht in einer Zelle
=SUCHEN("Autor:";AH4) schon -
auch ist natürlich eine Funktion in eine Zelle nicht ganz das gleiche wie eine Funktion in einer Funktion in einem Makro aufzurufen, da
z.B. String-Delimiter mal automatisch eingefügt (eine Vereinfachung für den Benutzer sozusagen) aber in einem Programm nicht automatisch
verdoppelt werden können.
Zu beachten ist auch das wenn ich in eine Zelle 'was eintippe bewege ich mich in einem Worksheet - das gleiche in einem Makro ist da 'was anderes -
welche AH4 von welchem Sheet ist denn da z.B. gemeint? - die Makro-Ebene greift halt auf alle zu.

Re: Objektvariable nicht belegt

Verfasst: Di, 23.06.2009 12:44
von Karolus
Hallo
In folgender Form läuft deine Funktion:

Code: Alles auswählen

Function get_autor ( row as Variant ) As String
	'Variablen deklarieren
	Dim oFunktion as Object
	Dim dTeil1 as Double
	Dim dTeil2 as Double
   
oFunktion = createUnoService("com.sun.star.sheet.FunctionAccess")
	Dim args1( 1 ) As Variant
		args1(0) = "Autor: "
		args1(1) = row
dteil1 = oFunktion.callFunction( "SEARCH", args1() ) 
dTeil1 = dTeil1 + len("Autor: ")

'runtime-function 'instr' statt Calcfunktion 'search'
dTeil2 = instr ( dteil1, row, "<" )

'runtime 'mid' statt MID aus Calc
get_autor = mid( row, dTeil1, dTeil2-dteil1 )
  
End Function
der 2. Aufruf von SEARCH innerhalb der Funktion geht hier auch nicht, ich hab das durch die Laufzeitfunktion 'instr' ersetzt, dito MID -> mid.

(kleine Anmerkung: 'row' als Parameterbezeichner ist irreführend, 'sstring' oder 'Text' wäre besser.)

Gruß Karo