使用VBA自动调整行
我正在尝试在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数据,如屏幕上所示:
ABC 1 Jhon is the best employee 2 Emp_Name Emp_id Empsal.
请注意,“Jhon是最好的员工”全部在一个单元格(A1)中,但显示时其内容与单元格B1和C1重叠。
用上面的代码,数据显示如下:
ABC 1 Jhon is the best employee 2 Emp_Name Emp_id Empsal
我怎样才能在每个工作表的第二行的每个单元格上做AutoFit? 上面的代码无法自动从我的第二行数据。
这是我想让显示看起来像:
ABC 1 Jhon is the best employee 2 Emp_Name Emp_id Empsal.
即列应紧贴“Emp_Name”,“Emp_id”和“Empsal”。 – 不在“Jhon是最好的员工”。
编辑另外,如果有以下行(3,4等)中的数据,那么这些也应该包含在Autofit中。 例如,数据应该显示如下:
ABC 1 Jhon is the best employee 2 Emp_Name Emp_id Empsal. 3 Jhon Peter 2 2000
如果你想要的是强制自动调整忽略第一行,并只根据行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
而不是在EntireColumn
上做自动调整,在Columns
。
wkBk.Range("A2:AA2").Columns.AutoFit
看看VBA帮助AutoFit …
编辑你现在想要做AutoFit不仅为第2行,但也是3,4,5等。这只需要一个简单的修改:
wkBk.Range("A2:AA999").Columns.AutoFit
上面假定999行是你最后一行,要自动填充数据。 您也可以将所有行一直包含到工作表底部,如下所示:
wkBk.Range(Range("A2"), Cells(wkBk.Rows.Count, "AA")).Columns.AutoFit
这应该足以让你走上正轨。