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

Error Code 424 when trying to set a value based on a message box response

我一直在努力让它工作,但我没有看到它的问题。 我的表单名为 "Request_Order",Yes/No 复选框名为 "Processed"

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

你的语法有误。集合元素由元素名称(字符串)或偏移量(整数)标识。所以你需要这样做:

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

您遇到的错误是 VBA 运行时无法将您的语句解析为对象,因为您的代码表明有一个名为 Processed 的变量计算结果为字符串,并且该变量被分配了一个字符串值,该值是您集合中的控件之一的名称。因为那不是真的,你会得到这个错误。

需要删除'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