1

テーブルに挿入する数式に変数を挿入しようとしています。数式は、別のテーブルから sumproduct を実行することになっています。通常はテーブル名を呼び出すだけですが、問題は、これが異なるテーブルで異なる時間に実行されるため、実際には同じテーブル名になることはありません。テーブル名を変数「PrevSh」に置き換えました

以下のこの式は、私のマクロに含まれています。それは私に問題を与えています。アプリケーション定義またはオブジェクト定義のエラーが表示されます。

ActiveCell.FormulaR1C1 = "=IF(A7<>"",SUMPRODUCT(('[" & PrevSh & "] !$D$4:$D$485=A7])*('[" & PrevSh & "] !$E $4:$E$485])),"")"

Dim sh As Worksheet
Dim TableName As String
Dim theTable As ListObject
Dim PrevSh As String

  Set sh = ActiveSheet
  TableName = ActiveSheet.Previous.Name & "_Spider"
  PrevSh = ActiveSheet.Previous.Name
  Sheets.Add.Name = (TableName)

Range("A3").Select
ActiveCell.FormulaR1C1 = "MATERIAL"
Range("B3").Select
ActiveCell.FormulaR1C1 = "TOTAL"
Range("C3").Select
ActiveCell.FormulaR1C1 = "QTY OF LNG"
Range("D3").Select
ActiveCell.FormulaR1C1 = "MATERIAL DESCRIPTION"
Range("E3").Select
ActiveCell.FormulaR1C1 = "RAWMATERIAL LENGTH"
Range("F3").Select
ActiveCell.FormulaR1C1 = "PIECES"
Range("A3:f4").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$3:$F$4"), , xlYes).Name = _
   TableName
Range(TableName & "[TOTAL]").Select
ActiveCell.FormulaR1C1 = "=IF(A7<>"",SUMPRODUCT(('[" & PrevSh & "] !$D$4:$D$485=A7])*('[" & PrevSh & "] !$E$4:$E$485])),"")"
4

1 に答える 1

2

あなたの式にはいくつかの間違いがあります。

  1. 一致しない括弧 []
  2. 二重引用符の前に二重引用符を付ける必要があります
  3. FormulaR1C1 には R1C1 形式が必要です
  4. シート名に余分な括弧と ' が含まれています

これを修正する方法は次のとおりです。

ActiveCell.Formula = "=IF(A7<>"""",SUMPRODUCT((" & PrevSh & "!$D$4:$D$485=A7)*(" & PrevSh & "!$E$4:$E$485)),"""")"

@Sorceri が提案したように Chr(34) ascii 値を使用する方法に興味がある場合は、これを試してください。

ActiveCell.Formula = "=IF(A7<>" & Chr(34) & Chr(34) & ",SUMPRODUCT((" & PrevSh & "!$D$4:$D$485=A7)*(" & PrevSh & "!$E$4:$E$485))," & Chr(34) & Chr(34) & ")"

どちらの方法でも、セルの結果は次のようになります (シート名を置き換えてください。シート 1 でテストしました)。

=IF(A7<>"",SUMPRODUCT((Sheet1!$D$4:$D$485=A7)*(Sheet1!$E$4:$E$485)),"")
于 2013-11-01T20:25:28.727 に答える