Chapter 41, “Creating UserForms,” presented an introduction to UserForms. If you like the idea of using dialog box controls but you don't like the idea of creating a custom dialog box, this chapter is for you. It explains how to enhance your worksheet with a variety of interactive controls, such as buttons, list boxes, and option buttons.
The main reason to use controls on a worksheet is to make it easier for the user to provide input. For example, if you create a model that uses one or more input cells, you can create controls to allow the user to select values for the input cells.
Adding controls to a worksheet requires much less effort than creating a dialog box. In addition, you may not have to create any macros because you can link a control to a worksheet cell. For example, if you insert a CheckBox control on a worksheet, you can link it to a particular cell. When the CheckBox is checked, the linked cell displays TRUE. When the CheckBox is not checked, the linked cell displays FALSE.
Figure 42.1 shows an example that uses three types of controls: a Checkbox, two sets of OptionButtons, and a ScrollBar. The user's selections are used to display a loan amortization schedule on another worksheet. The workbook is interactive, but it uses no macros.
Adding controls to a worksheet can be a bit confusing because Excel offers two different sets of controls, both of which you access by choosing Developer ➪ Controls ➪ Insert:
Figure 42.2 shows the controls that appear when you choose Developer ➪ Controls ➪ Insert. When you move your mouse pointer over a control, Excel displays a ScreenTip that identifies the control.
To add to the confusion, many controls are available from both sources. For example, a control named ListBox is listed in both Form controls and ActiveX controls. However, they're two entirely different controls. In general, Form controls are easier to use, but ActiveX controls provide more flexibility.
Table 42.1 describes the ActiveX controls.
TABLE 42.1 ActiveX Controls
Button | What It Does |
---|---|
Command Button | Inserts a CommandButton control (a clickable button). |
Combo Box | Inserts a ComboBox control (a drop-down list). |
Check Box | Inserts a CheckBox control (to control Boolean options). |
List Box | Inserts a ListBox control (to allow the user to select an item from a list). |
Text Box | Inserts a TextBox control (to allow the user to type text). |
Scroll Bar | Inserts a ScrollBar control (to specify a value by dragging a bar). |
Spin Button | Inserts a SpinButton control (to increment a value by clicking up or down). |
Option Button | Inserts an OptionButton control (to allow a user to select from multiple options). |
Label | Inserts a Label control (to display text). |
Image | Inserts an Image control (to display an image). |
Toggle Button | Inserts a ToggleButton control (to control Boolean options). |
More Controls | Displays a list of other ActiveX controls that are installed on your system. Not all of these controls work with Excel. |
Adding ActiveX controls in a worksheet is easy, but you need to learn a few basic facts about how to use them.
To add a control to a worksheet, choose Developer ➪ Controls ➪ Insert. From the Insert drop-down list, click the control you want to use and then drag in the worksheet to create the control. You don't need to be too concerned about the exact size or position of the control because you can modify those properties at any time.
When you add a control to a worksheet, Excel goes into Design mode. In this mode, you can adjust the properties of any controls on your worksheet, add or edit the macro for the control, or change the control's size or position.
When Excel is in Design mode, the controls aren't enabled. To test the controls, you must exit Design mode by clicking the Design Mode button. When you're working with controls, you'll probably need to switch in and out of Design mode frequently.
Every control that you add has various properties that determine how it looks and behaves. You can adjust these properties only when Excel is in Design mode. When you add a control to a worksheet, Excel enters Design mode automatically. If you need to change a control after you exit Design mode, click the Design Mode button in the Controls group of the Developer tab.
To change the properties for a control, follow these steps:
The manner in which you change a property depends on the property. Some properties display a drop-down list from which you can select from a list of options. Others (such as Font) provide a button that displays a dialog box when clicked. Other properties require you to type the property value. When you change a property, the change takes effect immediately.
The Properties window has two tabs. The Alphabetic tab displays the properties in alphabetical order. The Categorized tab displays the properties by category. Both tabs show the same properties; only the order is different.
Each control has its own unique set of properties. However, many controls share properties. This section describes some properties that are common to all or many controls, as set forth in Table 42.2.
TABLE 42.2 Properties Shared by Multiple Controls
Property | Description |
---|---|
AutoSize | If True, the control resizes itself automatically based on the text in its caption. |
BackColor | The background color of the control. |
BackStyle | The style of the background (either transparent or opaque). |
Caption | The text that appears on the control. |
Left and Top | Values that determine the control's position. |
LinkedCell | A worksheet cell that contains the current value of a control. |
ListFillRange | A worksheet range that contains items displayed in a ListBox or ComboBox control. |
Name | The name of the control. When you add a control, Excel assigns it a name based on the control type. You can change the name to any valid name. However, each control's name must be unique on the worksheet. |
Picture | Enables you to specify a graphics image to display. |
Value | The control's value. |
Visible | If False, the control is hidden. |
Width and Height | Values that determine the control's size. |
Often, you can use ActiveX controls in a worksheet without using macros. Many controls have a LinkedCell property, which specifies a worksheet cell that is linked to the control.
For example, you may add a SpinButton control and specify cell B1 as its LinkedCell property. After you do so, cell B1 contains the value of the SpinButton, and clicking the SpinButton changes the value in cell B1. You can, of course, use the value contained in the linked cell in your formulas.
To create a macro for a control, you must use the Visual Basic Editor (VBE). The macros are stored in the code module for the sheet that contains the control. For example, if you place an ActiveX control on Sheet2, the VBA code for that control is stored in the Sheet2 code module. Each control can have a macro to handle any of its events. For example, a CommandButton control can have a macro for its Click event, its DblClick event, and various other events.
The control's name appears in the upper-left portion of the code window, and the event appears in the upper-right area. If you want to create a macro that executes when a different event occurs, select the event from the list in the upper-right area.
The following steps demonstrate how to insert a CommandButton and to create a simple macro that displays a message when the button is clicked:
MsgBox "Hello, it's " & Time
After you perform the preceding steps, when you click the CommandButton, the message box appears and displays the current time.
The following sections describe the ActiveX controls that are available for use in your worksheets.
A CheckBox control is useful for getting a binary choice: yes or no, true or false, on or off, and so on. The following is a description of the most useful properties of a CheckBox control:
A ComboBox control is a combination of a TextBox and a ListBox. It acts as a TextBox because the user can type in it just like a TextBox, even if what they type isn't on the list. It acts as a ListBox because when you click its drop-down arrow, a list of available items appears.
Figure 42.5 shows a ComboBox control that uses the range D1:D12 for the ListFillRange and cell A1 for the LinkedCell.
The following is a description of the most useful properties of a ComboBox control:
A CommandButton control is used to execute a macro. When a CommandButton is clicked, it executes an event procedure with a name that consists of the CommandButton name, an underscore, and the word Click. For example, if a CommandButton is named MyButton, clicking it executes the macro named MyButton_Click. This macro is stored in the code module for the sheet that contains the CommandButton.
An Image control is used to display an image. These are the most useful properties of an Image control:
A Label control simply displays text. Like on a UserForm, it's used to describe other controls. You can also use its Click event to activate other controls with an accelerator key.
A ListBox control presents a list of items, and the user can select an item (or multiple items). It's similar to a ComboBox. The main difference is that a ListBox doesn't require you to click a drop-down arrow to display more than one item at a time.
The following is a description of the most useful properties of a ListBox control:
OptionButton controls are useful when the user needs to select from a small number of items. OptionButton controls are always used in groups of at least two.
The following are the most useful properties of an OptionButton control:
A ScrollBar control is useful for specifying a cell value. Figure 42.6 shows a worksheet with three ScrollBar controls. These ScrollBar controls are used to change the color in the rectangle shape. The value of the ScrollBar control determines the red, green, or blue component of the rectangle's color. This example uses a few simple macros to change the colors.
The following are the most useful properties of a ScrollBar control:
The ScrollBar control is most useful for selecting a value that extends across a wide range of possible values.
A SpinButton control lets the user select a value by clicking the control, which has two arrows (one to increase the value and the other to decrease the value). A SpinButton can display either horizontally or vertically.
The following are the most useful properties of a SpinButton control:
On the surface, a TextBox control may not seem useful. After all, it simply contains text—you can usually use worksheet cells to get text input. In fact, TextBox controls are useful not so much for input control as for output control. Because a TextBox can have scrollbars, you can use a TextBox to display a great deal of information in a small area.
Figure 42.7 shows a TextBox control that contains Lincoln's Gettysburg Address. Notice the vertical scrollbar displayed using the ScrollBars property.
The following are the most useful properties of a TextBox control:
A ToggleButton control has two states: on and off. Clicking the button toggles between these two states, and the button changes its appearance to indicate its current state. Its value is either TRUE (pressed) or FALSE (not pressed). You can often use a ToggleButton in place of a CheckBox control.