在Excel中使用Auto_Open()时出现运行时错误1004

时间:2018-11-01 14:19:54

标签: excel vba excel-vba

因此,我创建了一个简单的宏,该宏循环遍历所有工作表并自动拟合所有列。当我手动运行它时它可以工作,但是我希望每次我自动启动Excel时都运行它。我将其放置在模块中,并将其命名为子Auto_Open()。问题是我得到

  

“运行时错误'1004':对象'_Global'的方法'Worksheets'失败。”

每次我现在启动Excel。

这是代码。调试器说其For Each部分引起了问题,但我不明白为什么。我想念什么?感谢您的帮助。

Sub AUTO_OPEN()
'
' AutoFit_All_Columns Macro
'

Dim ws As Worksheet

For Each ws In Worksheets
    ws.UsedRange.Columns.AutoFit
Next ws

End Sub

3 个答案:

答案 0 :(得分:3)

For Each ws In ThisWorkbook.Worksheets

答案 1 :(得分:0)

我认为您需要使用ActiveWorkbook。尝试以下代码:

Sub AUTO_OPEN()
    '
    ' AutoFit_All_Columns Macro
    '

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.UsedRange.Columns.AutoFit
    Next ws

End Sub

答案 2 :(得分:0)

我发现了使用Workbook_Open方法的替代方法,该方法似乎工作得很好。将其放置在内置的Personal VBAProject的“ ThisWorkbook”部分中后,当打开任何工作簿时,将自动在所有列上运行AutoFit。

Option Explicit
Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_WorkbookOpen(ByVal WB As Workbook)

    Dim ws As Worksheet
    For Each ws In WB.Worksheets
        ws.Columns.AutoFit
    Next ws

End Sub