Unerwartetes Symbol: End Sub

Hallo Gemeinde,

ich finde die Ursache für die Meldung im Betreff nicht.

Den Code zwischen den beiden rem - N E U - Zeilen habe ich zuletzt eingefügt, davor ging alles was gehen sollte. Auch der EventListener…

Im Prinzip soll eine ansich gesperrte Zelle (Anzahl Gepäck) erst für die Eingabe entsperrt werden, wenn in einer Zelle (Anzahl Passagiere) daneben eine Zahl>0 steht, einfach um dem User das Weiterschalten zur nächsten Zelle mit TAB zu erleichtern.

rem ####################################################################################
rem Poolingart prüfen und bei „Gesamt“ die sortierten Gewichte einblenden
Sub CELL_chartDataChanged
oDoc = thisComponent
oDoc.LockControllers 'Bildschirmupdate reduzieren
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName(„XBAG“)

ocell0 = osheet.getCellbyposition(0,0) 'Anzahl der Veränderungen in Zelle A1
oCell1 = oSheet.getCellbyposition(4,48) 'E49 Pooling-Auswahl (Zähler)
ocell2 = oSheet.getCellbyposition(5,45) 'F46 Gepäckstücke Gesamt

ocell3 = osheet.getCellbyposition(3,12) 'D13 Reiseklasse
ocell31= osheet.getCellbyposition(3,13)
ocell32= osheet.getCellbyposition(3,14)
ocell33= osheet.getCellbyposition(3,15)

ocell4 = osheet.getCellbyposition(3,18) 'D19 Strecke
ocell41= osheet.getCellbyposition(3,19)
ocell42= osheet.getCellbyposition(3,20)
ocell43= osheet.getCellbyposition(3,21)

oSL0paxe = osheet.getCellbyposition(3,37) 'D38 Paxe SL0
oSL1paxe = osheet.getCellbyposition(3,39)
oSL2paxe = osheet.getCellbyposition(3,41)
oSL3paxe = osheet.getCellbyposition(3,43)

oSL0bags = osheet.getCellbyposition(5,37) 'F38 Bags SL0
oSL1bags = osheet.getCellbyposition(5,39)
oSL2bags = osheet.getCellbyposition(5,41)
oSL3bags = osheet.getCellbyposition(5,43)

rem — N E U — N E U — N E U — N E U — N E U — N E U — N E U — N E U
oSL0lock = oSL0bags.cellprotection 'die Zellschutzobjekte der Bags-Felder
oSL1lock = oSL1bags.cellprotection
oSL2lock = oSL2bags.cellprotection
oSL3lock = oSL3bags.cellprotection

if oSL0paxe.value > 0 then
oSL0lock.IsLocked = false
odoc.currentcontroller.select(oSL0bags) else oSL0lock.IsLocked = true 'Zellschutz aufheben, wenn Paxe>0
if oSL1paxe.value > 0 then
oSL1lock.IsLocked = false
odoc.currentcontroller.select(oSL1bags) else oSL1lock.IsLocked = true
if oSL2paxe.value > 0 then
oSL2lock.IsLocked = false
odoc.currentcontroller.select(oSL2bags) else oSL1lock.IsLocked = true
if oSL3paxe.value > 0 then
oSL3lock.IsLocked = false
odoc.currentcontroller.select(oSL3bags) else oSL1lock.IsLocked = true

oSL0bags.cellprotection = oSL0lock 'Zellschutzobjekt zurückschreiben
oSL1bags.cellprotection = oSL1lock
oSL2bags.cellprotection = oSL2lock
oSL3bags.cellprotection = oSL3lock

msgbox oSL1lock.islocked
rem — N E U — N E U — N E U — N E U — N E U — N E U — N E U — N E U

'zählt die Veränderungen bei der Eingabe, bei 5 wird Blatt automatisch geschützt
counter = ocell0.value
counter = counter + 1
ocell0.value = counter

if ocell0.value = 5 then
ocell0.value = 0
call dokumentschuetzen
end if

'Ermitteln der Anzahl der nötigen Gewichtsfelder abhängig von Gepäckanzahl
if ocell2.value > 13 then Spalten = 30+(ocell2.value-13)*2 '.getrows '(startSpalte, startZeile, endSpalte, endZeile)
if ocell2.value 13 then oRange.isvisible = true

'Ausblenden
if ocell2.value ocell31.value or ocell3.value ocell32.value or ocell3.value ocell33.value then ocell3.value = ocell31.value
if ocell4.value ocell41.value or ocell4.value ocell42.value or ocell4.value ocell43.value then ocell4.value = ocell41.value

'Bildschirmupdate normal setzen
oDoc.UnlockControllers
end Sub
rem ####################################################################################

