在Excel电子表格中,用户可以在列A 中定义工作表的顺序:
A B
1 Sheet3
2 Sheet4
3 Sheet1
4 Sheet2
5
一旦用户在 A列中输入了订单,他/她就可以单击链接到此VBA代码的按钮:
Sub Move()
Sheets(Sheet1.Range("A2").Value).Move After:=Sheets(Sheet1.Range("A1").Value)
Sheets(Sheet1.Range("A3").Value).Move After:=Sheets(Sheet1.Range("A2").Value)
Sheets(Sheet1.Range("A4").Value).Move After:=Sheets(Sheet1.Range("A3").Value)
End Sub
此VBA根据用户在 A列中的输入,将图纸按顺序排列。到目前为止,所有这些都工作正常
现在,我遇到的问题是,张数会有所不同,因此可能会出现8张或10张或15张,而不仅仅是4张。在这种情况下,有必要将所有这些工作表手动添加到VBA代码中。
是否可以使VBA代码更加动态。类似于 A列中的值的数组和类似这样的VBA:
Sub Move()
MoveSheets based on Array {Sheet1.Range("A1:A5")}
End Sub
答案 0 :(得分:1)
如果您的工作表名称位于B4中的“ Sheet1”上,我认为这会起作用。
Sub x()
Dim n As Long, i As Long, r As Range
Application.ScreenUpdating = False
With Sheets("Sheet1")
Set r = .Range("B4", .Range("B" & Rows.Count).End(xlUp))
For n = r.Count To 1 Step -1
Sheets(r.Cells(n).Value).Move after:=Sheets(Sheets.Count - i)
i = i + 1
Next n
Application.Goto .Range("A1")
End With
Application.ScreenUpdating = True
End Sub