因此,我创建了一个简单的宏,该宏循环遍历所有工作表并自动拟合所有列。当我手动运行它时它可以工作,但是我希望每次我自动启动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
答案 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