An interesting puzzle, but not impossible. As macropod indicated you could
run a macro to enable only the fields in the appropriate columns of the
tables. With an unknown number of tables (9?) each with five columns
containing fields to be checked, the following macro will enable only the
fields in the column indicated. The column number here (iCol) is obtained
from a dropdown field 'Dropdown1', but you can modify that to suit your
form. The macro code can undoubtedly be simplified, but it works as shown
The macro will fail if some of the tables in your document have fewer than
five columns.
Dim iTable As Integer
Dim iCol As Integer
Dim iRow As Integer
Dim h, i As Long
iCol = ActiveDocument.FormFields("Dropdown1").Result
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:=""
End If
For h = 1 To ActiveDocument.Tables.Count
With ActiveDocument.Tables(h)
iRow = .Rows.Count
Select Case iCol
Case Is = 1
For i = 1 To iRow
Set oCell = .Cell(i, 1).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = True
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 2).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 3).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 4).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 5).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
Case Is = 2
For i = 1 To iRow
Set oCell = .Cell(i, 1).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 2).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = True
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 3).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 4).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 5).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
Case Is = 3
For i = 1 To iRow
Set oCell = .Cell(i, 1).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 2).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 3).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = True
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 4).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 5).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
Case Is = 4
For i = 1 To iRow
Set oCell = .Cell(i, 1).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 2).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 3).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = True
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 4).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 5).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
Case Is = 5
For i = 1 To iRow
Set oCell = .Cell(i, 1).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 2).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 3).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 4).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = False
.Execute
End With
Next i
For i = 1 To iRow
Set oCell = .Cell(i, 5).Range
oCell.FormFields(1).Select
With Dialogs(wdDialogFormFieldOptions)
.Enable = True
.Execute
End With
Next i
End Select
End With
Next h
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, _
NoReset:=True, _
Password:=""