我已经使用宏录制器在Excel中获得了此代码,该录制器取消了“锁定”功能。切片机的属性:
ActiveSheet.Shapes.Range(Array("WeekEndingPick")).Select
Selection.Locked = msoFalse
我不喜欢在VBA中使用Select
\ Selection
(除非我特意想明确选择范围),原因有很多*,这似乎很糟糕。通常我可以轻松地重写这样的事情:
'Macro-recorded code
Range("A1").Select
Selection.Font.Bold = True
'Equivilant without select / selection:
Range("A1").Font.Bold = True
但是,由于Locked
不属于Range
,属于Shape
属性,因此以下内容无效:
ActiveSheet.Shapes.Range(Array("WeekEndingPick")).Locked = msoFalse
我该如何解决这个问题?
*如果所需的工作表未激活,则失败。如果Application.ScreenUpdating = False
,则失败。如果选择意外地发生变化,可能会发生所有形式的废话 - 没有必要失败,而是在错误的位置运行代码。
答案 0 :(得分:2)
几乎在我回到Excel中捣乱时就想到了它。这是Slicer
:
ThisWorkbook.SlicerCaches("Slicer_WeekEndingPick").Slicers("WeekEndingPick").Locked = msoFalse
简单!