【问题标题】:How to calculate selected Excel range using ExcelDnaUtil.Application selection?如何使用 ExcelDnaUtil.Application 选择计算选定的 Excel 范围?
【发布时间】:2022-03-06 15:05:20
【问题描述】:

我正在编写一个自定义 Excel 加载项,它为任务分配特定的键盘快捷键,例如仅对选定单元格进行数字格式设置。当我尝试添加仅重新计算所选范围的快捷方式时,将重新计算整个工作表。

 public class Main : IExcelAddIn
    {

        public void AutoOpen()
        {
            dynamic app = ExcelDnaUtil.Application;
            app.OnKey(\"^N\", \"FormatNumbers\");
            app.OnKey(\"^C\", \"CalcSelection\");
        }

        public void AutoClose()
        {
        }

    }

    public class KeyboardShortcuts
    {

        public static void FormatNumbers()
        {
            dynamic app = ExcelDnaUtil.Application;
            dynamic selection = app.Selection;
            selection.NumberFormat = \"#,##0;[Red]-#,##0\";
        }

        public static void CalcSelection()
        {
            dynamic app = ExcelDnaUtil.Application;
            dynamic selection = app.Selection;
            selection.Calculate();
        }

    }

FormatNumbers 方法完美运行,但CalcSelection 方法强制重新计算整个工作表,而不仅仅是我选择的位。

希望有任何建议可以使此代码正常工作吗?

    标签: c# excel excel-dna


    【解决方案1】:

    与 Excel Range.Calculate 调用有关的各种怪癖。您可以在 Charles Williams 的 FastExcel 网站上找到一些有用的信息:https://www.decisionmodels.com/calcsecretsg.htm

    如果这本书处于自动计算模式,听起来Range.Calculate 将重新计算所有工作表上的所有易失单元格。

    【讨论】:

    • 非常感谢,戈弗特。我想通了 - 代码确实有效,但前提是自动计算设置为 False。你对挥发性细胞的建议是线索。关于如何强制自动重新计算关闭的任何建议?应用程序.计算 = -4135?
    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多