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
EDIT 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 関数の詳細については、こちらをご覧ください。