Ich habe mEn alle if-then-else-endif-Regeln beachtet und vermute die Fehlerursache im neu eingefügten (einkopiert und angepasst) Teil, habe aber keine Ahnung wo der Fehler sein soll.

LG, Masl

Hallo ihr,

die doch-nicht-ganz-so-richtigen :wink: if-then-Zeilen sind mittlerweile korrigiert:

Sub CELL_chartDataChanged
dim oSL0lock,oSL1lock,oSL2lock,oSL3lock as New com.sun.star.util.CellProtection

oDoc = thisComponent
oDoc.LockControllers 'Bildschirmupdate reduzieren
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName(„XBAG“)

ocell0 = osheet.getCellbyposition(0,0) 'Anzahl der Veränderungen in Zelle A1
oCell1 = oSheet.getCellbyposition(4,48) 'E49 Pooling-Auswahl (Zähler)
ocell2 = oSheet.getCellbyposition(5,45) 'F46 Gepäckstücke Gesamt

ocell3 = osheet.getCellbyposition(3,12) 'D13 Reiseklasse
ocell31= osheet.getCellbyposition(3,13)
ocell32= osheet.getCellbyposition(3,14)
ocell33= osheet.getCellbyposition(3,15)

ocell4 = osheet.getCellbyposition(3,18) 'D19 Strecke
ocell41= osheet.getCellbyposition(3,19)
ocell42= osheet.getCellbyposition(3,20)
ocell43= osheet.getCellbyposition(3,21)

oSL0paxe = osheet.getCellbyposition(3,37) 'D38 Paxe SL0
oSL1paxe = osheet.getCellbyposition(3,39)
oSL2paxe = osheet.getCellbyposition(3,41)
oSL3paxe = osheet.getCellbyposition(3,43)

oSL0bags = osheet.getCellbyposition(5,37) 'F38 Bags SL0
oSL1bags = osheet.getCellbyposition(5,39)
oSL2bags = osheet.getCellbyposition(5,41)
oSL3bags = osheet.getCellbyposition(5,43)

osheet.unprotect("") 'Blattschutz aufheben, um Zellschutz zu ändern

rem VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
oSL0lock.islocked = true 'die Zellschutzobjekte der Bags-Felder auf TRUE setzen
rem AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
oSL1lock.islocked = true
oSL2lock.islocked = true
oSL3lock.islocked = true

if oSL0paxe.value > 0 then
oSL0lock.IsLocked = false
oSL0bags.cellprotection=osl0lock
odoc.currentcontroller.select(oSL0bags) 'Zellschutz aufheben, wenn Paxe>0
endif
if oSL1paxe.value > 0 then
oSL1lock.IsLocked = false
oSL0bags.cellprotection=osl0lock
odoc.currentcontroller.select(oSL1bags)
endif
if oSL2paxe.value > 0 then
oSL2lock.IsLocked = false
oSL0bags.cellprotection=osl0lock
odoc.currentcontroller.select(oSL2bags)
endif
if oSL3paxe.value > 0 then
oSL3lock.IsLocked = false
oSL0bags.cellprotection=osl0lock
odoc.currentcontroller.select(oSL3bags)
endif
oSL0bags.cellprotection = oSL0lock 'Zellschutzobjekt zurückschreiben
oSL1bags.cellprotection = oSL1lock
oSL2bags.cellprotection = oSL2lock
oSL3bags.cellprotection = oSL3lock

osheet.protect("") 'Blattschutz wieder aktivieren
msgbox oSL1lock.islocked

allerdings bekomme ich nun in der markierten Zeile (VVVVVV bzw. AAAAAA) einen BASIC-Laufzeitfehler. Die Objektvariable sei nicht festgelegt!

ich habe den folgenden Code als Grundlage genommen und kann keinen Unterschied feststellen:

odoc=thiscomponent
oSheets=odoc.sheets
oSheet = oDoc.Sheets(0)

oSheet.unprotect(„Test“)
Dim myProtection As New com.sun.star.util.CellProtection
ocell = mysheet.getCellByPosition(0,0)
myProtection.IsLocked=false
oCell.CellProtection=myProtection
oSheet.protect(„Test“)

Wo liegt der Hund begraben?

LG, Masl

Wo liegt der Hund begraben?

Hallo Masl,

probiere es mal so:

Sub CELL_chartDataChanged()
Dim oSL0lock As New com.sun.star.util.CellProtection
Dim oSL1lock As New com.sun.star.util.CellProtection
Dim oSL2lock As New com.sun.star.util.CellProtection
Dim oSL3lock As New com.sun.star.util.CellProtection
'…

Gruß
Reinhard