Graphics as Radio Buttons

Home Up Search This Site What's New? Audio On CDR Favourites Downloadable files Photo Gallery 2002 Photo Gallery 2003 Photo Gallery 2004/5 Photo Gallery 2006/7 Photo Gallery 2008 Photo Gallery 2009/10 Photo Gallery 2011 Photo Gallery 2012 UK Photo Gallery Ireland Photo Gallery Cats Photo Gallery 

horizontal rule

 

 

Google
 

 

Many people access the material from this web site daily. Most just take what they want and run. That's OK, provided they are not selling on the material as their own; however if your productivity gains from the material you have used, a donation from the money you have saved, however small, would help to ensure the continued availability of this resource.

Click the appropriate button above to access PayPal.

 

Using graphics in a VBA userform to behave as radio buttons.

 

A user of the Microsoft Office Answers forums asked how to employ graphics in a userform as radio buttons, i.e. to use the graphic to make a unique selection from a number of similar graphics and provide user feedback of which was selected. While you can add images to radio buttons, the effect is disappointing and you have no control over the position of the button as shown in the first illustration below. With a little lateral thinking, it is possible to come up with something rather more elegant, as shown in the second illustration below.

 

 

I have shown only 2 'buttons', but it would be easy enough to expand the concept to include any number of buttons that will fit on the userform.

Start with a blank userform and add a label, then copy and paste that label to create the other buttons.

 

 

So that you can more easily see what you are doing, set the back colour of the labels to the colour that you will use to indicate that the button has been selected. I have used red.

Then insert an image object into the first label as shown on the right below, and set the size to display a red border around the image. Repeat for second 'button'

   

Note:

You could achieve some of this effect by adding a coloured border to the image, without using the labels, but you have no control of the border width.

 

The next steps are to remove the label captions and to set the sizemode property of the image boxes

  

 

You can then insert the images, add a command button, and finalise the size of the userform. If you wish you can change the captions on the userform and on the command button directly as for the labels shown above, or you can do it in code as shown below.

 

All that remains is to apply the macro code to the form. For the sake of this exercise I have left all the elements of the form with their default names. In practice, it is better to give them more meaningful names.

 

Option Explicit

Private Sub CommandButton1_Click()

'The action when the button is clicked
Select Case Me.Tag
Case 1: MsgBox "Giants selected"
Case 2: MsgBox "49ers Selected"
'etc
End Select
Unload Me
End Sub

Private Sub Image1_Click()
Me.Tag = 1
Me.Label1.BackColor = wdColorRed
Me.Label2.BackColor = &H8000000F
'etc
MsgBox "Giants selected" 'The action when the image is clicked
End Sub

Private Sub Image2_Click()
Me.Tag = 2
Me.Label1.BackColor = &H8000000F
Me.Label2.BackColor = wdColorRed
'etc
MsgBox "49ers Selected" 'The action when the image is clicked
End Sub


Private Sub UserForm_Initialize()
Me.Caption = "Which team?"

'Set the initial colours to match the userform background
Me.Label1.BackColor = &H8000000F
Me.Label2.BackColor = &H8000000F

Me.Label1.Caption = ""

Me.Label2.Caption = ""

Me.CommandButton1.Caption = "OK"
End Sub