Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问vba将变量传递到代码中_Vba_Ms Access 2007 - Fatal编程技术网

访问vba将变量传递到代码中

访问vba将变量传递到代码中,vba,ms-access-2007,Vba,Ms Access 2007,我在Access 07中试图将一个变量传递给一行代码。其目的是生成一个字段名数组,然后在数组上循环,对每个字段执行相同的操作。我简化了它,以避免数组或循环的任何潜在问题。 在我熟悉的任何其他语言中,它都非常简单,但我似乎无法用VB格式化它 Me.FeildName.Locked = True 将是静态代码,我认为变量代码将如下所示: Dim Temp as String Temp="FieldName" Me.[Temp].Locked = True For i = LBound(strCo

我在Access 07中试图将一个变量传递给一行代码。其目的是生成一个字段名数组,然后在数组上循环,对每个字段执行相同的操作。我简化了它,以避免数组或循环的任何潜在问题。 在我熟悉的任何其他语言中,它都非常简单,但我似乎无法用VB格式化它

Me.FeildName.Locked = True
将是静态代码,我认为变量代码将如下所示:

Dim Temp as String
Temp="FieldName"
Me.[Temp].Locked = True
For i = LBound(strControlNames) To UBound(strControlNames)
    CallByName Forms![MyFormName].Controls(strControlNames(i)), "Locked", VbLet, "True"
Next
但它一直给我一个错误,说“找不到表达式中引用的字段”|”,所以它没有读取变量的值。
如何让它读取命令中的变量

或者,我尝试将字符串连接到一行代码中:

Dim CodeLine As String
Dim TestName As String
TestName = "FieldName"
CodeLine = "Me.[" & TestName & "].Locked = True"
这将创建一个看起来像函数代码的字符串,但我将如何运行它


谢谢

如果
Me
是一个表单,您需要

Temp = "FieldName"
Me.Controls(Temp).Locked = True

Dick Kusleika的答案是正确的,但为了完整起见,你也可以这样做:

Dim Temp as String
Temp="FieldName"
Me.[Temp].Locked = True
For i = LBound(strControlNames) To UBound(strControlNames)
    CallByName Forms![MyFormName].Controls(strControlNames(i)), "Locked", VbLet, "True"
Next

strControlNames将是包含控件名称的数组。

可能重复的“Controls()”。。。这就是我需要的!我知道有些术语我不知道。我试过“Fields()”和其他几个,但没有成功。非常感谢。这看起来与我的代码相似,但我想尝试一下这些差异,看看我是否能学到任何东西。“VbLet”是做什么的?我在书中找不到,甚至连网络搜索都找不到。Thanks@charles_m80:CallByName可以运行方法或设置属性值()。vbLet是一个常量,它告诉函数我们希望有问题的属性被锁定,在本例中,该属性被设置为True(例如,与vbGet相反,vbGet表示我们希望提取该值)。如果您在VB或VBA中进行过任何类编程,则Let/Get是设置/获取自定义类属性的方式。