im nachfolgenden Code habe ich das Problem, dass wenn ein neues Sheet hinzugefügt wird, das Objekt "sSpieler" seine Zuordnung verliert. Es ist/verweist dann nicht mehr auf die Tabelle "Speiler" sondern auf eine andere namens "Spiel".
Der Fehler tritt nur auf, wenn If Then Schleife durchlaufen wird und ein neues Sheet hinzugefügt wird.
Code: Alles auswählen
Sub NamenPruefen
Rem ******************************************************************
Rem Diese Funktion prüft ob für alle Spieler ein Spielbogen existiert.
Rem Falls dies nicht der Fall ist wird ein Spielbogen neu angelegt.
Rem ******************************************************************
Dim I,K as Integer
Dim NameExistiert as Boolean
Dim SpielerName as String
Dim sSpieler as Object
Dim sSpielerBericht as Object
NameExistiert=False
sSpieler = ThisComponent.Sheets.GetByName("tmpSpielerTabelle")
I=15
While sSpieler.getCellByPosition(0,I).String <> ""
SpielerName =sSpieler.getCellByPosition(0,I).String
For K=0 to ThisComponent.Sheets().Count - 1
If SpielerName = ThisComponent.Sheets(K).Name then
NameExistiert=True
end If
Next K
If not NameExistiert Then
Rem ###############################################################
Rem Wird diese Anweisung ausgeführt verliert sSpieler die Zuordnung zum Sheet.
Rem Interessanterweise liefert sSpieler.Name den richtigen Namen zurück.
Rem Bei sSpieler.getCellByPosition(0,I).String verbirgt sich hinter sSpieler
Rem ein anderes Sheet und liefert dadurch einen falschen Wert.
Rem Wird die Anweisung nicht ausgeführt gibt es kein Problem mit der Zuordnung.
Rem ###############################################################
ThisComponent.Sheets.CopyByName("Vorlage",SpielerName, 0)
sSpielerBericht = ThisComponent.Sheets().GetByName(SpielerName)
sSpielerBericht.getCellByPosition(1,0).String = SpielerName
End if
I = I + 1
NameExistiert = False
Wend
End Sub