master VBA dialog boxes

30 Sep, 2003 By: Barry Bowen

Drag and drop to build dialog boxes to gather data for your VBA routines.

One time-saving feature of VBA (Visual BASIC for Applications) is its ability to create forms and dialog boxes to gather data for your programs. Using AutoCAD, we'll look at how to code VBA controls for user-defined forms or dialog boxes by focusing on a specific control in each of the next few installments. This is a fast-track approach. Many VBA reference books are available, so we'll skip the basic details and get right to implementing a VBA project with a user interface. Although this column is designed as a starting point for newcomers to VBA, you should at least be familiar with the VBA IDE (integrated development environment) components for placing controls on a form and changing their properties.

To open AutoCAD's VBA IDE, select Tools | Macro | Visual Basic Editor. In the VB editor, select Insert | User Form to insert a blank form. Rename the form caption in the Properties window to Line1 Program.

Figure 1. TextBox control lets you enter a single line of text as input to a VBA routine.
This month we'll create a dialog box for input to create a line. We'll use the TextBox control to obtain the line's distance and angle. A TextBox control lets you edit or enter a single line of text. Figure 1 shows the size and placement of the controls.

Click the Textbox control in the toolbox and move your cursor over the form to place the distance input text box. Change the control name to Distance.

Click the TextBox control again to place the angle input box below the distance box. Change the control name to Angle.

Get the Code
Download the code for this and all articles in our Get the Code area. Look for file oct03.exe. You will need to register at the site (no charge).
Add a Label control for both the Distance and Angle Textbox controls.

Click the CommandButton control to add the OK and Cancel buttons as shown. Change the command button control's name to OK and Cancel and change the captions to reflect each button's use.

Now that you've created a dialog box, you're ready to write the code for the Line1 program. A TextBox gathers information from the program's user. The text label displays the type of information required. Command buttons execute the program or cancel and close the dialog box.

Double-click on the Cancel command button, and the code window appears, as shown in figure 2.

Figure 2. VBA code window shows all events for all controls on a form.

The code window shows all of the events for all the controls on the form. Type End in the Cancel_Click event for the Cancel button.

Private Sub Cancel_Click()
End Sub
Double-click UserForm1 in the Project window to return to the form. Double-click the OK command button and add the following code in the "OK_Click" event in the code window:

Private Sub OK_Click()
  'Hide the dialog for user input
  'Define the variables
  Dim StartPoint As Variant
  Dim EndPoint As Variant
  Dim myLine As AcadLine
  Dim dblAngle As Double
  'convert Angle string from textBox into radians
  dblAngle = ThisDrawing.Utility.AngleToReal(Angle, 
  'Prompt user for line starting point
  StartPoint = ThisDrawing.Utility.GetPoint(, vbCr 
      & "Line Start Point: ")
  'Find the end point of the line based on Distance 
      and Angle
  EndPoint = ThisDrawing.Utility.PolarPoint
      (StartPoint, dblAngle, Distance)
  'Create the line object
  Set myLine = ThisDrawing.ModelSpace.AddLine
      (StartPoint, EndPoint)
  'Update the drawing display
  'Display the dialog again
End Sub
The LINE1 program demonstrates the use of two Textboxes to gather input and two command buttons to control the dialog box and program execution.

Because of limited space, the program doesn't check the values entered. You should add this capability to your final program. If the values are incorrect, the focus should return to the TextBox with the invalid input. The first TextBox requests the distance for the line. A second TextBox lets you type the angle of the line. When you select OK, the prompt for the start point of the line appears. Once you select the start point, the program creates the line using the specified length and angle. The dialog box displays again for creation of another line until you select Cancel.

After you save the program, click the Run icon in the toolbar. The user interface appears in the AutoCAD window.

In the Distance text box, type in a value of 48. Press the key to move to the Angle text box and type 45. This represents a line 48" long at a 45

More News and Resources from Cadalyst Partners

For Mold Designers! Cadalyst has an area of our site focused on technologies and resources specific to the mold design professional. Sponsored by Siemens NX.  Visit the Equipped Mold Designer here!

For Architects! Cadalyst has an area of our site focused on technologies and resources specific to the building design professional. Sponsored by HP.  Visit the Equipped Architect here!