簡體   English   中英

有沒有一種方法可以提高在Excel VBA中激活工作表時取消保護大范圍的效率?

[英]Is there a way to increase efficiency of unprotecting a large range upon worksheet activation in Excel VBA?

我目前有一個工作表,該工作表在激活后會解鎖一部分工作表供用戶輸入,但會保護其余工作表。 打開工作表時,在被用戶激活之前會有明顯的延遲。 有沒有辦法為此使用數組?

Dim ws As Worksheet
Dim rng As Range
Dim ce As Range

Set ws = ActiveSheet
Set rng = Union(ws.Range("B4:B9"), ws.Range("E4:E9"), ws.Range("I4:I10"), ws.Range("B10"), ws.Range("A14:O425"))

Application.ScreenUpdating = False
ws.Unprotect Password:="mediate"
For Each ce In rng
    ce.Select
    Selection.Locked = "False"
Next ce

ws.Protect Password:="mediate", UserInterfaceOnly:=True, AllowFormattingCells:=True
Application.ScreenUpdating = True

使用Range.Locked = False可以工作,但是我犯了一個額外的錯誤,導致了我描述的錯誤。 我將每個范圍划分為使用.Locked = False並找出哪個范圍存在問題。 一些范圍合並了單元格,我沒有指定范圍的整個“長度”。 IE Range(“ E4:E9”)應該是Range(“ E4:F9”)。

這是工作代碼:

Dim ws As Worksheet
Dim rng As Range

Set ws = Worksheets("Initial Entry")
Set rng = Union(ws.Range("B4:B9"), ws.Range("E4:F9"), ws.Range("I4:K10"), ws.Range("B10:F10"), ws.Range("A14:O425"))

rng.Locked = False

ws.Protect Password:="mediate", UserInterfaceOnly:=True, AllowFormattingCells:=True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM