2017-01-04 18 views
0

私はいくつかの助けを必要とします。 Excel 2007を使用しています。 私はこれを行うことさえできていません。 私は効率を維持し、アプリケーションが使用されない場合は速度を上げる必要があります。VBAを変数に代入し、変数を使用して式を評価します

基準をテストするための 'IF'文があります。 結果に応じて、後で使用するためにいくつかの数式のうちの1つを変数に割り当てる必要があります。 結果を配列を構築するために2番目の変数に格納できるように、式を評価する変数を持つ必要があります。

サンプルコード:

If (varEmployeeName = "(All)" Or varEmployeeName = "(Multiple Items)") Then 
    **varArrayFormula = "Application.WorksheetFunction.SumIfs(wsSumRange, wsLookupRange, wsLookupValue)"** 
Else 
    **varArrayFormula = "Application.WorksheetFunction.SumIfs(wsSumRange, wsLookupRange, wsLookupValue, wsLookupRange2, varEmployeeName)"** 

その後、このコードには実行されます:

ReDim varKPIArray(0 To varLastRow) ' creates the array size 

For varCol = 10 To 13 
    For varRow = 8 To varLastRow 
     varDailyKPIHeading = ws.Cells(7, varCol).Value 
     Select Case varDailyKPIHeading 
      Case "PRODUCTIVITY" 
       Set wsSumRange = ThisWorkbook.Worksheets("DailyProductivity").Range("$G:$G") 
       Set wsLookupRange = ThisWorkbook.Worksheets("DailyProductivity").Range("$F:$F") 
       wsLookupValue = ws.Range("B" & varRow).Value 
       **varSumifValue = Application.Evaluate(varArrayFormula)** 
       varKPIArray(varRow - 8) = varSumifValue 

      Case "HOURS" 

プログラムは、その後、いくつかの列と行をループは、それゆえ、なぜ変数が必要とされます。私はこの時点で2つのオプションを持っています: 1)は、配列を構築することですし、2番目のループで適切なセルに配列の結果を貼り付けることができます。 または 2)私は、各セルをループだとして、私は、セルに数式の結果を移入

が提案やアイデア

+0

私は ""を使用して試しましたが、これは変数として式に変数を適用しましたが、[]を使って試しましたが、式を実行して結果を変数に適用したいとします。 – rchrysler

答えて

1

があなたの式の文字列としてこれを使用して、あなたが助けるために皆に感謝:

"SumIfs(" & wsSumRange.Address(0,0) & "," & wsLookupRange.Address(0,0) & "," & wsLookupValue & ")" 

そして:彼らの提案やヘルプを与えたすべての人へ

"SumIfs(" & wsSumRange.Address(0,0) & "," & wsLookupRange.Address(0,0) & "," & wsLookupValue & "," & wsLookupRange2.Address(0,0) & "," & varEmployeeName & ")" 
+0

ありがとうございました。私はあなたが誤解しているかもしれないと思う。私は、それが可能であれば、式自体を後の使用のための変数に割り当て、式の結果は割り当てない方法を探しています。 – rchrysler

+0

wsSumRange&wsLookupRange&wsLookupRange2はすでに範囲として設定されており、wsLookupValue&varEmployeeNameはsumifs条件としての文字列値です。 – rchrysler

0

感謝。 最終的に私は何かを得ることができず、コードの設計と書き換えに終わりました。 変数に式を適用して式を再入力する必要がなく、式を含む変数だけを参照できるように、変数に式を適用するという単純なソリューションが期待されました。 コードを完成させてデバッグしたらすぐに私のソリューションを投稿します。

関連する問題