-2

関数内の変数をエスケープするのを手伝ってください。理解できません:

Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(Rawdata!K2:K" & maxnumrows & ";Rawdata!I2:I" & maxnumrows & ";""bezahlt"";Rawdata!A2:A" & maxnumrows & ";"">= "&DATWERT(""& weekstart &" 00:00")";Rawdata!A2:A" & maxnumrows & ";""<= "&DATWERT(""& weekend & " 23:59"))

編集ハードコードされた作業式は次のとおりです。

=SUMMEWENNS(Rawdata!K2:K3446;Rawdata!I2:I3446;"bezahlt";Rawdata!A2:A3446;">="&DATWERT("18.03.2013 00:00");Rawdata!A2:A3446;"<="&DATWERT("24.03.2013 23:59"))

日付の変数を挿入したいだけです

"18.03.2013 00:00" => weekstart &" 00:00"
"24.03.2013 23:59" => weekend & " 23:59"
4

2 に答える 2

1

VBA とセル数式の設定に関する私の経験では、二重引用符を続けて使用しないでください。代わりに、chr(34) を使用して、既存の二重引用符内の二重引用符を表します。したがって、二重引用符が連続している数式内のすべての場所を置き換える必要があります。

すなわち

";""bezahlt"

に変更する必要があります

";" & chr(34) & "bezahlt" & chr(34)

したがって、式については、これを試してください:

Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(Rawdata!K2:K" & maxnumrows & ";Rawdata!I2:I" & maxnumrows & ";" & chr(34) & "bezahlt" & chr(34) & ";Rawdata!A2:A" & maxnumrows & ";>= " & DATWERT & "(" & weekstart & " 23:59);Rawdata!A2:A" & maxnumrows & ";<= " & DATWERT & "(" & weekend & " 23:59))"
于 2013-06-07T15:29:45.237 に答える
0

rwisch45 が指摘したように、二重引用符をエスケープしようとするよりも、chr(34) を使用する方がはるかに優れた方法です。

ただし、式の変更を提案したかったのです。特定の日付値で SUMWESSENS を条件付けすることに関心があるため、その目的のためにハードコードされた式を複製しようとするのではなく、先に進んで VBA レベルでそれらを評価することは理にかなっています。式を 2 つのバージョンで提供しています。1 つは VBA で日付計算を行い、もう 1 つはハードコードされたバージョンを複製し、ワークシートで日付計算を行います。

もう1つの変更。Chr(34) を使用すると少し混乱するので、代替変数 'qq' を導入しました。次の式は、タイプミスがなければ、必要なものに非常に近いはずです。

VBAでの日付計算

  qq = Chr(34)
  Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(RawData!K2:K" & _
                 maxnumrows & ";Rawdata!I2:I" & maxnumrows & ";" & qq & _
                 "bezahlt" & qq & ";Rawdata!A2:A" & maxnumrows & ";" & _
                 qq & ">=" & DATWERT(weekstart & " 00:00") * 1 & qq & _
                 ";RawData!A2:A" & maxnumrows & ";" & qq & "<=" & _
                 DATWERT(weekend & " 23:59") * 1 & qq & ")"

ワークシートでの日付計算

  qq = Chr(34)
  Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(RawData!K2:K" & _
                maxnumrows & ",RawData!I2:I" & _
                maxnumrows & "," & qq & "bezahlt" & qq & ",RawData!A2:A" & _
                maxnumrows & "," & qq & ">=" & qq & "&DATWERT(" & qq & _
                weekstart & " 00:00" & qq & ")" & ",RawData!A2:A" & _
                maxnumrows & "," & qq & "<=" & qq & _
                "&DATWERT(" & qq & weekend & " 23:59" & qq & "))"
于 2013-06-09T04:59:46.360 に答える