Excel VBA工具仪表控制错误

Excel VBA工具仪表控制错误,vba,excel,Vba,Excel,我想用VBA来控制光学仪器。首先,我在这个工作簿上写下所有的对象&变量,module1上的控制函数,userform1.Public对象上的UI控制,如下所示。但我发现objca不能正常工作。所以我想这可能是在工作簿module1和userform1之间传递对象的问题 Public objCa200 As Ca200 Public objca As Ca Public objprobe As probe Public objmemory As Memoryter 经过多次尝试,它可以正常使

我想用VBA来控制光学仪器。首先,我在这个工作簿上写下所有的对象&变量,module1上的控制函数,userform1.Public对象上的UI控制,如下所示。但我发现objca不能正常工作。所以我想这可能是在工作簿module1和userform1之间传递对象的问题

Public objCa200 As Ca200
Public objca As Ca 
Public objprobe As probe
Public objmemory As Memoryter 
经过多次尝试,它可以正常使用module1上的声明对象、module1上的控制函数、userform1上的UI控件。
但我还是不明白为什么???如果在此工作簿上声明pubic对象,则任何用户窗体或模块都可以调用该对象吗

虽然它不是很明显,但是Excel对象部分通常用于Excel事件,而不是一般的子例程和函数。其中包括“ThisWorkbook”对象;这适用于为整个工作簿(也称为Excel文件)触发的Excel事件

您可以将常规函数和子例程放入Excel对象中,但必须使用对象名称[例如Sheet1.functionInSheet1(…)]作为调用该函数或子函数的前缀。但是,将多个工作表需要使用的子例程或函数放在一个命名工作表中是没有意义的;这将使您在以后的某个日期感到困惑,或者使其他需要使用或修改您的Excel文件的人感到困惑

模块通常是所有辅助函数和子例程所在的部分。它包括可由单元格公式调用的函数,以及可由UI控件调用的子例程。Excel文件中的所有图纸和图表都可以访问这些函数和子例程。假设您只定义了一个模块,并且子例程/函数的名称没有重复,则不必为这些子例程/函数的任何调用添加前缀

此范围界定独立于公共/私人指示符

下面的链接中有一篇关于范围界定的非常详细的文章。向下滚动至“在相应模块中放置宏/子过程”部分:

您可以通过在变量/函数前面加上模块名称来调用模块函数和变量。例如:
Module1.Ca200
我认为VB(或VB.NET)比VBA更好。VBA是为使用MS Office产品而定制的,在VBA中,您可能需要做的一些事情可能要困难得多