后期绑定Microsoft Windows公共控件(TreeView)对象

时间:2019-02-06 08:17:14

标签: excel vba

我已使用TreeView控件通过以下代码对我的Excel数据库实现了DragDrop功能:

Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim StrPath As String

StrPath = Data.Files(1)
'path saved in UserForm label named "FilePathLB"
FilePathLB = StrPath

End Sub

在我将文件分发到的大多数计算机上,它都能很好地工作,但是由于无法找到Microsoft,某些具有旧版MS Office的计算机在第一行(Private Sub ...)上引发错误Windows公共控件库。

我的问题:是否可以后期绑定此库,从而防止错误发生?

或者至少可以添加一个调试器以防止错误显示,例如整个Sub的On Error Resume Next之类的东西吗?我知道在这种情况下,DragDrop函数将不起作用,但是它比错误要好。

1 个答案:

答案 0 :(得分:0)

最后一个问题:

Sub ()...
On Error GoTo ErrorHandler
    'Your code
Exit Sub
ErrorHandler:
Msgbox "Could not load DragDrop function. Program execution has been terminated.", vbExclamation, "Error"
End Sub

如果愿意,也可以仅放下MsgBox。

编辑:

将不起作用,因为代码在第一行中断。 下面的代码支持我的评论。如果子宏中发生错误,则PassedSub变量将不会设置为True,从而指示错误。

Public PassedSub As Boolean
Sub test1()

On Error Resume Next

Call test2
If PassedSub = False Then GoTo ErrorHandler
On Error GoTo 0

Exit Sub
ErrorHandler:
MsgBox "Could not load DragDrop function. Program execution has been terminated.", vbExclamation, "Error"
End Sub

Sub test2()

Debug.Print 2 / 0
PassedSub = True
End Sub