【发布时间】:2010-11-12 22:38:32
【问题描述】:
有没有办法说服 Excel 中的 VBA 编辑器在我暂停输入四分之一秒时停止自动格式化行以删除末尾的空格?
【问题讨论】:
有没有办法说服 Excel 中的 VBA 编辑器在我暂停输入四分之一秒时停止自动格式化行以删除末尾的空格?
【问题讨论】:
我遇到了这个确切的问题,以下对我有用。
此插件随 VS2010 Beta2 一起安装
【讨论】:
在 Excel 2010 中,切换 Developer 功能区选项卡上的 Design Mode 按钮可以解决我的问题。
【讨论】:
我之前肯定遇到过这个问题,vba 编辑器会在我输入时格式化(不仅仅是当我转到另一行时)。对我来说,它似乎与我在打开的工作簿中的 Microsoft Web 浏览器控件有关。当我拿出网络浏览器时,VBA 编辑器又开始正常工作了。我不知道为什么会这样,但确实如此。现在我避免在我的工作簿中使用该控件。
【讨论】:
当您在 VBA 编辑器中时,某些事情会导致您的电子表格重新计算,这会“编译”您的代码,从而去除空格。您需要在编辑时停止重新计算单元格。在电子表格中将计算变为手动。 工具 > 选项 > 计算应该可以解决问题。
当我通过 DDE 连接重新计算单元格时,我注意到了这一点。
【讨论】:
有一种方法可以关闭 VBA 编辑器中的自动“更正”。
Tools 菜单 -> Options -> Editor 选项卡 -> 清除 Auto Syntax Check 框
遗憾的是,这并不能解决您的所有问题,因为 VBA 编辑器往往有自己的想法,无论好坏。
【讨论】:
Require Variable Declaration 框。它会在每个新文件中自动输入一个Option Explicit,从而在调试一个不会更改的变量时避免潜在的挫败感,因为它的名称有错别字。
在 vba2003 上每次将其退出设计模式都会修复它 - 起初它让我发疯......我确实注意到它可能与 Web 控件有关,但是当我将它退出设计模式时它工作正常......只需切换它以使其行为:)
【讨论】:
我最近多次遇到同样的问题,让我发疯。
在阅读了这篇文章提到的所有不同修复(没有一个对我有用)后,我回忆起我最近一直在玩 Internet Explorer Control,从 VBA 打开 Internet Explorer。
这篇文章的一些答案中提到了这一点。
这让我走上了正确的道路,为了修复它,我必须首先删除所有 iexplore.exe 实例(alt+control+delete),关闭 Excel 并再次打开 excel。 (iexplore.exe 已经从 VBA 代码中不可见地打开,我不知道它们正在运行)
这修复了错误。
4 年多来,我一直在大量使用 VBA 进行编程,但从未遇到过这个问题。
就在几周前,我开始使用 IE 控件,并开始遇到这个问题...所以在我的情况下,我只能假设该错误与 IE 控件直接相关。
我同时在同一台 PC 上运行 excel 2003 和 2007,而问题只发生在 excel 2007 上。
【讨论】:
以上都不适合我。
我有一个 Application.OnTime 计时器,它每秒触发一次,这引发了对某些事情的重新计算:评论它让我很开心。
【讨论】:
在将 Timer 事件添加到 Access 2007 表单后,我最近开始发生这种情况。每次事件触发时(最初我将其设置为 1 秒,现在将其设置为 5秒,并且行为相应地缩放)。为了执行事件代码,应用程序必须确保它已被编译。据推测,编辑器需要处于“理智”状态才能执行此操作,因为它可能必须检查模块之间的代码依赖关系。请注意,无论当时是否将任何相关代码实际加载到编辑器中,都会发生该行为。另请注意,重置执行状态不会影响计时器事件触发。实际上,可以在使用编辑器时关闭触发表单、将其切换到设计视图、在触发代码中设置断点或增加计时器间隔。
与 abhishek 的评论相反,更改 Tools/Options.../General/Compile On Demand 和/或 Background Compile 的设置不会影响问题。
【讨论】:
如果有帮助,以前的答案都没有解决我的问题。唯一的解决方案似乎是关闭 xls 文件并重新打开它。令人沮丧的是必须每 30 分钟做一次,但至少它有效。很想知道它为什么要重新编译和清理文本...应该是禁用文本清理但找不到它的选项。
【讨论】:
关闭Tools > Options > General > Background Compile。这为我解决了。
【讨论】:
这是一个长期存在的问题,可能有多种原因。我在 Access VBE 中也出现了同样的问题(所以 Excel 的答案自然是不相关的)。经过大量的挖掘,我终于用下面的解决方案修复了它。首先回顾一下:
如果您因为 Excel 中的这个问题而出现在这里,请先尝试上述解决方案。总结一下:
这确实是 Excel 中的两个主要原因,但如果这些解决方案都不起作用,请在此处滚动浏览其余解决方案。所有这些都是原因的有效可能性。在 Access 中,原因非常简单。这是某处表格上的计时器问题。我从用户 Kevin K. Sullivan 的 here 找到了这个解决方案。
将以下代码行复制到剪贴板上。 (您可能需要 首先将其粘贴到文本编辑器中并将其强制到一行,具体取决于 你的新闻阅读器。它必须是一行。)
For i = 0 to Forms.Count -1: Debug.Print Forms(i).Name, Forms(i).TimerInterval: Next i
切换到 Access。
按 Ctrl-G 进入即时窗口。
按 Ctrl-V 粘贴代码。
按回车键运行代码。将列出所有打开的表格。任何非零定时器间隔都是你的罪魁祸首。只需关闭该表单(它可能会从您认为正在处理的进程之外的另一个进程中隐形打开)。
我认为这里的 Access 解决方案是用户 Dom 上面试图说的。我猜投反对票是因为它没有得到很好的解释和/或因为当 OG 问题出现在 Excel 中时,他正在谈论 Access。无论如何,如果您因为 Access 中的 VBE 而来到这里,他很可能会很准确。
我希望这对人们有所帮助。我知道我在研究这个问题时一直在寻找这个页面,所以我想我会在这里更新这个解决方案。
【讨论】:
我今天在全新安装 Excel 2010 Beta 2 时遇到了这个问题。以上都没有任何区别,但是进入信任中心并禁用所有应用程序加载项为我解决了这个问题。
【讨论】:
我有 Office 2010 Pro,但我遇到了同样的问题。当我键入每个单词之间的空格时,它被删除了。在尝试了打开和关闭它们的每个选项后,我发现唯一可行的方法是禁用Winzip Courie(excel) add-in。这是通过选项对话框加载项部分完成的。
【讨论】:
在 office 365 中我遇到了同样的问题 - 对我有用的是我用不同的名称保存了文件,当我重新打开新文件时问题就消失了。
【讨论】:
我发现启用自动保存时会弹出此问题。关闭它让我无需每秒编译一次即可编写代码。
【讨论】:
我认为我从未见过 VBE 在我停止输入时删除空格。如果您移至另一行,它将从行中删除尾随空格,但这是不同的,我认为不能改变行为。
【讨论】:
当表单以 Form("Execute") 模式打开时,会在 Access 的 VBA 编辑器中删除空格。这可能是由于基于“On Timer”方法的后台执行。在 Access 中关闭表单可以解决 VBA 中的问题。
【讨论】: