XL: "Invalid Procedure Call" with SendKeys Statement

ID: Q112864

The information in this article applies to:

SUMMARY

The error message "Run Time Error '5': Invalid Procedure Call" may be generated when you use the SendKeys statement in a Visual Basic procedure to send multiple spaces.

WORKAROUND

To work around this problem, use the Application.SendKeys statement in place of the SendKey statement, as demonstrated below:

Sub SendKeysTest()
    Application.SendKeys "{  20}" 'There are 20 spaces before the
    number 20
End Sub

Microsoft provides examples of Visual Basic for Applications procedures for illustration only, without warranty either expressed or implied, including, but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. The Visual Basic procedures in this article are provided 'as is' and Microsoft does not guarantee that they can be used in all situations. While Microsoft support professionals can help explain the functionality of a particular macro, they will not modify these examples to provide added functionality, nor will they help you construct macros to meet your specific needs. If you have limited programming experience, you may want to consult one of the Microsoft Solution Providers. Solution Providers offer a wide range of fee-based services, including creating custom macros. For more information about Microsoft Solution Providers, call Microsoft Customer Information Service at (800) 426-9400.

MORE INFORMATION

Steps to Reproduce Behavior

The SendKeys statement in Visual Basic, Applications Edition, sends one or more key commands to the active window as if the they were typed at the keyboard. To specify repeating keys in the SendKeys statement, the syntax used is "{key number}" (without the quotation marks). A space must be placed between key and number. For example, {LEFT 42} means press the LEFT ARROW key 42 times and {h 10} means press h 10 times.

The following example should send 20 spaces to the active window:

Sub SendKeysTest()
    SendKeys "{  20}" 'There are two spaces before the number 20
End Sub

However, if you run this procedure, your receive the error message "Run Time Error '5': Invalid Procedure Call."

Additional query words: 5.00 5.00c 7.00

Keywords          : kbprg 
Version           : 5.00 5.00c 7.00
Platform          : WINDOWS

Last Reviewed: May 17, 1999