How to use SendKeys statement in VBA?

The SendKeys statement in VBA (Visual Basic for Applications) is used to send keystrokes to the active window as if they were typed at the keyboard. This feature can be quite powerful for automating tasks, but it should be used cautiously because it can lead to unpredictable results if the active window or application changes unexpectedly. Here’s how to use the SendKeys statement:

Basic Syntax

VBA
SendKeys string[, wait]
  • string: The string specifying the keystrokes to be sent.
  • wait (optional): A Boolean value specifying the wait mode.
  • If True, VBA waits for the keys to be processed before continuing.
  • If False or omitted, the keys are sent, and VBA continues without waiting.

Example Usage

To send the “Hello” followed by an Enter key:
VBA
SendKeys "Hello{ENTER}"

Special Characters

Certain keystrokes have special representations:
  • {ENTER}, {TAB}, {ESC} represent the Enter, Tab, and Escape keys, respectively.
  • {F1}, {F2}, …, {F16} represent function keys.
  • +, ^, %, and ~ represent Shift, Ctrl, Alt, and Enter keys. To use these characters literally, enclose them in braces, like {+} for the plus sign.

Combining Keys

To hold down Shift, Ctrl, or Alt while pressing another key, prefix the key with + (Shift), ^ (Ctrl), or % (Alt). For example, to send Ctrl+C (copy):
VBA
SendKeys "^C"

Using Wait

If you want to ensure that VBA waits until the keystrokes are processed, use the wait parameter:
VBA
SendKeys "Hello{ENTER}", True

Considerations and Warnings

  • SendKeys sends keystrokes to the currently active window, which might not be the window you intend, especially if other processes are running or if the user is interacting with the computer.
  • It’s generally not recommended for use in production environments because of its potential for unpredictable behavior.
  • Some applications might not process the keystrokes correctly, especially complex combinations.
  • SendKeys cannot send keystrokes to applications that are not designed to run in the foreground.

Alternative Methods

Whenever possible, use direct methods provided by the application’s object model instead of SendKeys. For example, in Excel, use methods like Range(“A1”).Value = “Hello” instead of sending keystrokes to enter data into a cell.
If you’re automating a task in another application, consider using automation interfaces or APIs if available. Given these considerations, use SendKeys with caution, and only when there is no better alternative available for automating a task.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project