2

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;
    }
4

4 に答える 4

6

コードが次の行に到達した瞬間:

return 0;

終了します。コードの残りの部分に到達する方法はありません。行を削除します。

于 2013-08-19T14:49:43.803 に答える
3

return 0がヒットすると、関数は終了し、それ以降は何も実行されません。したがって、到達不能なコードです。この行を削除して、関数が適切に動作するようにします。

于 2013-08-19T14:49:41.527 に答える
2

ループに入る前に 0 を返しています。そのため、コードに到達できません。

return 0;
于 2013-08-19T14:49:49.540 に答える