Vba TreeView1_NodeCheck编译错误:过程声明与具有相同名称的事件或过程的描述不匹配

Vba TreeView1_NodeCheck编译错误:过程声明与具有相同名称的事件或过程的描述不匹配,vba,treeview,Vba,Treeview,如果父节点已选中,我将尝试选中/取消选中子节点和子节点。此外,如果检查了其中一个子节点,则会检查父节点 我的代码在我的电脑里工作 在另一台电脑上显示 “编译错误:过程声明与具有相同名称的事件或过程的描述不匹配” 错误发生在过程声明本身上 代码如下: Private子树eview1_NodeCheck(ByVal节点作为mscomctlib.Node) Dim iChild,yChild为整数 Dim nodX,nodY作为节点 如果Node.Children为0,则 '如果存在子节点,则节点是父

如果父节点已选中,我将尝试选中/取消选中子节点和子节点。此外,如果检查了其中一个子节点,则会检查父节点

我的代码在我的电脑里工作

在另一台电脑上显示

“编译错误:过程声明与具有相同名称的事件或过程的描述不匹配”

错误发生在过程声明本身上

代码如下:

Private子树eview1_NodeCheck(ByVal节点作为mscomctlib.Node)
Dim iChild,yChild为整数
Dim nodX,nodY作为节点
如果Node.Children为0,则
'如果存在子节点,则节点是父节点
设置nodX=Node.Child
对于iChild=1到Node.Children
nodX.Checked=Node.Checked
如果nodX.Children为0,则
'如果存在子节点,则节点是具有子节点的子节点
设置nodY=nodX.Child
对于yChild=1到nodX.child
nodY.Checked=nodX.Checked
设置nodY=nodY.Next
'如果选中子子项,则应选中子项nodX
'执行此循环以检查是否检查了任何子项,然后检查子项
下一个
如果结束
'如果选中了子节点,则应选中作为父节点的节点
'执行此循环以检查是否选中了任何子项,然后检查父项
设置nodX=nodX.Next
下一个
其他的
如果不是Node.Parent则为Nothing
'如果节点的父节点确实存在,则它是一个子节点
如果是节点,则选中
'检查父节点,如果选中当前节点,则跳过循环。
Node.Parent.Checked=True
其他的
Node.Parent.Checked=False
'如果未选中作为子节点的节点,则取消选中父节点
'但是,继续下面的循环,查看是否检查了其他子项。如果是,请检查家长
设置nodX=Node.Parent.Child
直到nodX什么都不是
如果nodX.选中,则
'至少检查了一个子节点,因此请检查父节点并退出循环
Node.Parent.Checked=True
退出Do
如果结束
设置nodX=nodX.Next
环
如果结束
如果结束
如果结束
端接头

我从VBA的下拉框中选择了事件。

我不熟悉VBA在这里一直使用VB6,但我猜您的另一台计算机正在使用早期版本的Windows Common Controls OCX。(comctl32.ocx)。较新版本是MsCommCtl.ocx,它确实使用代码中的过程声明,而较早版本使用:Private Sub TVw_NodeCheck(ByVal Node As Node)。-找出区别!经过深思熟虑,我认为旧版本的控件无论如何都不支持复选框@谢谢你的回复!我试着在另一台PC上调试,只是用下拉框重写了事件,它基本上只是重新编写了相同的事件处理程序,然后就成功了!这是否意味着另一台计算机也使用MsCommCtl.ocx?但是,当我现在将此文件发送到它以前工作的原始PC时,相同的错误也传递到了这台计算机上。。我真的不知道是什么原因造成的:(听起来好像你在另一台机器上有正确的OCX,但我对VBA不够熟悉,猜不出问题出在哪里。我唯一能建议的是,你将每台机器上的代码保存为文本,并在可能的情况下对它们进行比较。我不熟悉VBA一直在这里使用VB6,但我猜你的另一台计算机使用的是早期版本的Windows Common Controls OCX。(comctl32.OCX)。较新版本是MsCommCtl.OCX,它确实使用代码中的过程声明,而早期版本使用的是:Private Sub TVw_NodeCheck(ByVal节点作为节点)-找出区别!经过反思,我认为旧版本的控件无论如何都不支持复选框!@johneson谢谢你的回复!我试着在另一台电脑上调试,只是用下拉框重写了事件,它基本上只是重新编写了相同的事件处理程序,然后就成功了!这是否意味着这是另一台电脑r计算机也使用MsCommCtl.ocx?但当我现在将此文件发送到它以前工作的原始PC时,相同的错误现在传递到了这台计算机上。我真的不知道是什么原因导致了这种情况:(听起来好像你在另一台机器上有正确的OCX,但我对VBA不太熟悉,猜不出问题出在哪里。我唯一能建议的是将每台机器上的代码保存为文本,并在可能的情况下对它们进行比较。