Hallo Wissende,
um per Makro den Zellschutz für eine Zelle aufzuheben und später wieder zu schützen habe ich folgendes probiert:
Sub UnprotectCell 'geht nicht
Doc=ThisComponent
Sheet=Doc.Sheets(1)
'Sheet.Unprotect("")
Cell=Sheet.getCellByPosition(4,2)
Prot=Cell.CellProtection
Prot.IsLocked="false"
Sheet.Protect("")
end Sub
keine Fehlermeldung, macgt aber auch nichts. Kann jemand helfen?
Einzelne Zelle zur Bearbeitung frei geben
Moderator: Moderatoren
Re: Einzelne Zelle zur Bearbeitung frei geben
Hallo
lass doch mal die Anführungzeichen um »False« weg.
lass doch mal die Anführungzeichen um »False« weg.
Code: Alles auswählen
Sub UnprotectCell 'geht nicht
Doc=ThisComponent
Sheet=Doc.Sheets(1)
Sheet.Unprotect("")
Cell=Sheet.getCellByPosition(4,2) ' das ist E3 !
Cell.CellProtection.IsLocked=False
Sheet.Protect("")
end Sub
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Einzelne Zelle zur Bearbeitung frei geben
@Karolus: Danke für deine Antwort. Funktioniert nicht, egal welche Schreibweise ich versuche. Hast du das ausprobiert? Beim schrittweisen debuggen geht alles, ausser dass die Zelle freigegeben wird.
Re: Einzelne Zelle zur Bearbeitung frei geben
Hallo,
CellProtection ist ein Struct [1].
Laut [2]:
Deshalb
-------------------
[1] CellProtection
[2] Andrew Pitonyak, "BASIC-Makros für OpenOffice und LibreOffice"
Ins Deutsche übertragen und bearbeitet von Volker Lenhardt, S. 57-58
CellProtection ist ein Struct [1].
Laut [2]:
- Structs werden mit ihren Werten kopiert. Viele Nutzer sind frustriert, wenn sie zum ersten Mal auf dieses Verhalten stoßen, aber es gibt einen sehr guten Grund dafür. Zuerst einmal das Problem: oBorder.TopLine.OuterLineWidth = 2 macht nicht das, was man wollte, weil Sprachstrukturen TopLine ein Struct ist und der Wert als Kopie und nicht als Referenz zurückgegeben wird. Das Codebröckchen ändert in dieser Form die äußere Randbreite in einer Kopie des Structs und nicht in dem Struct, das mit dem Border-Objekt verknüpft ist. Folgendes ist der richtige Weg, den Rahmen zu ändern:
v = oBorder.TopLine : v.OuterLineWidth = 2 : oBorder.TopLine = v.
Deshalb
Code: Alles auswählen
Sub UnprotectCell
Doc=ThisComponent
Sheet=Doc.Sheets(1)
Sheet.Unprotect("")
Cell=Sheet.getCellByPosition(4,2)
Prot=Cell.CellProtection
Prot.IsLocked=False
Cell.CellProtection = Prot
Sheet.Protect("")
end Sub
-------------------
[1] CellProtection
[2] Andrew Pitonyak, "BASIC-Makros für OpenOffice und LibreOffice"
Ins Deutsche übertragen und bearbeitet von Volker Lenhardt, S. 57-58
OpenOffice 1.1.5 – 4.1.15
LibreOffice 3.3.0.4 – 24.8
Windows 7,10,11 64-bit
LibreOffice 3.3.0.4 – 24.8
Windows 7,10,11 64-bit
Re: Einzelne Zelle zur Bearbeitung frei geben
@cwolan: Danke für die kompetente Hilfe. Als Nicht-Informatiker tu ich mich bissl schwer mit den 700 Seiten Pitonyak.
Re: Einzelne Zelle zur Bearbeitung frei geben
Hallo,
Vielen Dank für die Rückmeldung.
Das folgende kurze Gedicht ist im russischen Forum (LO/AOO) leicht zu finden.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Vielen Dank für die Rückmeldung.
Bezüglich Pitonyak (Respekt!):nobijohn hat geschrieben: Mo, 12.08.2024 14:56 Danke für die kompetente Hilfe. Als Nicht-Informatiker tu ich mich bissl schwer mit den 700 Seiten Pitonyak.
Das folgende kurze Gedicht ist im russischen Forum (LO/AOO) leicht zu finden.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
OpenOffice 1.1.5 – 4.1.15
LibreOffice 3.3.0.4 – 24.8
Windows 7,10,11 64-bit
LibreOffice 3.3.0.4 – 24.8
Windows 7,10,11 64-bit