Method 'MacroOptions' of object'_Application' failed Runtime Error 1004

E

EagleOne

Note to the Google Search Group

There are at least two explanations for the subject error message:

Most often it occurs when one places VBA code in the ThisWorkBook
module when it should be in the General Module

Also, if you have the same-named macro in two modules of the same
VBA project AND you then attempt to execute an "Application as
object" macro like:

With Application
.MacroOptions Macro:="PswdAdd", Description:="Passwords Add", _
ShortcutKey:="A"
End With

' This will fail if you have a copy of the "PswdAdd" macro in
' another module in the same VBA application i.e. workbook.

EagleOne
 
Joined
Nov 25, 2010
Messages
6
Reaction score
0
There is another scenario when this can happen:

If the assigned-macro is in a different workbook than active workbook at the time of assignment, you'll get an error.

Eg, If MyWorkbook contains the assigned macro, and if the keyboard shortcut is assigned during the MyWorkbook Deactivate event (in ThisWorkbook module), then the active workbook will NOT be MyWorkbook.

Ie, the active workbook will not be the workbook containing assigned macro.

Solution: in the assignment, qualify the macro name with the workbook name. Eg:

Code:
Application.MacroOptions Macro:="'MyWorkbook.xlsb'!SpecialMacro", Description:="", ShortcutKey:="M"

PS, minor refinement of OP:

You CAN place the assigned macro into the ThisWorkbook module (or any worksheet module). But, for it to work, you must:

-make the assigned macro public (yes, you can put Public procedures in ThisWorkbook module), and
-qualify the assignment with the module name. Eg:

Code:
Application.MacroOptions Macro:="ThisWorkbook.SpecialMacro", ShortcutKey:="M"

PPS, you might wonder, "why would someone assign a macro when the workbook is being DE-activated?"
Answer: if you're UN-assigning the macro. Eg:

Code:
Application.MacroOptions Macro:="'MyWorkbook.xlsb'!SpecialMacro", Description:="", ShortcutKey:=""
 
Last edited:

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top