Oh man ohhh, StePfl!
Ich hatte dich darauf angesprochen ob die ganzen hlpx vom Typ Variant sein sollen oder was?
Und was machst Du?
Du deklarierst sie alle ausführlich als
Variant.
Code: Alles auswählen
function locStrgRight(optional byval oCell as object) as object
dim oDoc as object, oSheet as object, oRange as object, oCurs as object
dim hlp as Variant, hlp1 as Variant, hlp2 as Variant, hlp3 as Variant, hlp4 as Variant, hlp5 as Variant
Das ist, um sehr deutlich zu sein, so ein absoluter Schwachsinn. Aber nicht nur das! Du deklarierst mehr als Du wirklich anwendest. Die deklaration geht von hlp bis hlp5, und das macht insgesamt 6 mal 'hlp'.
Anwenden tust Du aber nur hlp und hlp2.
Was soll das?
Du bist doch kein Eichhörnchen! Besser gesagt, StarBasic ist kein Eichhörnchen.
Wenn sie wirklich vom Typ
Variant sein sollen, dann brauchst Du das nicht extra zu schreiben, denn das macht StarBasic automatisch von alleine.
Das ist aber nicht das einzige was mich da so aufregt. Da gibt es noch etwas was auch mit dem hlp zu tun hat.
Was für einen Sinn soll das ergeben, eine Variable vom Typ
Object in eine Variable vom Typ
Variant reinzupacken?
Code: Alles auswählen
hlp2 = oCell
hlp = TypeName(oCell)
hlp = TypeName(hlp2)
Das war noch immer nicht die Spitze des Eisberges. Denn die kommt jetzt.
Code: Alles auswählen
if hlp = "Error" then
oDoc = thisComponent
hlp = oDoc.Title ' Ergebnis anzeigen'
oSheet=oDoc.CurrentController.ActiveSheet
hlp = oSheet.absoluteName ' Ergebnis anzeigen'
oCell = oDoc.CurrentSelection
hlp = oCell.absoluteName ' Ergebnis anzeigen'
elseif hlp <> "Object" then
' hier fehlt noch eine FehlerAbfangRoutine'
else
oSheet = oCell.getSpreadSheet
hlp = oSheet.absoluteName ' Ergebnis anzeigen'
endif
Da wird ein und dieselbe Variable mit drei unterschiedlichen Dingen (oder wie auch immer) gefüttert.
Hier bekommt hlp den String von oDoc.Title zugewiesen.
Und hier bekommt hlp den String von oSheet.absoluteName zugewiesen.
usw.
etc. ....
Und spätestens hier muss ich mal ernsthaft nachfragen. Für was steht hlp und Verwante?
Ich sehe nirgends in deinen Dateien das hlp ein Ausgabefenster oder ähnliches ist. Du Komentierst aber das etwas angezeigt werden soll.
Und wo bitte schön wird das angezeigt?
Aber warum hlp als Variant deklarieren, wenn doch wie zu sehen hlp einen String aufnehmen soll?
Also müsste die deklaration theoretisch beispielsweise wie folgt aussehen
Code: Alles auswählen
function locStrgRight(optional byval oCell as object) as object
dim oDoc as object, oSheet as object, oRange as object, oCurs as object
dim hlp as String, hlp2 as Variant
Und ganz ehrlich gesagt, wenn man alles sauber programmiert und alles Stück für Stück sauber aufbaut, dann kann man sehr gut auf
option explicit verzichten.
Hab keinen Bock mehr, zumal ich deine Datei von gestern ja nicht mal ausführen kann.
Gruß
balu