尝试根据消息框响应设置值时出现错误代码424

时间:2018-09-04 01:21:11

标签: vba ms-access setvalue

我一直试图使它起作用,但是我看不到问题所在。 我的表单称为“ Request_Order”,“是/否”复选框称为“已处理”

Private Sub MarkProcessedOrig_Click()
Const cstrPrompt As String = _
    "Are you sure you want to mark this request as processed? Yes/No"

If MsgBox(cstrPrompt, vbQuestion + vbYesNo) = vbYes Then
    Request_Order.Controls(Processed).Value = True
Else: Cancel = True
End If
End Sub

2 个答案:

答案 0 :(得分:1)

您的语法错误。集合元素由元素名称(字符串)或offset(整数)标识。因此,您需要这样做:

Request_Order.Controls("Processed").Value = True

您得到的错误是VBA运行时无法将您的语句解析为对象,因为您的代码说存在一个名为Processed的变量,其结果为字符串,并且该变量为分配的字符串值,该字符串值是集合中控件之一的名称。由于那不是真的,您会收到此错误。

答案 1 :(得分:0)

需要删除“ Request_Order”,这不是必需的,删除后它将成功运行。

请尝试以下代码:

 Private Sub CommandButton1_Click()
        Const cstrPrompt As String = _
            "Aref'jei you sure you want to mark this request as processed? Yes/No"

        If MsgBox(cstrPrompt, vbQuestion + vbYesNo) = vbYes Then
            Controls("CheckBox1").Value = True
        Else: Cancel = True
        End If
        End Sub