2017-04-06 13 views
5

Mam arkusz roboczy do wypełnienia przez moich pracowników i wyliczyłem komórki, które chcę zablokować, aby nie mogły ich zmienić. Wybrałem komórki i wybrane właściwości i upewniłem się, że pole wyboru "blokada" jest zaznaczone. Kiedy chroniłem arkusz roboczy/skoroszyt, przycisk "eksport do csv" przestał działać. W celu umożliwienia makro do uzupełnienia I dodaje ten kod VB do skoroszytu:Jak zablokować komórki zawierające formuły, ale nadal zezwalać na działanie makr?

Private Sub Workbook_Open() 

Dim wSheet As Worksheet 
For Each wSheet In Worksheets 

    wSheet.Protect Password:="password", _ 
    UserInterFaceOnly:=True 

Next wSheet 


End Sub 

To działało, ale miał niezamierzony efekt uboczny pozwalając moje Zablokowane formuły, aby móc być edytowane chociaż zostały one zablokowane. Tylko komórki zawierające wartości inne niż formuła pozostały zablokowane. Jaki jest właściwy sposób na dopuszczenie makr, ale blokowanie komórek formuł?

+0

Być może trzeba będzie ".Value = Wartość" na bloku formuły i ponownie wstawić formuły z '.Formula =" ... "', gdy chcesz ponownie przeliczyć komórki na nowe dane. Zdarzenie pod nagłówkiem Worksheet_Calculate jest traktowane jako "makro". – Jeeped

+0

@Jeeped Co jeśli należy zmienić 'UserInterFaceOnly' na końcu makra. Proszę spojrzeć na moją odpowiedź i daj mi znać, jeśli to działa. Nie mam teraz dostępu do programu Excel, aby go przetestować. – Masoud

+0

@Masoud - Po prostu z mojej głowy, Workbook_Open jest prywatne do arkusza kodu ThisWorkbook. Nie jestem pewien, czy możesz to nazwać. – Jeeped

Odpowiedz

0

Moje rozwiązanie polegało na zablokowaniu całego skoroszytu i arkuszy roboczych, a następnie przypisaniu do przycisku VB wyłączenia blokady, a następnie ponownego włączenia makra. Podobnie jak:

Sub MyMacro() 

Sheet1.Unprotect Password:="password" 

    'insert code here 

    Sheet1.Protect Password:="password" 

End Sub 

Następnie usunąłem mój kod Workbook_Open.

Powiązane problemy