Making groups of Check Box Form Fields mutually exclusive (so that they behave like radio buttons)

Article contributed by Ibby

Select all related Check Box Form Fields, and put them into a Frame by clicking the Insert Frame button on the Forms toolbar:

The checkboxes can't be in a table, because Frames can't be in a table.

The Frame you insert will initially have its Text wrapping set to Around, but you will probably  find it behaves better if you change this by selecting the Frame, then selecting Format + Frame, and changing the Text wrapping to None. The frame will then flow with the text.

By default there will be a box border around the text, but you can change the border (or remove it), by selecting the text within the frame, and then selecting Format + Borders and Shading. If you do want a border, you can change its dimensions by dragging the edge handles of the frame:

Now assign the following code as the Entry macro for all of the checkboxes, and protect the form. The Check Box Form Fields in each Frame will then be mutually exclusive.

Sub MakeCheckBoxesExclusive()

Dim oField As FormField

For Each oField In Selection.Frames(1).Range.FormFields
    oField.CheckBox.Value = False
Next oField

Selection.FormFields(1).CheckBox.Value = True

End Sub

There is one minor but unfortunate drawback to doing this; if the user tabs or uses their keyboard arrow keys to go from one form field to the next, each checkbox form field will become selected, in turn, as they reach it (and the others will be deselected); so they have to use the mouse, not the keyboard, to select the checkboxes .