我的访问项目中有一个表单模块。在模块的顶部,我声明一个如下变量:
option explicit
private id_foo as long
我想通过在其上使用private
访问修饰符来明确说明我需要表单模块中的变量。
现在,在同一个表单模块中,我有一个需要知道和/或修改id_foo
的值的函数:
function bar() as long
call do_something(me.id_foo)
end function
然而,这不起作用。但是当我将私有修饰符更改为像
这样的公共修饰符时public id_foo as long
它确实有用。
这种行为让我觉得奇怪或不直观,事实上,如果我必须将变量声明为公共,以便在同一个表单模块中使用它,我无法看到public和private的含义。< / p>
所以,我是否忽视了一些明显的东西,或者这是怎么回事?
谢谢/ Rene
答案 0 :(得分:2)
在id_foo前面没有“我”的情况下尝试:
function bar() as long
call do_something(id_foo)
end function
答案 1 :(得分:1)
如果您使用me关键字,则只能看到公共成员,属性(还有表单和VBA)。
答案 2 :(得分:0)
表单及其模块实际上表示一个类对象。您还可以创建(instanciate)该类对象的多个实例。
因此,您声明为public的任何变量都将成为该类对象的公共属性。请注意,声明为public的表单代码模块中的任何函数都将成为该类对象的公共方法。当你输入“我”时,所有这些属性和方法都会出现在英特尔中。关键字。
如果将变量声明为private,则该变量(或函数)不会作为表单的公共属性(变量)或公共方法(函数)公开。
因此,简单的解决方案就是在代码中放弃使用me关键字,并且代码运行得很好。
因此声明为公共或私人确实会产生影响。事实上,“私人”是默认的。
因此,public会将变量和/或函数公开为该表单的属性和方法,这是一个类对象(请注意,您可以同时加载同一表单的多个实例)。
如果您将内容声明为私有(默认情况下,因此您无需为变量或函数执行任何操作),那么您仍然可以在该表单代码模块中的任何代码例程中使用该值,但它不会公开作为财产/方法暴露,因此你不能使用我。
因此,如果您删除了我的使用,您的代码将正常工作。只需转到:
function bar() as long
call do_something(id_foo)
end function