访问表单模块中变量的公共和私有修饰符

时间:2009-11-09 13:53:08

标签: ms-access

我的访问项目中有一个表单模块。在模块的顶部,我声明一个如下变量:

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

3 个答案:

答案 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