Dear Nathan,
Problem #1 is that your MainProcedure has strLeter as the parameter name, but you test for strLetra. strLetra would always be an empty string, So no output, making it appear MainProcedure never gets called. Quick Fix: change Sub MainProcedure(strLeter As String) to Sub MainProcedure(strLetra As String) Problem #2 - even if MainProcedure was getting called, you'd never know it because you don't display the contents of variable vprov anywhere, as with Msgbox vprov just after the End If Problem #3 - apparently, as I read it, .OnKey does not permit setting up to pass a parameter. The Help discussion of it says that you pass 2 parameters: the key sequence and then the name of the procedure to be called. Doesn't say anything about parameters. So after setup as you wrote it, it's trying to find a procedure named "MainProcedure(a)" and there is no such procedure. Try this code, and notice I've added another sub to let you easily reset the [Ctrl]+[Shift]+{key} sequences back to their defaults when you want to. Sub UsedShortCutKey() Application.OnKey "^+a", "SendAn_A" Application.OnKey "^+e", "SendAn_E" Application.OnKey "^+f", "SendAn_F" End Sub Sub SendAn_A() 'after running UsedShortCutKey process: 'shortcut [Ctrl]+[Shift]+[A] MainProcedure "a" End Sub Sub SendAn_E() 'after running UsedShortCutKey process: 'shortcut [Ctrl]+[Shift]+[E] MainProcedure "e" End Sub Sub SendAn_F() 'after running UsedShortCutKey process: 'shortcut [Ctrl]+[Shift]+[F] MainProcedure "f" End Sub Sub MainProcedure(strLetra As String) Dim vProv As String If strLetra = "a" Then vProv = "Pressed A" ElseIf strLetra = "e" Then vProv = "Pressed E" ElseIf strLetra = "f" Then vProv = "Pressed F" End If MsgBox Chr$(34) & vProv & Chr$(34) End Sub Sub resetShortcuts() 'resets the 3 shortcut keystroke sequences to their defaults Application.OnKey "^+a" Application.OnKey "^+e" Application.OnKey "^+f" End Sub On Sat, Jan 21, 2012 at 4:04 PM, alogon <nat...@sefaz.ba.gov.br> wrote: > Hello Excel community. > > I created the sub UsedShortCutKey to run when I open a workbook. This > sub was made to call the sub MainProcedure (strLetter as string) when > someone presses Ctrl+Shift+a. But when someone presses these keys, it > doesn’t happen. Instead, Excel warns saying: > > You can not run the macro 'MainProcedure ("a")'. Maybe it’s not > available in thisworkbook or all macros are disabled. > > I know that this Excel warning is completely wrong. So this is not the > real problem. > > After this Excel warnning, the sub MainProcedure disappears from the > macros list and debugging this sub MainProcedure is no more allowed. > > So what is going on? > > Best regards > > Note: > 1. See codes below. > 2. If I define MainProcedure without arguments everything work very > well, ie, the sub MainProcedure is called normally. > > > ----------------------------------------------------------------------------------------------------------------- > Sub UsedShortCutKey() > Application.OnKey "^+a", "MainProcedure(" & Chr(34) & "a" & Chr(34) & > ")" > End Sub > > Sub MainProcedure (strLeter As String) > If strLetra = "a" Then > vprov = "Pressed A" > ElseIf strLetra = "e" Then > vprov = "Pressed E" > ElseIf strLetra = "f" Then > vprov = "Pressed F" > End If > End Sub > > -- > FORUM RULES (986+ members already BANNED for violation) > > 1) Use concise, accurate thread titles. Poor thread titles, like Please > Help, Urgent, Need Help, Formula Problem, Code Problem, and Need Advice > will not get quick attention or may not be answered. > > 2) Don't post a question in the thread of another member. > > 3) Don't post questions regarding breaking or bypassing any security > measure. > > 4) Acknowledge the responses you receive, good or bad. > > 5) Cross-promotion of, or links to, forums competitive to this forum in > signatures are prohibited. > > NOTE : Don't ever post personal or confidential data in a workbook. Forum > owners and members are not responsible for any loss. > > > ------------------------------------------------------------------------------------------------------ > To post to this group, send email to excel-macros@googlegroups.com > -- Thanks & regards, Noorain Ansari *http://excelmacroworld.blogspot.com/*<http://excelmacroworld.blogspot.com/> *http://noorain-ansari.blogspot.com/* <http://noorain-ansari.blogspot.com/> -- FORUM RULES (986+ members already BANNED for violation) 1) Use concise, accurate thread titles. Poor thread titles, like Please Help, Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get quick attention or may not be answered. 2) Don't post a question in the thread of another member. 3) Don't post questions regarding breaking or bypassing any security measure. 4) Acknowledge the responses you receive, good or bad. 5) Cross-promotion of, or links to, forums competitive to this forum in signatures are prohibited. NOTE : Don't ever post personal or confidential data in a workbook. Forum owners and members are not responsible for any loss. ------------------------------------------------------------------------------------------------------ To post to this group, send email to excel-macros@googlegroups.com