ich möchte gerne ein Makro schreiben, das mir nur die Zellen ausblendet und schreibschützt, in denen Formeln stehen.
Ich habe mehrere Mappen, die im Bereich A1 bis Z100 geschützt sind. Diese kann ich über aber (mit Hilfe eines Dialogs und mit dem richtigen Passwort wieder entsperren). Allerdings soll der Bearbeiter dann nicht die Formel löschen können.
Bisher habe ich das und das funktioniert auch ohne Probleme:
Code: Alles auswählen
Sub Auto_Zellsperre_aus
for MP = 1 to Month(Date)-2
'Msgbox MP
osheet = thisComponent.getSheets().getByIndex(MP) ' die Tabelle
oSheet.unprotect("schutz") 'Tabellenschutz aufheben - PW kann auch ein leerer String sein
oZelle = oSheet.getCellrangeByName("A1:Z100") 'die Zelle A1
oCellSchutz = oZelle.CellProtection 'das Zellschutzobjekt
oCellSchutz.IsLocked = false 'Zellschutz setzen
oCellSchutz.IsFormulaHidden = true 'Formeln ausblenden
oZelle.CellProtection = oCellSchutz 'Zellschutzobjekt zurückschreiben
oSheet.protect("schutz") 'Tabelle wieder schützen
next MP
End Sub
Code: Alles auswählen
Sub Auto_Zellsperre_an
for MP = 1 to Month(Date)-2
'Msgbox MP
osheet = thisComponent.getSheets().getByIndex(MP) ' die Tabelle
oSheet.unprotect("schutz") 'Tabellenschutz aufheben - PW kann auch ein leerer String sein
oZelle = oSheet.getCellrangeByName("A1:Z100") 'die Zelle A1
oCellSchutz = oZelle.CellProtection 'das Zellschutzobjekt
oCellSchutz.IsLocked = true 'Zellschutz setzen
oCellSchutz.IsFormulaHidden = true 'Formeln ausblenden
oZelle.CellProtection = oCellSchutz 'Zellschutzobjekt zurückschreiben
oSheet.protect("schutz") 'Tabelle wieder schützen
next MP
End Sub
Kann man da ein Makro vorschalten, dass prüft, ob eine Formel in der Zelle ist und dann dort den Zellschutz nicht aufhebt und da wo keine Formel ist den Zellschutz an?
Ich habe bisher viel gesucht und finde nicht den richtigen Ansatz.
Habe folgendes Makro gefunden, allerdings spuckt das mir auch einen Wert aus, wenn keine Formel, sondern ein sonstiger Eintrag in der Zelle steht.
Code: Alles auswählen
Sub getCellInfo
'get the first sheet of the spreadsheet doc
xSheet = ThisComponent.Sheets(0)
'Get Cell A1
oCell = xSheet.getCellByPosition(0,0)
'It has a numeric value, a string 2 versions of a formula and an error:
print oCell.value, oCell.string,oCell.formula, oCell.FormulaLocal, oCell.Error
End Sub
Vielen Dank schon einmal!
VG
Steffen