2012-11-26 45 views
0

我有一個共享,並在Excel 2012年保護worsheet(保護,但沒有密碼) 我寫了這個宏:宏在保護和共享工作出色

Private Sub CommandButton1_Click() 
    ActiveSheet.Unprotect 
    Range("B4:K38").Select 
    Selection.Sort Key1:=Range("D4"), Order1:=xlAscending, Header:=xlGuess, _ 
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
     DataOption1:=xlSortNormal 
    'cells I don't want to be protect (to be user-editable) 
    Range("B4:K38").Locked = False 
    'protecting the sheet, and all the other cells will be protected 
    Protect UserInterfaceOnly:=True 
End Sub 

但每次我使用這個宏我有一個消息這表明我的方法保護存在錯誤。

我在做什麼錯?

+0

錯誤信息說什麼? –

+1

如果使用userinterfaceonly進行保護,則無需取消保護即可在工作表上運行vba,該設置旨在讓您無需取消保護。 – scott

+0

好吧,我需要的是通過colomn D4進行排序,並且用戶無權寫入任何從B4到K38以外的表格。請幫助我! – Pramine

回答

0

試試這個,因爲在移動

沒有測試,而不是使用protect userinterfaceonly:=true

with activesheet 
     .EnableSelection = xlUnlockedCells 
     .Protect UserInterfaceOnly:=True 
    End With 

而且使用UserInterfaceOnly你不應該需要取消保護片使用VBA編輯它。

+0

不起作用。 1004運行時錯誤。 你會怎麼做?認爲你有一個共享的工作簿,你希望共享它的用戶只能編輯一些單元格。 我不知道爲什麼太難做到了!可能是我有vba知識缺乏。 – Pramine

+0

嘗試編輯,如果沒有我會得到一臺完整的Excel的機器,並嘗試一些例子 – scott