允许用户在冗长操作中中断

适用于:Excel 2013 | Office 2013 | Visual Studio

尽管 Windows 使用抢占式多任务处理,其中函数或命令可能需要很长时间才能执行,但最好现在和反复向操作系统提供一些时间,以帮助其计划并发任务。 使用本机 Windows 调用,可以使用睡眠函数执行此操作。 使用 C API,可以使用 xlAbort 函数执行此操作,该函数不仅会立即生成处理器,还可以检查用户是否已按下取消键 ESC

因此,xlAbort 函数使代码能够检查用户是否要结束进程、执行必要的清理,然后将控件返回到 Excel。 函数还可用于清除中断条件。 这使命令能够显示一个对话框,以验证用户是否要结束命令。 如果用户不想结束命令,则使用参数 FALSE 调用 xlAbort 函数将清除中断。 (默认参数为 TRUE ,它只是检查条件,但不清除它。)

可以从用户定义的函数 (UDF) 或 XLL 命令调用 xlAbort 函数。 在 UDF 中,当 xlAbort 函数返回 TRUE 时,检测到用户中断后,通常会缩短函数计算并返回一些值以指示计算未完成,可能是错误或零。 不会清除中断条件,以便同时检查此条件的长函数的其他实例也会中断。 当重新计算结束时,Excel 会隐式清除此条件。

在命令中检测到中断条件时,通常通过使用参数 FALSE 再次调用 xlAbort 函数来清除该条件,尽管 Excel 会在命令结束时隐式清除此条件。

另请参阅

只能从 DLL 或 XLL 调用的 C API 函数
Excel 中的多线程重新计算
开发 Excel XLL
访问 Excel 实例和主窗口句柄