我想遍歷一組作業表,然后應用“Lock_AllWithParams()”方法。
那就是我到目前為止撰寫的代碼。但是 VBA 一直告訴我,“Lock_AllWithParams(ws)”中的引數不是可選的。這讓我很困惑。
Public Sub Lock_All()
Dim ws As Worksheets
'***Array mit den zu sperrenden Worksheets***'
Set ws = ActiveWorkbook.Sheets(Array(WS_xy.Name, WS_yx.Name, WS_xyx.Name))
Lock_AllWithParams (ws)
End Sub
Public Sub Lock_AllWithParams(ByRef arr() As Worksheets)
'***Setze Params***'
For Each i In arr
i.Protect , _
Contents:=True, _
Scenarios:=False, _
DrawingObjects:=False, _
UserInterfaceOnly:=False, _
AllowFormattingCells:=True, _
AllowFormattingColumns:=True, _
AllowFormattingRows:=True, _
AllowInsertingColumns:=False, _
AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=True, _
AllowDeletingColumns:=False, _
AllowDeletingRows:=False, _
AllowSorting:=True, _
AllowFiltering:=True, _
AllowUsingPivotTables:=True
i.EnableSelection = xlNoRestrictions
Next i
End Sub
謝謝你的幫助!
我試圖將引數更改為另一種資料型別,將其設定為可選等。我試圖使用另一個執行緒中的答案讓它作業。沒有任何效果。
uj5u.com熱心網友回復:
使用Sheets而不是Worksheets- 并且不要將引數宣告為陣列(= 之后的括號arr)Sheets已經回傳一個陣列。
Sub lock_all()
Dim arrSheets As Sheets
Set arrSheets = ActiveWorkbook.Sheets(Array("Tabelle1", "Tabelle2"))
lock_AllWithParams arrSheets
End Sub
Public Sub lock_AllWithParams(arrSheets As Sheets)
Dim ws As Worksheet
For Each ws In arrSheets
ws.Protect
Next
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534666.html
標籤:数组擅长VBA方法参数
上一篇:如何動態填充行中的公式
下一篇:如何將以下范圍轉換為文本?
