Excel オートメーション アドインで使用する関数クラスを C# で作成しようとしています。以下の簡単なコードを使用して、ユーザーが選択した色に一致する範囲内の値を追加したいと考えていました (たとえば、セルの色が "B1" と同じである sum Range("A1:A10") は次のようになります)。 : colorSum(A1:A10,B1)。
public double ColourSum(Range RangeToSum, Range cellContainingColourToSum)
{
double currentTotal = 0;
//return 0; this code is edited from my original posting, due to posting error
for (int i = 0; i < RangeToSum.Cells.Count;i++) //error at 'int i'
{
double iColour = RangeToSum.Interior.ColorIndex(i);
if (iColour == cellContainingColourToSum.Interior.ColorIndex)
{
currentTotal = currentTotal + RangeToSum.Value2(i);
//return currentTotal;
}
}
return currentTotal;
}
残念ながら、上記のコードは 4 行目に「到達不能なコードが検出されました」を返します。私が示したコード例は、私が実際にやりたいことの単純化された例ですが、私の要点をよく示しています。私のコードに問題がありますか、またはこの問題を回避するためにより良い方法で書くことができますか?
ありがとう、リコ。
質問を結論付けるために、次のコードは完全に機能しました (for(int i... with foreach (Range r...) を変更):
public double ColourSum(Range RangeToSum, Range cellContainingColourToSum)
{
double currentTotal = 0;
foreach (Range r in RangeToSum)
{
double iColour = r.Interior.ColorIndex;
if (iColour == cellContainingColourToSum.Interior.ColorIndex)
{
currentTotal = currentTotal + r.Value2;
}
}
return currentTotal;
}