编译错误VBA-我要覆盖它

时间:2018-08-17 13:23:23

标签: excel vba excel-vba compiler-errors

我阅读以下内容: Compile error Method or data member not found 但是,我不允许在工作计算机上下载任何内容。因此,我试图通过显示带有下拉日期的用户窗体来覆盖人们的错误,以供人们在计算机上没有日历日期选择器选项时使用。

有什么办法可以覆盖编译错误?我尝试了以下代码:

 Private Sub UserForm_Initialize()
    On Error GoTo EnterDateManually
        If IsDate(ActiveCell.Value) Then
            Me.MonthView1.Value = ActiveCell.Value
        End If
EnterDateManually:
    Enter_Date.Show
    End Sub

但是它仍然给我编译错误。编译错误突出显示了MonthView1,因为在这台计算机上,我删除了缺少的参考库,因为我在此计算机上没有该库,并且我确定其他用户也不会在其计算机上拥有它。

我知道当您遇到数字错误时,您可以覆盖它(尽管您应该先尝试修复它:-),但是似乎无法覆盖编译错误吗?还是... 谢谢您的帮助

1 个答案:

答案 0 :(得分:3)

Me.MonthView1在编译时不存在,因此MonthView1不是Me的成员-因此,找不到 Method或数据成员


On Error语句是可执行的:到它们开始运行时,代码早就已经被编译了-您不能使用该语句来处理编译错误。

编译错误表示您的代码无法编译:某处存在非法或格式错误的语句,指定了Option Explicit,未声明变量,...或被引用类型库丢失。

通过删除<MISSING>类型的库,您是在告诉VBA“该项目实际上并不需要此库”-如果 没有任何内容,一切都会很好在项目中 did 需要该库。

在大多数情况下,您可以后期绑定类型库,并在缺少该库时在运行时(而不是在编译时)炸毁-然后,可以使用On Error语句来处理它。 / p>

但是,您不能在设计时后期绑定需要显示在UserForm上的MSForms控件,因为VBA需要在 design上加载该控件时间,以呈现表单设计器。

拥有MSForms控件的唯一方法是在运行时加载该库,该控件显示何时可以加载其库,而何时不存在该库(我从未尝试过)?时间,并在运行时有条件地生成控件。现在,后期绑定的一个问题是您不能在编译时绑定事件处理程序,而VBA不允许您在运行时绑定事件处理程序,因此您的动态控件不能具有事件处理程序。但是我认为您仍然可以检查其状态,因此,如果您真的想要这样做,这可能是可行的。