重新排序此录制的宏代码不使用Select?

时间:2014-12-05 11:41:40

标签: vba excel-vba excel-2010 excel

我已经使用宏录制器在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,则失败。如果选择意外地发生变化,可能会发生所有形式的废话 - 没有必要失败,而是在错误的位置运行代码。

1 个答案:

答案 0 :(得分:2)

几乎在我回到Excel中捣乱时就想到了它。这是Slicer

的属性
ThisWorkbook.SlicerCaches("Slicer_WeekEndingPick").Slicers("WeekEndingPick").Locked = msoFalse

简单!