Objektvariable nicht belegt

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: Objektvariable nicht belegt

Re: Objektvariable nicht belegt

von Karolus » Di, 23.06.2009 12:44

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

Re: Objektvariable nicht belegt

von John.Mops » Di, 23.06.2009 12:34

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

von komma4 » Di, 23.06.2009 12:00

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

von komma4 » Di, 23.06.2009 11:48

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

von komma4 » Di, 23.06.2009 11:33

Die Funktionsnamen müssen ENGLISCH geschrieben werden, die Parameter als ARRAY() übergeben werden

Hilft Dir das weiter?

Nach oben