VBA获取错误Worksheet类的活动方法失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA获取错误Worksheet类的活动方法失败相关的知识,希望对你有一定的参考价值。

我试图寻找答案,但到目前为止我找不到任何有用的东西。我有一些代码适用于某些人,并且在运行此代码时不适用于其他人(使用相同版本的Excel):

Private Sub Workbook_Open()

Application.ScreenUpdating = False
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
Application.DisplayFormulaBar = False
Sheets("Discount").Activate
ActiveSheet.Unprotect Password:="01"    
ActiveSheet.Range("G14:O15,O18:O19,D29:I29,D31:I31,D33:I33,D35:I35,D37:I37").ClearContents
ActiveSheet.Shapes("Option Button 31").ControlFormat.Value = xlOn
OptionButton31_Click
Application.ScreenUpdating = True

End Sub

错误显示在Sheets。(“折扣”)。激活

工作表的拼写是正确的。我也试过了

Private Sub Workbook_Open()

ActiveWorkbook.Unprotect Password:="01"
Application.ScreenUpdating = False
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    Application.DisplayFormulaBar = False
    ThisWorkbook.Sheets("Discount").Activate
    ActiveSheet.Unprotect Password:="01"    
ActiveSheet.Range("G14:O15,O18:O19,D29:I29,D31:I31,D33:I33,D35:I35,D37:I37").ClearContents
ActiveSheet.Shapes("Option Button 31").ControlFormat.Value = xlOn
OptionButton31_Click 
ActiveWorkbook.Protect Password:="01"
Application.ScreenUpdating = True

仍然得到错误。我很难搞清楚因为它每次都适合我,但不适合其他人。

答案

解决方案1:

而不是Sheets.("Discount").ActivateSheets("Discount").Activate它应该工作。例如,删除点。

解决方案2:

如果这不起作用,请尝试确保此工作表可见。例如。在行之前写入错误如下:

Sheets("Discount").Visible = True


一般来说,在VBA尝试避免ActiveSheetActiveWorkbookActiveCell - How to avoid using Select in Excel VBA

正如@Mat's Mug所述,当你引用工作表时,请考虑使用Worksheets("Discount").Visible,因为Sheets集合也包含Charts

另一答案

尝试使用:

表格(“折扣”)。可见表格(“折扣”)。选择

如果这不起作用,请告诉我,我会看看还有什么我可以推荐的。如果您记下任何错误消息,这可能会有所帮助。另外,尝试使用screenupdating运行它并不像上面建议的人那样关闭 - 然后你会看到是否有一个特定的动作让它摔倒了。

以上是关于VBA获取错误Worksheet类的活动方法失败的主要内容,如果未能解决你的问题,请参考以下文章

VBA 缺少 Worksheet.Range 作为值并不断获取未设置对象变量(错误 91)

错误 1004:范围类的自动填充方法失败 vba excel 2010

VBA 错误 1004 - 范围类的选择方法失败

“ Range类的VBA自动过滤器方法失败”,今天开始工作的代码出现错误

VBA保存活动工作簿获取方法错误

另存为工作簿类的方法失败 - Outlook vba