und nicht vorhandene/falsche Methoden/ Eigenschaften versuche zu verwenden.
Ich kenne die Funktionen "TypeName", "VarType" und "isUnoStruct" sowie die Eigenschaft "ImplementationName" .... aber damit lassen sich nicht alle Typen/Strukturen ermitteln (z.B. die RangeAddress-Struktur).
Intern müssenaber diese Werte vorliegen, denn im "Beobachter"-Bereich werden diese in der "Tyü"-Spalte aufgeführt
mein bisheriger Ansatz finde ich eher unbefriedigend:
Gruß StePfl
Code: Alles auswählen
Function TypeOfVar(optional Var)
	'
	
	'==== Testvorgaben"
	' var = "Tabelle4.A1:c15"
	' var = thiscomponent.sheets().getByName("Tabelle4").getcellrangebyname("A1:C15")
	if ismissing(var) then
		var = thiscomponent.currentselection
	endif
	iVarTyp = VarType(var)
	sVarTyp = TypeName(var)
	' Var ist ein "Object"
	if iVarTyp = 9 then 
		hlp1 = ""
		' Prüfen, ob es sich um eine UnoRangeAddress-Struktur handelt
		on Error resume next
			hlp1 = isnumeric(var.endrow) and isnumeric(var.sheet)
			on Error goto 0
			if hlp1 = true Then hlp1 = "UnoRangeAddress"
		' Prüfen, ob das Object einen ImplementationName hat
		on Error resume next
			hlp1 = var.ImplementationName
		on Error goto 0
		
		
		if hlp1 = "ScCellRangeObj"  then
			sVarTyp = "ScCellRangeObj"
		elseif hlp1 = "ScCellObj" then
			sVarTyp = "ScCellObj"
		elseif hlp1 = "ScTableSheetObj" then
			sVarTyp = "ScTableSheetObj"
		elseif hlp1 = "UnoRangeAddress" then
			sVarTyp = "UnoRangeAddress"
		else
			' hier können weitere ObjektTypen eingetragen werden
			sVarTyp = "Objekt - ohne Identifikation"
		endif
	' "var" ist ein String"
	elseif iVarTyp = 8	then 
		' Prüfung, ob "var" einen gültigen AdressString enthält
		on Error resume next
			adr = Split(Var)
			hlp1 = thiscomponent.sheets().getByName(adr(0)).getcellrangebyname(adr(1))
		on Error goto 0
		sVarTyp = "RangeAddressString"
		
		' ... oder weitere Typerkennungen
	endif
	TypeOfVar = sVarTyp	
end function