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