EXCEL USERFORM MACROS

Create an Excel UserForm

To make it easier for users to enter data in a workbook, you can create an Excel UserForm.

In this example, a parts inventory is stored on a hidden worksheet. Users enter data by opening the Excel UserForm, filling in the boxes, and clicking a button.

Set up the worksheet

In this example, a parts inventory is stored on a hidden worksheet.

Excel UserForm 01

  1. Open a new workbook
  2. Double-click on the sheet tab for Sheet1
  3. Type: PartsData
  4. Press the Enter key
  5. In cells A1:D1, enter the headings for the parts inventory database, as shown at right.
  6. Choose File | Save, and save the workbook. In this example, the file has been named PartsLocDB.xls.

A
B
C
D
1
PartID
Location
Date
Qty
2
12345
Store 001
3/3/2004
87
3
       
 

Create an Excel UserForm

Excel UserForms are created in the Visual Basic Editor.

  1. To open the Visual Basic Editor, hold the Alt key, and press the F11 key
  2. Choose View | Project Explorer, to see a list of projects. (Usually, this is displayed at the left side of the VBE window.)
  3. In the Project Explorer, select the PartLocDB project.
  4. From the menu bar, choose Insert | UserForm
  5. A blank UserForm appears, and the ToolBox should open. (If the ToolBox doesn't appear, choose View | Toolbox)  

Insert Excel UserForm

Name the Excel UserForm

  1. To open the Properties window, press the F4 key
  2. In the Properties window, double-click on the Name -- UserForm1, at the top right of the window.
  3. Type:  frmPartLoc
    and press the Enter key
  4. The form name will change in the Project Explorer, but the form still shows UserForm1 in its title bar.
  5. In the Properties window, double-click on the Caption property-- UserForm1.
  6. Type:  Parts Inventory
    and press the Enter key
  7. The title bar will display the new caption. 

Name Excel UserForm

Add a Textbox to the Excel UserForm

The objects on an Excel UserForm, such as buttons, and textboxes, are called controls. To allow users to enter data, you can add textbox controls to the form, with label controls to describe them.

  1. In the Toolbox, click on the TextBox button.
  2. On the UserForm, click near the top centre, to add a standard sized textbox.
  3. With the new textbox selected, double-click on the Name property in the Properties window.
  4. Type:  txtPart
    and press the Enter key
  5. Click on an empty part of the UserForm, to select the UserForm and to display the Toolbox. 

Excel UserForm Textbox

Excel UserForm Textbox 01

Add a Label to the Excel UserForm

To help users enter data, you can add label controls to describe the textboxes, or to display instructions.

  1. In the Toolbox, click on the Label button.
  2. On the UserForm, click to the left of the textbox, to add a standard sized label.
  3. With the new label selected, double-click on the Caption property in the Properties window.
  4. Type:  Part
    and press the Enter key
  5. If necessary, you can resize the label, so it doesn't cover the textbox -- point to the handle on its right border, and drag to the left.
  6. Click on an empty part of the UserForm, to select the UserForm and to display the Toolbox. 

Label Excel UserForm

Resize label Excel UserForm

Add remaining textboxes and labels

Repeat the above steps to add:

  • a textbox named txtLoc, with a label Location
  • a textbox named txtDate, with a label Date
  • a textbox named txtQty, with a label Quantity 
If the textboxes are not aligned, you can align them:
  1. Click on the first textbox
  2. Hold the Ctrl key, and click on the remaining textboxes
  3. Choose Format | Align | Lefts
  4. Click on an empty part of the UserForm, to select the UserForm and to display the Toolbox.   

Excel UserFormTextboxes

Add Buttons to the Excel UserForm

To allow users to perform an action, you can add command buttons to the user form. This form has a button to add data to the database, and a button to close the form.

  1. In the Toolbox, click on the CommandButton button.
  2. On the UserForm, click at the bottom left, to add a standard sized CommandButton.
  3. With the new CommandButton selected, double-click on the Name property in the Properties window.
  4. Type:  cmdAdd
    and press the Enter key
  5. With the new CommandButton selected, double-click on the Caption property in the Properties window.
  6. Type:  Add this part
    and press the Enter key
  7. Click on an empty part of the Excel UserForm, to select the UserForm and to display the Toolbox.
  8. Repeat the above steps to add a CommandButton named cmdClose, with a label Close
  9. If required, you can reposition the buttons by dragging them to a new location on the UserForm. 

CommandButton Excel UserForm

Excel UserForm Move CommandButtons

Add code to the buttons

To make the Excel UserForm buttons perform an action, you create code that runs when the button is clicked.

Add code to the cmdAdd button

  1. Select the cmdAdd button
  2. On the Menu bar, choose View | Code. 
  3. This creates a procedure, where you can add your code.
  4. Where the cursor is flashing, enter the following code:
Private Sub cmdAdd_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("PartsData")

'find first empty row in database
iRow = ws.Cells(Rows.Count, 1) _
  .End(xlUp).Offset(1, 0).Row

'check for a part number
If Trim(Me.txtPart.Value) = "" Then
  Me.txtPart.SetFocus
  MsgBox "Please enter a part number"
  Exit Sub
End If

'copy the data to the database
ws.Cells(iRow, 1).Value = Me.txtPart.Value
ws.Cells(iRow, 2).Value = Me.txtLoc.Value
ws.Cells(iRow, 3).Value = Me.txtDate.Value
ws.Cells(iRow, 4).Value = Me.txtQty.Value

'clear the data
Me.txtPart.Value = ""
Me.txtLoc.Value = ""
Me.txtDate.Value = ""
Me.txtQty.Value = ""
Me.txtPart.SetFocus

End Sub
  1. On the Menu bar, choose View | Object, to return to the UserForm.

Add Code Excel UserForm

Add code to the cmdClose button

  1. Select the cmdClose button
  2. On the Menu bar, choose View | Code. 
  3. Where the cursor is flashing, enter the following code:
Private Sub cmdClose_Click()
  Unload Me
End Sub
  1. On the Menu bar, choose View | Object, to return to the UserForm.

To allow users to close the form by pressing the Esc key:

  1. Select the cmdClose button
  2. In the Properties window, change the Cancel property to True  

Test the Excel UserForm

To test the form, you can run it from the VBE.

  1. Click on an empty part of the UserForm, to select the UserForm and to display the Toolbox.
  2. On the Menu bar, choose Run | Run Sub/UserForm.
  3. In the Part textbox, type: 12345
  4. Press the tab key to move to the next textbox.
  5. When the textboxes have been filled in, click the 'Add this part' button.
  6. Click the 'Close form' button, to return to the VBE.

If the tab order was incorrect (e.g. when you pressed the tab key you moved to the wrong textbox or button), you can change it

  1. Right-click on an empty part of the UserForm
  2. Choose Tab Order
  3. Select a control in the list, and click the Move Up or Move Down button
  4. Click OK 

Excel UserForm use

Create a Button to open the Excel UserForm

To make it easy for users to open the UserForm, you can add a button to a worksheet.

  1. Switch to Excel, and activate the PartLocDB.xls workbook
  2. Double-click on the sheet tab for Sheet2
  3. Type: Parts Data Entry
  4. Press the Enter key
  5. On the Drawing toolbar, click on the Rectangle tool
  6. In the centre of the worksheet, draw a rectangle, and format as desired.
  7. With the rectangle selected, type:
    Click here to add Part Information
  8. Right-click on the rectangle border, and choose 'Assign Macro'
  9. Click the New button
  10. Where the cursor is flashing, type: frmPartLoc.Show
    Note:
    If you are using Excel 2000, or later version, and want users to be able to do other things while the form is open, change the above line to:
    frmPartLoc.Show False 

To prevent users from closing the form by clicking the X button:

  1. Right-click on an empty part of the UserForm
  2. Choose View | Code
  3. Scroll to the bottom of the existing code, and enter the following code:
Private Sub UserForm_QueryClose(Cancel As Integer, _
  CloseMode As Integer)
  If CloseMode = vbFormControlMenu Then
    Cancel = True
    MsgBox "Please use the button!"
  End If
End Sub
  1. On the Menu bar, choose View | Object, to return to the UserForm.

Open Excel UserForm

Finish the Workbook

To finish the workbook, you can hide the sheet that contains the database.

  1. Switch to Excel, and activate the PartLocDB.xls workbook
  2. Select the PartsData sheet.
  3. From the menu bar, choose Format | Sheet | Hide
  4. Delete all other sheets, except Parts Data Entry
  5. Click the Click here to add Part Information button, and enter your data into the database. 
  6. Close and save the workbook

Download the sample Excel UserForm file
Download the sample file with an enhanced Excel UserForm, with comboboxes

Download Sample Excel file