【问题标题】:VBA editor auto-deletes spaces at the ends of linesVBA 编辑器自动删除行尾的空格
【发布时间】:2010-11-12 22:38:32
【问题描述】:

有没有办法说服 Excel 中的 VBA 编辑器在我暂停输入四分之一秒时停止自动格式化行以删除末尾的空格?

【问题讨论】:

    标签: excel vba editor


    【解决方案1】:

    我遇到了这个确切的问题,以下对我有用。

    1. 单击 Microsoft Office 按钮,然后单击 Excel 选项
    2. 单击加载项类别
    3. 在“管理”框中,单击“COM 加载项”,然后单击“开始”。
    4. 查找名为“Load Test Report AddIn”的插件,然后取消选中它
    5. 重启excel

    此插件随 VS2010 Beta2 一起安装

    【讨论】:

    • 按照用户“ade”的建议禁用“负载测试报告插件”对我来说非常有效。由于我使用 Visual Studio 2010,我想我在安装过程中得到了这个插件。
    • 对我来说,是“Team Foundation Server Excel 加载项”导致了这个问题。
    • 禁用“负载测试报告插件”对我有用。有人想知道它在幕后到底在做什么,以这样的方式影响代码编辑器窗口!
    • 对我来说,“Team Foundation 插件”也是有罪的——即使它已被禁用。我必须以管理员身份启动 Excel 才能真正删除加载项。谢谢阿德
    • “Microsoft Office 按钮”在哪里? @ade
    【解决方案2】:

    在 Excel 2010 中,切换 Developer 功能区选项卡上的 Design Mode 按钮可以解决我的问题。

    【讨论】:

    • 这有帮助。谢谢。不过,我不确定这是否真的是根本原因,或者它是否在设计模式下阻止了根本原因的发生。
    • 其实我收回了。它没有帮助,因为它自己退出了设计模式。
    • 每次从代码编辑器运行时,它都会退出设计器模式。编辑器工具栏上也有相同的切换按钮,因此您可以直接从那里切换回来。
    【解决方案3】:

    我之前肯定遇到过这个问题,vba 编辑器会在我输入时格式化(不仅仅是当我转到另一行时)。对我来说,它似乎与我在打开的工作簿中的 Microsoft Web 浏览器控件有关。当我拿出网络浏览器时,VBA 编辑器又开始正常工作了。我不知道为什么会这样,但确实如此。现在我避免在我的工作簿中使用该控件。

    【讨论】:

      【解决方案4】:

      当您在 VBA 编辑器中时,某些事情会导致您的电子表格重新计算,这会“编译”您的代码,从而去除空格。您需要在编辑时停止重新计算单元格。在电子表格中将计算变为手动。 工具 > 选项 > 计算应该可以解决问题。

      当我通过 DDE 连接重新计算单元格时,我注意到了这一点。

      【讨论】:

      • 这个答案对我来说听起来不错,基于 Access 中的类似经验。我不记得是什么导致代码抽搐了,但我当时正在学习递归......不寒而栗......
      • 我也是,原因是 DDE 连接
      • 是的,对我来说,这是我打开的一个电子表格中的一个偏移公式
      【解决方案5】:

      有一种方法可以关闭 VBA 编辑器中的自动“更正”。

      Tools 菜单 -> Options -> Editor 选项卡 -> 清除 Auto Syntax Check

      遗憾的是,这并不能解决您的所有问题,因为 VBA 编辑器往往有自己的想法,无论好坏。

      【讨论】:

      • 当你在那里时,你应该检查Require Variable Declaration 框。它会在每个新文件中自动输入一个Option Explicit,从而在调试一个不会更改的变量时避免潜在的挫败感,因为它的名称有错别字。
      • 请注意,当您取消选中自动语法检查时,您将不会再收到不断的消息框告诉您“编译错误”;我相信每个 VB 开发人员都已经爱上了它。
      • 向下滚动!如果您通过谷歌登陆这里,您正在寻找的答案是 ade 的答案(还有更多的赞成票)。
      【解决方案6】:

      在 vba2003 上每次将其退出设计模式都会修复它 - 起初它让我发疯......我确实注意到它可能与 Web 控件有关,但是当我将它退出设计模式时它工作正常......只需切换它以使其行为:)

      【讨论】:

        【解决方案7】:

        我最近多次遇到同样的问题,让我发疯。

        在阅读了这篇文章提到的所有不同修复(没有一个对我有用)后,我回忆起我最近一直在玩 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 上。

        【讨论】:

          【解决方案8】:

          以上都不适合我。 我有一个 Application.OnTime 计时器,它每秒触发一次,这引发了对某些事情的重新计算:评论它让我很开心。

          【讨论】:

            【解决方案9】:

            在将 Timer 事件添加到 Access 2007 表单后,我最近开始发生这种情况。每次事件触发时(最初我将其设置为 1 秒,现在将其设置为 5秒,并且行为相应地缩放)。为了执行事件代码,应用程序必须确保它已被编译。据推测,编辑器需要处于“理智”状态才能执行此操作,因为它可能必须检查模块之间的代码依赖关系。请注意,无论当时是否将任何相关代码实际加载到编辑器中,都会发生该行为。另请注意,重置执行状态不会影响计时器事件触发。实际上,可以在使用编辑器时关闭触发表单、将其切换到设计视图、在触发代码中设置断点或增加计时器间隔。

            与 abhishek 的评论相反,更改 Tools/Options.../General/Compile On Demand 和/或 Background Compile 的设置不会影响问题。

            【讨论】:

              【解决方案10】:

              如果有帮助,以前的答案都没有解决我的问题。唯一的解决方案似乎是关闭 xls 文件并重新打开它。令人沮丧的是必须每 30 分钟做一次,但至少它有效。很想知道它为什么要重新编译和清理文本...应该是禁用文本清理但找不到它的选项。

              【讨论】:

                【解决方案11】:

                关闭Tools > Options > General > Background Compile。这为我解决了。

                【讨论】:

                  【解决方案12】:

                  这是一个长期存在的问题,可能有多种原因。我在 Access VBE 中也出现了同样的问题(所以 Excel 的答案自然是不相关的)。经过大量的挖掘,我终于用下面的解决方案修复了它。首先回顾一下:

                  如果您因为 Excel 中的这个问题而出现在这里,请先尝试上述解决方案。总结一下:

                  • Excel 中最常见的问题是“设计”按钮被切换。切换它并查看上面 Dmitry Frenkel 提交的行为是否发生变化
                  • 如果这不起作用,请检查 Ade 提到的“负载测试报告”插件。

                  这确实是 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 而来到这里,他很可能会很准确。

                  我希望这对人们有所帮助。我知道我在研究这个问题时一直在寻找这个页面,所以我想我会在这里更新这个解决方案。

                  【讨论】:

                    【解决方案13】:

                    我今天在全新安装 Excel 2010 Beta 2 时遇到了这个问题。以上都没有任何区别,但是进入信任中心并禁用所有应用程序加载项为我解决了这个问题。

                    【讨论】:

                      【解决方案14】:

                      我有 Office 2010 Pro,但我遇到了同样的问题。当我键入每个单词之间的空格时,它被删除了。在尝试了打开和关闭它们的每个选项后,我发现唯一可行的方法是禁用Winzip Courie(excel) add-in。这是通过选项对话框加载项部分完成的。

                      【讨论】:

                        【解决方案15】:

                        在 office 365 中我遇到了同样的问题 - 对我有用的是我用不同的名称保存了文件,当我重新打开新文件时问题就消失了。

                        【讨论】:

                          【解决方案16】:

                          我发现启用自动保存时会弹出此问题。关闭它让我无需每秒编译一次即可编写代码。

                          【讨论】:

                            【解决方案17】:

                            我认为我从未见过 VBE 在我停止输入时删除空格。如果您移至另一行,它将从行中删除尾随空格,但这是不同的,我认为不能改变行为。

                            【讨论】:

                            • 哦,确实如此。我不记得我是如何摆脱这种行为的。
                            • 所以你是说这不可能发生,对吧?这不是一个很有帮助的答案。它正在发生。对我来说。而且我知道我在做什么。
                            • 不是说它不会发生,只是我从未见过它发生。
                            【解决方案18】:

                            当表单以 Form("Execute") 模式打开时,会在 Access 的 VBA 编辑器中删除空格。这可能是由于基于“On Timer”方法的后台执行。在 Access 中关闭表单可以解决 VBA 中的问题。

                            【讨论】:

                            • 请看下面我的解决方案。关于 Access VBE,Dom 在这篇文章中并没有错,但是这个答案可以稍微扩展一下。 IMO 没有必要投反对票。在 Access VBE 中,“On Timer”问题很可能是问题所在。关闭该表单很可能会解决此问题。鉴于 OG 问题是针对 Excel 的,任何在任何版本的 VBE(Access、Excel 等)中遇到此问题的人都会因为 Google 而在此页面上找到自己。出于这个原因,我更新了以下解决方案。我希望这会有所帮助。
                            猜你喜欢
                            • 1970-01-01
                            • 2016-09-10
                            • 1970-01-01
                            • 2015-08-04
                            • 2010-09-26
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多