我有以下宏,我正在努力实现以下目标:
它似乎只运行删除前3行的第一个例程而没有别的。我是Macro的新手,所以我似乎错过了运行所有Subs的重要内容吗?
选项明确
Sub sbDeleteARowMulti()
Rows("1:3").Delete
End Sub
Sub sbChangeColumnWidthMulti()
Columns("A:Z").AutoFit
End Sub
Sub RenDelCols()
Dim vCols As Variant
Dim vNames As Variant
Dim iCols As Integer
Dim iCol As Integer
Dim wks As Worksheet
Dim i As Integer
'define the worksheet
Set wks = Worksheets("timesheets2")
'Cols in Receiving to be renamed
vCols = Array(2, 9, 14, 15, 16, 19) 'Cols A,L,N,Q,X,Y
'Names from Order to rename them to
vNames = Array("Project", "Supervisor", "Employee", "Status", "Date", "Time")
With wks
iCols = .Cells(1, .Columns.Count).End(xlToLeft).Column
For iCol = iCols To 1 Step -1
i = 0
'check if col number is one to change
On Error Resume Next
i = Application.WorksheetFunction.Match(iCol, vCols, 0)
On Error GoTo 0
If i = 0 Then
'column is not in list, delete it
.Columns(iCol).EntireColumn.Delete
Else
'col is in list, rename it
.Cells(1, iCol).Value = vNames(i - 1)
End If
Next
End With
End Sub
答案 0 :(得分:1)
要在另一个子区域内调用子区域,您只需执行以下操作:
Call Subname()
如果没有要传递的参数,括号甚至是可选的。
所以你可以像这样编辑你的第一个子:
Sub sbDeleteARowMulti()
Rows("1:3").Delete
Call sbChangeColumnWidthMulti
Call RenDelCols
End Sub