2
try
{
    sheet1.get_Range("M34").FormulaArray =
    "=SUM(IF(Sheet2!D6:D122=M31,IF(Sheet2!P6:P122>0,Sheet2!I6:I122/SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)*ROUNDUP(SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)/Sheet2!Q3,0),0),0))";
}
catch (COMException ex) { MessageBox.Show(ex.Message); }

上記のコードが COM 例外をスローする理由は誰でも知っています。Excel に入力して ctrl+shift+enter を押すと数式は正常に機能しますが、プログラムを Excel に書き込むと例外がスローされます。プログラムの他の場所で Range.FormulaArray を使用しましたが、問題なく動作しました。私が頭がおかしくなり、他の人が同じ問題を抱えているように見えますが、オンラインで解決策がないため、誰かが問題を指摘できるかもしれません。

4

1 に答える 1

2

この回避策を試したところ、うまくいきました。

try        
{  
sheet1.get_Range("M33").FormulaArray = "=SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)";

sheet1.get_Range("M34").FormulaArray = "=SUM(IF(Sheet2!D6:D122=M31,IF(Sheet2!P6:P122>0,Sheet2!I6:I122/Sheet1!M33*ROUNDUP(Sheet1!M33/Sheet2!Q3,0),0),0))";        
}        
catch (COMException ex) { MessageBox.Show(ex.ToString); } 
于 2012-06-25T21:38:42.957 に答える