我在 Access 2010 中的 VBA 脚本中有问题。
我有一个将字符串拆分为数组的功能。然后我想评估所有数组元素(字符串)。这些元素表示我想与变量“me”一起使用的表单名称。
这是我的代码:
Private Sub enable_rec(rec)
Dim r
r = Split(rec, ", ")
For Each rl In r
'rl = Me.Eval(rl)
MsgBox (rl)
Me!rl.Enabled = True
Me!rl.Locked = False
Next
End Sub
我也试过这个Me!eval(rl).enabled = True
。
我按照“Nicholas Post”的建议更新了代码,现在有了:
Private Sub enable_rec(rec)
Dim r
Dim ctrl As Control
r = Split(rec, ", ")
For Each rl In r
ctrl = Me.Controls
If Not ctrl Is Nothing Then
MsgBox (rl)
ctrl.Enabled = True
ctrl.Locked = False
End If
Next
End Sub
我明白了run-time error '91': Object Variable or With Block not Set
编辑 2 -自己解决:现在可以使用以下代码
Private Sub enable_rec(rec)
Dim arr As Variant, ctrl As Control
arr = Split(rec, ", ")
For Each ctrl In Me.Controls
'MsgBox (ctrl.Name) 'rl.ControlType
If Not ctrl Is Nothing Then
If IsInArrayLoop(ctrl.Name, arr) Then
ctrl.Enabled = True
ctrl.Locked = False
End If
End If
Next
End Sub
有关函数 IsInArrayLoop 的更多信息在这里。