Nathan,

The REAL problem is as I mentioned in using the quotes. And if the
intent was just to show a message, you could remove the IF statement
also. Look at the simple lines of code below.

Sub UsedShortCutKey()
    Application.OnKey "^+a", "'MainProcedure ""a""'"
    Application.OnKey "^+b", "'MainProcedure ""b""'"
End Sub

Sub MainProcedure(strLeter As String)
   MsgBox "Pressed " & Ucase(strLeter)
End Sub

Sam Mathai Chacko

On Sun, Jan 22, 2012 at 10:50 PM, NOORAIN ANSARI
<noorain.ans...@gmail.com> wrote:
> 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://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



-- 
Sam Mathai Chacko

-- 
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

Reply via email to