我正在尝试在C#中创建一个函数类,以便在excel自动化加载项中使用。使用下面的简单代码,我想要在与用户选择的颜色匹配的范围内添加值(例如,和范围(“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行返回“检测到无法访问的代码”。我给出的代码示例是我实际想要做的一个简化示例,但很好地说明了我的观点。我的代码有问题,还是我可以用更好的方式来避免这个问题?
谢谢, 波多黎各。
结束这个问题,下面的代码完全有效(改为(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;
}
答案 0 :(得分:6)
您的代码到达该行的那一刻:
return 0;
它将退出,它无法到达其余的代码。删除该行。
答案 1 :(得分:3)
当命中行return 0
时,函数结束,之后不执行任何操作。因此,它是无法访问的代码。删除此行以使函数正常运行。
答案 2 :(得分:2)
在你进入循环之前你返回0。这就是代码无法访问的原因。
return 0;
答案 3 :(得分:1)
也许你的dll没有在输出目录中编译和替换。您必须清理重建所有代码。 (如果您可以从输出文件夹手动删除所有内容,那将会很好)。
如果将此dll添加为项目引用,则删除并重新添加项目引用。可能是这样的。