2017-09-25 5 views
1

私持っている私は、以下を達成しようとしているマクロと、次のExcelのマクロ - すべての潜水を実行していない

  1. を最初の3行の削除
  2. 自動調整各列
  3. いくつかの列の名前を変更および削除残り。

最初の3行だけを削除し、それ以外のものは削除しないように見えます。私はMacro'sの新機能ですので、すべてのSubを実行するには何かが欠けているようです。

あなただけ行う必要があり、別のサブ内のサブを呼び出すために

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

他の二つの潜水艦は、呼び出されることはありませ飽きません。 – waka

+0

コードをどのように実行するのですか?..すべてのサブを1つにまとめてから試してみてください。 – Maddy

答えて

1

明示的なオプション:渡すパラメータがない場合

Call Subname() 

括弧も省略可能です。

だから、このようなあなたの最初のサブを編集できます。もちろん、彼らは実行されませんので

Sub sbDeleteARowMulti() 
    Rows("1:3").Delete 
    Call sbChangeColumnWidthMulti 
    Call RenDelCols 
End Sub 
関連する問題