将多行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值。