2017-10-10 2 views
0

일련의 다른 매크로를 실행하는 매크로가 있습니다. 특정 셀 (B1)의 값을 변경하면 매크로가 자동으로 실행됩니다. 매크로는 B1에 지정된 프로젝트 번호에 대한 프로젝트 보고서를 생성합니다. 나는 주어진 시간에 약 75 개의 활동적인 프로젝트를 가지고있다.변수 목록을 실행할 매크로

통합 문서에 프로젝트 목록을 추가하고 각 값을 통해 실행하고 싶습니다. 값과 값의 수는 매주 변경되므로 값을 매크로에 하드 코딩하지 않아도됩니다. 나는 루프 함수를 사용할 것이라고 가정하고 있지만, 그것에 대해 어떻게할지는 확실하지 않다.

현재 매크로 내 코드는 다음과 같습니다 사전에

Sub AA_RunAll() 

Application.ScreenUpdating = False 
ActiveWorkbook.RefreshAll 
DoEvents 
Call OpenFile 
Call Copy1 
Call DeleteRows1 
Call DeleteRows2 
Call DetailCopy 
Call RemoveEmptySheets 
Call SummarySheet 

Workbooks("Project WIP Template.xlsm").Worksheets("Summary").Activate 
Application.Goto Range("A1"), True 
Application.ScreenUpdating = True 
Application.DisplayAlerts = True 


Call SaveAs 

Workbooks("Project WIP V5.xlsm").Worksheets("Summary").Activate 
Range("b1").Select 

MsgBox "Report Complete" 

End Sub 

감사

+0

이 질문은 명확하지 않습니다. 이러한 다양한 매크로 ('DetailCopy' 등)는 귀하의 질문에 언급되지 않은 이러한 "값"을 어떻게 얻게됩니까? 당신은 어떤 종류의 반복이 필요하다는 것을 알 것입니다. 세부 사항이 없으면 그 이상의 것을 말하기는 어렵습니다. 매크로를 다시 작성하여 매개 변수를 가져온 다음 루프에서 매크로를 호출하고 하나씩 값을 전달해야합니다. –

+0

몇 가지 질문 : 프로젝트 목록을 가져온 곳 (이 목록을 생성하는 대상),이 목록과 관련된 정보, 프로젝트 목록 (버전 관리 등)에 중복 된 내용 및 루프의 의도는 무엇입니까? 구체적으로 말하자면, 목록을 작성하고 반복하지만 결과/결과 (프로젝트 보고서는 귀하에게 개인적인 것이지 우리에게는 귀속되지 않습니다)에 대한 것입니까? – Cyril

+0

프로젝트 목록은 현재 별도의 통합 문서에 저장되어 있지만 기존 통합 문서에 추가 할 수 있습니다. 프로젝트 목록에는 중복 값이 ​​없습니다. 루프 측면에서 볼 때 올바른 함수가 아닐 수도 있습니다. 본질적으로, 지금 프로젝트 번호를 수동으로 입력하는 것은 B1입니다. Enter를 누르면 매크로가 실행되고 프로젝트 보고서가 생성되고 저장되며 다른 프로젝트 번호를 입력 할 수있는 템플릿으로 돌아옵니다. – acoatta

답변

0

매크로는 당신이 Range("B1")의 값을 수정할 때마다 실행되는 경우에, 나는 당신이 Worksheet_Change 이벤트를 트리거 것 같아요 테스트 대상 :

그런 경우라면 자신의 디자인을 속이기위한 가장 쉬운 방법은 프로젝트 num 목록을 작성하는 것입니다. 스프레드 시트의 BER은 Project numbers 말, 열 A :

1 
2 
3 
... 

... 다음이 목록을 통해 루프가 휴대 B1의 값을 대체 할 :

Sub allProjects() 
    For j = 1 To Sheets("Project numbers").Range("A1").End(xlDown).Row 
     Range("B1").Value = Sheets("Project numbers").Range("A" & j).Value 
     'the above set will call the worksheet change and run your macro for a given value 
    Next j 
End Sub 

그래도 말해야한다, 즉 디자인이 이상적이지 않습니다.

Sub AA_RunAll(ByVal projectNumber As Integer) 
    'your code, pass the projectNumber to other submacros if needed 
End Sub 

을 ... 대신 Worksheet_Change 이벤트를 해고 할 수있는 엑셀 시트를 속여의 올바른 번호로 프로그래밍 매크로를 호출 : 차라리 매크로가 매개 변수를 사용 할 것.

+0

감사합니다. @Matteo NNZ 정확합니다. 셀 변경시 매크로를 트리거하는 현재 코드는 Worksheet_Change 이벤트를 사용하고 있습니다. 필자는 매크로 작성에 비교적 익숙하며이 포럼을 읽는 것으로 대부분 해왔습니다. 매개 변수 권장 사항에 대해 자세히 설명해 주시겠습니까? 감사합니다. 아론 – acoatta