ACC97: DoMenuItem Method Fails in a Modal Pop-up Form (182435)
The information in this article applies to:
This article was previously published under Q182435 Moderate: Requires basic macro, coding, and interoperability skills.
SYMPTOMS
When you use the DoMenuItem method in a form whose PopUp and Modal
properties are set to Yes, the action called by the DoMenuItem method may
fail silently or return the following error message:
The command or action <action> isn't available now.
NOTE: Some actions called by the DoMenuItem method also fail if you set the
PopUp property of a form to Yes, regardless of whether or not the Modal
Property is set to Yes.
This problem can occur when you use the Command Button Wizard to create a
button on a pop-up form, because the wizard generates a Visual Basic for
Applications procedure that uses the DoMenuItem method.
RESOLUTION
If you need to set the Modal and PopUp properties of a form to Yes, you can
replace the DoMenuItem method with the equivalent RunCommand method.
However, some DoMenuItem action commands do not have equivalent RunCommand
actions. For more information, search the Help Index for "DoMenuItem
action" and view the topic "DoMenuItem Action Commands Not Available
with the RunCommand Action."
The following steps demonstrate how to change actions of the DoMenuItem
method to the corresponding actions of the RunCommand method:
- Follow steps 1 through 12 in the "Steps to Reproduce Problem" section
later in this article.
- Open the frmDoMenuTest form in Design View.
- Right-click the Delete Record button; then click Build Event on the
shortcut menu. Note the Visual Basic for Applications code created by
the Command Bar wizard:
Private Sub Command10_Click()
On Error GoTo Err_Command10_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Command10_Click:
Exit Sub
Err_Command10_Click:
MsgBox Err.Description
Resume Exit_Command10_Click
End Sub
- Type an apostrophe (') at the beginning of the following lines
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
so that they appear as follows:
'DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
'DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
This changes the lines of code so that they become comments, which
are not executed.
- Immediately after the lines that you changed to comments in step 4,
type the following lines:
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdDeleteRecord
- Close the Module window and save the form.
- On the View menu, click Form View.
- Click the Delete Record button. Note that you are prompted to confirm
that you want to delete the record.
STATUS
Microsoft has confirmed this to be a problem in Microsoft Access 97.
REFERENCES
For more information about converting DoMenuItem actions to RunCommand
actions, search the Help Index for "DoMenuItem method."
Modification Type: | Major | Last Reviewed: | 10/20/2003 |
---|
Keywords: | kbbug kbpending KB182435 |
---|
|