Microsoft.Vbe.Interop在C#中使用,我可以访问CommandBarEvents和ReferencesEvents通过VBE.Events.
然而,那些非常有用的MSDN文档似乎表明,VBProjectsEvents当向VBE添加项目或从VBE中删除项目时,我可以使用它来通知我的加载项...这正是我在这里想要实现的.
我可以_VBProjectsEvents在对象浏览器中看到该接口,但没有实现它(而不是_CommandBarControlsEvents接口,由它实现CommandBarEventsClass),使用ReSharper的实现功能.
在_VBProjectsEvents任何地方都有接口的实现吗?如果没有,那么如何通知从VB中删除VBProject?
我正在使用Rubberduck对我的VBA实现进行单元测试.当Assert.IsTrue在一个TestMethod中使用相同类型的多个Assert(例如)时,测试结果并没有告诉我哪个失败,据我所见.
有没有办法找出哪个Assert失败或者这是在Rubberduck未来路线图上?当然我可以添加自己的信息,例如Debug.Print在每个Assert之前使用,但这会导致很多额外的代码.
我知道在一次测试中对于多个Assert有不同的看法,但我选择在我的情况下使用它们,这个讨论已经在其他地方讨论过了 .
是否可以创建一个可加载到 Office 2010 64 位 Visual Basic 编辑器中的 COM 加载项?我可以将我的加载项加载到 Office 2010 32 位中,但它只是被 64 位版本忽略。
编辑:在我的研究中,我发现许多流行的 VBE 加载项不适用于 64 位 Office(例如 Code Cleaner、MZ Tools、VBE 工具等)。其中许多是因为它们是在 32 位 VB6 中构建的,但有人知道有任何可以在 64 位 Office 中运行的 VBA IDE 插件吗?
启动Excel并打开VBE ALT+ F11.
查找Tools并单击References.
向下滚动直到找到Microsoft Scripting Runtime并勾选它.
将文件保存为Addin.xlam默认位置,该位置应为:
C:\Users\username\AppData\Roaming\Microsoft\AddIns
关闭此Excel实例
启动一个新实例并打开VBE(您现在应该看到 第二个VBA项目可用于工作簿.如果您没有打开选项卡,那么加载项并勾选名称旁边的框以打开它 - 保存,关闭,打开一个新的Excel实例)Addin.xlam Developer
添加新的标准模块
打开References,您应该只看到4个勾选(默认)
向下滚动并尝试查找Microsoft Scripting Dictionary- 它不存在!?
因此,这基本上意味着您无法添加对新VBA项目(Book1)的引用,因为您*.xlam已经在使用它
但
Scripting因为尝试你不能交叉使用库
Dim d as Dictionary
Run Code Online (Sandbox Code Playgroud)
在新创建Module1失败,因为它不识别Dictionary对象....
这是一个我从未意识到的已知错误或者我完全忽略了什么?任何解决方法?
有时,当我检查 excel 宏上的某些变量时,Outlook 会自行打开。这很烦人,因为我什至不使用 Outlook 也没有配置它。这里发生了什么?
我正在使用 Office 2016。
编辑:我认为这与实际的宏没有任何关系,但无论如何,这里是:
Sub duplicateSheets()
Dim i As Integer
For i = 1 To 3
ThisWorkbook.Sheets("classes").Copy _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets("pivot").Copy _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
Outlook 在我检查时打开ThisWorkbook.Sheets("classes")。
当我的同事编写一个包含Selection引用的宏时,出于某种原因,它将单词更改Selection为小写s并停止工作。
例子:
Selection.Copy
Run Code Online (Sandbox Code Playgroud)
更改为
selection.Copy
Run Code Online (Sandbox Code Playgroud)
有人可以告知发生了什么吗?我猜他在某处的设置,因为他以前没有写过任何宏。
我正在尝试开发一个'自动运行'宏来确定VBE是否打开(不一定是焦点窗口,只是打开).如果这是真的那么......采取一些行动.
如果这个宏连接到CommandButton它可以工作,但我不能让它在ThisWorkbook中的任何地方运行:
Sub CloseVBE()
'use the MainWindow Property which represents
' the main window of the Visual Basic Editor - open the code window in VBE,
' but not the Project Explorer if it was closed previously:
If Application.VBE.MainWindow.Visible = True Then
MsgBox ""
'close VBE window:
Application.VBE.MainWindow.Visible = False
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我得到了以下功能来做同样的事情,但我无法让它工作:
Option Explicit
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowText Lib …Run Code Online (Sandbox Code Playgroud) Microsoft Office更新到2016版本后我发现VBA界面是德语的。我怎样才能将其恢复为英文?
我的 Windows 10 设置设置为英语,本地设置首选项也全部为英国英语(日期、小数点等)。
我将 Office 首选项语言设置为英语。
我有一本昨天下午保存的工作簿,并且运行良好。我今天早上打开了它,但没有“找到”VBE 中的任何模块。从视觉上我可以看到他们都坐在那里。
当尝试打开这些模块中的任何一个来编辑代码时,窗口会变灰,如下所示。
当我尝试导出代码模块时,出现“找不到模块”错误。
有谁知道 a) 为什么会发生这种情况,以及 b) 我该如何解决这个问题?
我最初以为是我的 Excel 的实例,所以重新启动了 PC。
任何帮助表示赞赏!
我注意到 Excel VBA 有一个奇怪的行为。“项目”窗口显示一些无法删除且不属于有效工作表的孤立工作表对象(例如“Sheet16”)。看看这些孤儿,我可以看到它们包含原始工作表中的回调函数(例如“ShowCI”)。Excel 正在创建与工作表相关的新工作表对象(例如“Sheet161(ShowCI)”),但它没有仍位于孤立对象中的回调函数。我在网上看到了将内容导出到新工作簿中以解决该问题的建议,但这很烦人(尤其是在使用大量复杂的 VBA 和用户表单的文件上完成),并且并不能真正防止再次发生。
我很想避免这种情况,并知道这些腐败可能从何而来。那么是什么原因导致它们呢?
感谢您提供有用的建议;-)
问候
vbe ×10
vba ×9
excel ×7
excel-vba ×2
add-in ×1
assertions ×1
c# ×1
com ×1
com-interop ×1
corruption ×1
events ×1
excel-addins ×1
ms-office ×1
rubberduck ×1
selection ×1
unit-testing ×1