【问题标题】:C# Excel Function - unreachable code detectedC# Excel 函数 - 检测到无法访问的代码
【发布时间】:2013-08-19 14:47:39
【问题描述】:

我正在尝试在 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;
    }

【问题讨论】:

    标签: c# excel function unreachable-code


    【解决方案1】:

    你的代码上线的那一刻:

    return 0;
    

    它将退出,它无法访问其余代码。删除该行。

    【讨论】:

    • 谢谢。我在试图找到问题的解决方案时错误地输入了它,我在发帖之前错误地把它加回去了。不幸的是,删除它并不能解决问题。
    • 您是否仍然收到相同的错误消息,或者现在是循环声明的错误(我看到您已标记“//error at 'int i'”)
    • 其实我在说废话。在重新构建代码时,它似乎奏效了。该函数本身会产生“VALUE#”,但这可能是另一个问题。谢谢你们三个人的帮助!
    【解决方案2】:

    return 0 行被命中时,函数结束,之后不执行任何操作。因此,它是无法访问的代码。删除此行以使函数正常运行。

    【讨论】:

    • 谢谢,但见上文,删除该行并不能解决问题。
    【解决方案3】:

    在进入循环之前,您将返回 0。这就是代码无法访问的原因。

    return 0;
    

    【讨论】:

    • 谢谢,但见上文,删除该行并不能解决问题。
    【解决方案4】:

    也许你的 dll 没有在输出目录中编译和替换。您必须清理重建所有代码。 (如果您可以从输出文件夹中手动删除所有内容,那就太好了)。

    如果此 dll 作为项目引用添加,则删除并重新添加项目引用。可能是这样的。

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 1970-01-01
      • 2014-05-22
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多