使用VBA自动调整行

use*_*125 2 excel vba excel-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
Run Code Online (Sandbox Code Playgroud)

下面是一些示例Excel数据,如屏幕上显示:

     A            B           C
1    Jhon is the best employee
2    Emp_Name     Emp_id      Empsal.
Run Code Online (Sandbox Code Playgroud)

请注意,"Jhon是最好的员工"全部在一个单元格(A1)中,但在显示时,其内容重叠单元格B1和C1.

使用上面的代码,数据显示如下:

     A                               B       C
1    Jhon is the best employee
2    Emp_Name                        Emp_id  Empsal
Run Code Online (Sandbox Code Playgroud)

如何在每个工作表的第二行的每个单元格上执行AutoFit?上面的代码无法从我的第二行自动调整数据.

这就是我希望显示器看起来像:

     A        B      C
1    Jhon is the best employee
2    Emp_Name Emp_id Empsal.
Run Code Online (Sandbox Code Playgroud)

即列应该贴合"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
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 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
Run Code Online (Sandbox Code Playgroud)