2017-09-25 1 views
1

내가 가지고있는 나는 다음과 같은 달성하기 위해 노력하고있어 매크로 다음엑셀 매크로 - 모든 잠수정을 실행하지

  1. 를 처음 세 행 삭제
  2. 자동 맞춤 각 열
  3. 일부 열 이름을 바꾸고 삭제 나머지.

첫 번째 3 줄만 삭제하는 첫 번째 루틴 만 실행하는 것처럼 보입니다. Macro 's에 익숙하지 않아서 모든 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

다른 두 개의 서브 우퍼, 호출되지 얻을 않았다. – waka

+0

코드를 실행하는 방법? .. 모든 하위를 하나로 결합한 다음 시도하십시오. – Maddy

답변

1

명시 적 옵션 : 전달하는 매개 변수가없는 경우

Call Subname() 

브래킷도 선택 사항입니다.

그래서 당신은 다음과 같이 첫 번째 서브를 편집 할 수 있습니다 : 물론 그것들이 실행되지 않도록

Sub sbDeleteARowMulti() 
    Rows("1:3").Delete 
    Call sbChangeColumnWidthMulti 
    Call RenDelCols 
End Sub