Pokud tedy chcete zamykat list a pro úpravy jej odemykáte, poslouží Vám následující makro, přidal jsem i makro z Vašeho předchozího příspěvku, protože spolu evidentně souvisí.
Sub OdemkniUdelejZamkni
dim oSpreadSheet As object
dim oDoc As object
oDoc = ThisComponent
oSpreadsheet = oDoc.Sheets.getByName ("List1")
oSpreadsheet.Unprotect ("")
' Nyní je odemčen list a můžeme cokoliv udělat
KopirujPredchoziRadek 'Volá se makro s tímto jménem
' Když je hotovo tak uzamkneme znovu list
oSpreadsheet.Protect ("")
End Sub
Sub KopirujPredchoziRadek
Dim oCell As Object
Dim Doc as Object
oCell = ThisComponent.CurrentController.getSelection()
With oCell.RangeAddress
SH = .Sheet
SR = .StartRow
End With
Sheet = ThisComponent.Sheets(SH)
Doc = ThisComponent
Sheet = Doc.Sheets.getByIndex(SH) 'get the first sheet from the left
Sheet = Doc.Sheets(SH)
Rows = Sheet.getRows()
Rows.insertByIndex(SR,1)
zkopiruj = doc.Sheets(SH).getCellRangeByPosition(0,SR-1,1023,SR-1)
doc.CurrentController.select(zkopiruj)
obsah = doc.CurrentController.getTransferable()
vloz = doc.Sheets(SH).getCellRangeByPosition(0,SR,1023,SR)
doc.CurrentController.select(vloz)
doc.CurrentController.insertTransferable(obsah)
End Sub
PS: Makro OdemkniUdelejZamkni chodí jen v "List1". Makro KopirujPredchoziRadek chodí v každém listě. Lze je složit například do jednoho makra, které bude chodit buď ve všech listech, nebo jen v listu, který zadklarujete. Je také například možné upravit jen deklaraci makra OdemkniUdelejZamkni tak aby i toto makro chodilo ve všech listech. Pokud tedy uložíte makro do knihovny (Moje Makra s dialogy "standard" - tj. pro všechny sešity), budete mít po spuštění v kterémkoliv sešitě tento sešit zamčený i když před tím nebyl. Takže doporučuji makro se zamykáním kopírovat jen do určitého sešitu.
Editoval neutr (24. 5. 2013 10:58:21)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