2017-10-10 6 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'など)は、あなたの質問にあるこれらの不特定の"値 "をどうやって得るのでしょうか?あなたは何らかのループが必要であることを知っているようです。詳細の欠如を考えると、それ以上のことは言い難い。おそらく、マクロを書き換えてパラメータを取ってから、ループ内のマクロを呼び出して値を1つずつ渡す必要があります。 –

+0

いくつかの質問:プロジェクトリストの取得元(このリストを生成するもの)、このリストに関連付けられている情報、プロジェクトリスト(バージョン管理など)に重複があり、ループの意図は何ですか?具体的には、リストがありますが、ループしていますが、どのような成果/成果(プロジェクトレポートはあなたにとって個人的ですが、私たちにとってはそうではありません)ですか? – Cyril

+0

プロジェクトリストは現在、別のワークブックに保存されていますが、既存のワークブックに追加できます。プロジェクトリストに重複する値はありません。 ループの面では、それは正しい関数ではないかもしれません、私の前提です。本質的に、今私は手動でプロジェクト番号を入力していますB1です。私がenterを押すと、すぐにマクロが実行され、プロジェクトレポートが生成され、閉じられ、別のプロジェクト番号を入力できるテンプレートに戻ります。 – acoatta

答えて

0

マクロを使用すると、Range("B1")の値を変更するたびに実行された場合、私はあなたがWorksheet_Changeイベントを発射していると思いますテスト:その場合は

If Target.Address = "$B$1" Then 
    AA_RunAll '<-- call your macro 
End If 

することは、あなたがあなた自身のデザインを誘導しなけれ最も簡単な方法は、プロジェクト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イベントを発生するためにExcelシートをだましの、正しい番号をプログラムでマクロを呼び出す:私はむしろあなたのマクロがパラメータを取ることになるだろう。

+0

ありがとう@Matteo NNZ あなたは正しいです。セルの変更時にマクロをトリガーする現在のコードは、Worksheet_Changeイベントを使用しています。 私はマクロを書くのは比較的新しいので、私が行ったことのほとんどはこのフォーラムを読んできたものです。パラメータの推奨事項について詳しく説明できますか? ありがとうございました アーロン – acoatta

関連する問題