Tag: 终止

不能终止我的循环

我已经创build了一个循环,但不知道如何阻止它。 当活动单元格为空时,我希望循环停止,即使单元格是空的,它也会继续循环。 Do Until IsEmpty(ActiveCell) Sheets("UNIT BUYSHEET").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Sheets("PAYOFF INFO & LIEN RELEASE").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Sheets("AUTHORIZATION FOR PAYOFF").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Sheets("GUARANTEE OF TITLE").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Sheets("FLEET LIST & QUOTE").Select Rows("9:9").Select Selection.Delete Shift:=xlUp Loop 这是我迄今为止创build的,它打印所选“单位”的表单,一旦所有表单被打印,它将删除单位,并打印下一个单位表格。 我已经添加了多个单位,循环工作很好,但不会停止,当没有更多的单位。 有什么build议?

运行代码时,退出Interop控制的Excel

我已经在C#中为Excel编写了一个包装器,以允许在批处理过程中(在JobScheduler下)运行Excel工作簿。 我的问题是这个… 如果代码运行时间过长或需要通过作业调度程序终止,则包装程序需要处理此终止事件。 为此我补充说 SetConsoleCtrlHandler(new HandlerRoutine(ConsoleCtrlCheck), true); 进入代码。 在ConsoleCtrlCheck方法中,我调用一个公共的出口例程(在正常或终止的情况下使用)。 根据MSbuild议,此路由select会执行以下操作。 closures并发布工作簿 closures并发布Excel 垃圾收集 然后用被调用的Excel方法(入口点)的返回码退出。 这很好。 但是,如果VBA代码仍在运行,Interop对象将不会响应工作簿closures或应用程序退出调用。 这可能是因为一切正在缓慢或由于模态对话已经发出。 为了应付这个问题,我在这个常见的例行程序中join了以下内容: 创build新的线程来运行KillExcel方法 KillExcel方法睡眠一段时间(所以正常的退出代码有机会工作),然后杀死进程 如果正常的代码工作,它会在线程中调用Abort private static void Cleanup() { // Give this X seconds then terminate mKillThread = new Thread(KillExcel); mKillThread.IsBackground = false; mKillThread.Start(); … // close the workbooks and excel application // Marshal.FinalReleaseComObject etc GC.Collect(); GC.WaitForPendingFinalizers(); // […]

按Esc时停止Excelmacros执行不起作用

我在XP上运行Excel 2007。 有没有办法阻止一个macros在执行过程中运行,而不是按下转义? 通常如果我认为我创build了一个无限循环或者其他的东西,那么我打了一个escape,它会抛出一个错误,但macros停止。 这一次(我已经做了,但没有这么糟糕),我build立了一个msgbox进行一些快速debugging。 原来,它必须循​​环大约6000次,这意味着我必须“确定”6000个消息框,这花了几分钟。 我没有保存之前运行(另一个错误),所以我不能打开任务pipe理器退出。 有没有另外一种方法来阻止macros的执行情况,如果我再次这样呢?