Einzelne Zelle zur Bearbeitung frei geben

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Einzelne Zelle zur Bearbeitung frei geben

Re: Einzelne Zelle zur Bearbeitung frei geben

von cwolan » Mi, 14.08.2024 13:49

Hallo,

Vielen Dank für die Rückmeldung.
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.
Bezüglich Pitonyak (Respekt!):
Das folgende kurze Gedicht ist im russischen Forum (LO/AOO) leicht zu finden.

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Re: Einzelne Zelle zur Bearbeitung frei geben

von nobijohn » Mo, 12.08.2024 14:56

@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

von cwolan » Mo, 12.08.2024 08:01

Hallo,

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

Re: Einzelne Zelle zur Bearbeitung frei geben

von nobijohn » Mo, 12.08.2024 00:23

@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

von Karolus » Sa, 10.08.2024 16:46

Hallo

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

Einzelne Zelle zur Bearbeitung frei geben

von nobijohn » Sa, 10.08.2024 15:47

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?

Nach oben