将多行VBA代码压缩并合并为一行

将多行VBA代码压缩并合并为一行,vba,excel,Vba,Excel,有人能告诉我如何在一行中写出以下两组代码(每组)吗 newb.sheets("Sheet1").Cells.EntireColumn.AutoFit newb.sheets("Sheet2").Cells.EntireColumn.AutoFit newb.sheets("Sheet3").Cells.EntireColumn.AutoFit newb.sheets("Sheet4").Cells.EntireColumn.AutoFit LastRow1 = s

有人能告诉我如何在一行中写出以下两组代码(每组)吗

   newb.sheets("Sheet1").Cells.EntireColumn.AutoFit
   newb.sheets("Sheet2").Cells.EntireColumn.AutoFit
   newb.sheets("Sheet3").Cells.EntireColumn.AutoFit
   newb.sheets("Sheet4").Cells.EntireColumn.AutoFit

   LastRow1 = sheets("Sheet1").Range("A1000000").End(xlUp).Row
   LastRow2 = sheets("Sheet2").Range("A1000000").End(xlUp).Row
   LastRow3 = sheets("Sheet3").Range("A1000000").End(xlUp).Row
   LastRow4 = sheets("Sheet4").Range("A1000000").End(xlUp).Row

简单地说,您可以使用For循环

For i = 1 To 4
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow1 = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i
此处,
4
表示张数

换句话说,您可以使用此工作簿.Worksheets.count获得工作表总数

For i = 1 To ThisWorkbook.Worksheets.Count
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow & i = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i

简单地说,您可以使用For循环

For i = 1 To 4
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow1 = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i
此处,
4
表示张数

换句话说,您可以使用此工作簿.Worksheets.count获得工作表总数

For i = 1 To ThisWorkbook.Worksheets.Count
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow & i = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i

简单地说,您可以使用For循环

For i = 1 To 4
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow1 = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i
此处,
4
表示张数

换句话说,您可以使用此工作簿.Worksheets.count获得工作表总数

For i = 1 To ThisWorkbook.Worksheets.Count
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow & i = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i

简单地说,您可以使用For循环

For i = 1 To 4
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow1 = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i
此处,
4
表示张数

换句话说,您可以使用此工作簿.Worksheets.count获得工作表总数

For i = 1 To ThisWorkbook.Worksheets.Count
   newb.sheets("Sheet" & i).Cells.EntireColumn.AutoFit
   LastRow & i = sheets("Sheet" & i).Range("A1000000").End(xlUp).Row
Next i
您也可以这样做:

Dim LastRow() As Long
Dim i As Integer
For i = 1 To ThisWorkbook.Worksheets.Count
    With ThisWorkbook.Worksheets(i)
        ReDim Preserve LastRow(i-1)
        LastRow(i-1) = .Range("A" & .Rows.Count).End(xlUp).Row
        .Cells.EntireColumn.AutoFit
    End With
Next i
您也可以这样做:

Dim LastRow() As Long
Dim i As Integer
For i = 1 To ThisWorkbook.Worksheets.Count
    With ThisWorkbook.Worksheets(i)
        ReDim Preserve LastRow(i-1)
        LastRow(i-1) = .Range("A" & .Rows.Count).End(xlUp).Row
        .Cells.EntireColumn.AutoFit
    End With
Next i
您也可以这样做:

Dim LastRow() As Long
Dim i As Integer
For i = 1 To ThisWorkbook.Worksheets.Count
    With ThisWorkbook.Worksheets(i)
        ReDim Preserve LastRow(i-1)
        LastRow(i-1) = .Range("A" & .Rows.Count).End(xlUp).Row
        .Cells.EntireColumn.AutoFit
    End With
Next i
您也可以这样做:

Dim LastRow() As Long
Dim i As Integer
For i = 1 To ThisWorkbook.Worksheets.Count
    With ThisWorkbook.Worksheets(i)
        ReDim Preserve LastRow(i-1)
        LastRow(i-1) = .Range("A" & .Rows.Count).End(xlUp).Row
        .Cells.EntireColumn.AutoFit
    End With
Next i


为什么它需要在一条线上?一个函数/子调用算一行吗?因为我的工作簿中有28张工作表。因此将有28行代码。因此,我正在寻找一种减少行数的最佳方法。我只是想成为一名最优秀、最聪明的程序员。也许为了清楚起见,你应该把这一点添加到问题中,尽管@SivaCharan和simpLEMAn似乎明白这一点……:)为什么它需要在一条线上?一个函数/子调用算一行吗?因为我的工作簿中有28张工作表。因此将有28行代码。因此,我正在寻找一种减少行数的最佳方法。我只是想成为一名最优秀、最聪明的程序员。也许为了清楚起见,你应该把这一点添加到问题中,尽管@SivaCharan和simpLEMAn似乎明白这一点……:)为什么它需要在一条线上?一个函数/子调用算一行吗?因为我的工作簿中有28张工作表。因此将有28行代码。因此,我正在寻找一种减少行数的最佳方法。我只是想成为一名最优秀、最聪明的程序员。也许为了清楚起见,你应该把这一点添加到问题中,尽管@SivaCharan和simpLEMAn似乎明白这一点……:)为什么它需要在一条线上?一个函数/子调用算一行吗?因为我的工作簿中有28张工作表。因此将有28行代码。因此,我正在寻找一种减少行数的最佳方法。我只是想成为一名最优秀、最聪明的程序员。也许为了清楚起见,你应该把这一点添加到问题中,尽管@SivaCharan和simpLEMAn似乎明白这一点……:)第二个更有用。再次感谢:)这将每次覆盖最后一行1。并且不返回所有工作表的最后一行,只返回最后一行。@user2140261:更新了答案如果不起作用,最好使用列表或集合。另外,如果你从sheets语句中删除“Sheet”,它会运行得更快,因为它将使用所有工作表的索引,而不是使用查找来获取具有名称的工作表。是的,我知道。这种查找只对第1行有用,对查找最后一行没有帮助,因为对于每个工作表,应该存储LastRow值。第二行更有用。再次感谢:)这将每次覆盖最后一行1。并且不返回所有工作表的最后一行,只返回最后一行。@user2140261:更新了答案如果不起作用,最好使用列表或集合。另外,如果你从sheets语句中删除“Sheet”,它会运行得更快,因为它将使用所有工作表的索引,而不是使用查找来获取具有名称的工作表。是的,我知道。这种查找只对第1行有用,对查找最后一行没有帮助,因为对于每个工作表,应该存储LastRow值。第二行更有用。再次感谢:)这将每次覆盖最后一行1。并且不返回所有工作表的最后一行,只返回最后一行。@user2140261:更新了答案如果不起作用,最好使用列表或集合。另外,如果你从sheets语句中删除“Sheet”,它会运行得更快,因为它将使用所有工作表的索引,而不是使用查找来获取具有名称的工作表。是的,我知道。这种查找只对第1行有用,对查找最后一行没有帮助,因为对于每个工作表,应该存储LastRow值。第二行更有用。再次感谢:)这将每次覆盖最后一行1。并且不返回所有工作表的最后一行,只返回最后一行。@user2140261:更新了答案如果不起作用,最好使用列表或集合。另外,如果你从sheets语句中删除“Sheet”,它会运行得更快,因为它将使用所有工作表的索引,而不是使用查找来获取具有名称的工作表。是的,我知道。这种查找仅对第1行有用,对查找最后一行没有帮助,因为对于每张图纸,应存储LastRow值。