我正在尝试在A2到AA2范围内执行AutoFit单元格。
以下是我正在尝试的代码:
Application.ScreenUpdating = False
Dim wkSt As String
Dim wkBk As Worksheet
wkSt = ActiveSheet.Name
For Each wkBk In ActiveWorkbook.Worksheets
On Error Resume Next
wkBk.Activate
Cells.Range("A2:AA2").EntireColumn.AutoFit
Next wkBk
Sheets(wkSt).Select
Application.ScreenUpdating = True
以下是一些示例Excel数据,如屏幕上显示:
A B C
1 Jhon is the best employee
2 Emp_Name Emp_id Empsal.
请注意,“Jhon是最好的员工”全部在一个单元格(A1)中,但在显示时,其内容重叠单元格B1和C1。
使用上面的代码,数据显示如下:
A B C
1 Jhon is the best employee
2 Emp_Name Emp_id Empsal
如何在每个工作表的第二行的每个单元格上执行AutoFit?上面的代码无法从我的第二行自动调整数据。
这就是我希望显示器看起来像:
A B C
1 Jhon is the best employee
2 Emp_Name Emp_id Empsal.
即。列应该贴合“Emp_Name”,“Emp_id”和“Empsal”。 - 不是“Jhon是最好的员工”。
编辑此外,如果以下行(3,4等)中有数据,则这些数据也应包含在自动调整中。例如,数据应如下所示:
A B C
1 Jhon is the best employee
2 Emp_Name Emp_id Empsal.
3 Jhon Peter 2 2000
答案 0 :(得分:5)
如果您想要的是强制Autofit忽略第一行,并且只根据第2行及更高行的内容自动调整。我不认为这是可能的。 一种方法是存储第一行的内容,删除它,自动调整并插入第一行的内容:
Public Sub test()
Dim wkSt As String
Dim wkBk As Worksheet
Dim temp As Variant
wkSt = ActiveSheet.Name
For Each wkBk In ActiveWorkbook.Worksheets
On Error Resume Next
wkBk.Activate
temp = wkBk.Rows(1)
wkBk.Rows(1).ClearContents
wkBk.Columns("A:AA").AutoFit
wkBk.Rows(1) = temp
Next wkBk
Sheets(wkSt).Select
End Sub
答案 1 :(得分:3)
而不是在EntireColumn
上执行自动调整,而是在Columns
上执行。
wkBk.Range("A2:AA2").Columns.AutoFit
查看AutoFit的VBA帮助......
编辑您现在不仅要为第2行执行自动调整,还要对3,4,5等执行自动调整。这只需要一个简单的修改:
wkBk.Range("A2:AA999").Columns.AutoFit
以上假设行999是您要自动配置数据的最后一行。您还可以将所有行一直包含在表格底部,如下所示:
wkBk.Range(Range("A2"), Cells(wkBk.Rows.Count, "AA")).Columns.AutoFit
这足以让你走上正轨。