我正在尝试在C#中创建一个函数类,以在excel自动化加载项中使用。使用下面的简单代码,我想要在与用户选择的颜色匹配的范围内添加值(例如,sum Range(“ A1:A10”),其中单元格颜色与“ B1”相同:colourSum(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;
    }

最佳答案

您的代码上线的那一刻:

return 0;


它将会退出,无法到达其余的代码。删除线。

关于c# - C#Excel函数-检测到无法访问的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18316725/

10-14 15:35
查看更多