Form rows with CheckBoxes

G

GusEvans

We have a template that contains a table of rows (single column). At the
beginning of each row is a checkbox. When a new contract is entered, the
form template is opened, client name and file # entered an then saved under
the clients name. As the contract is worked this form is re-opened and the
various applicable table rows are checked. When done, the user runs a macro
to close up all unchecked rows. This works, but results in multiple
unchecked rows looking like thin or not so thin gray lines. Any suggestions??

TIA
 
G

GusEvans

Jezebel-
The user wants to check various comments and save them, but to, in the
future, open all rows and re-set the checkmarks to modify the amendment to
the contract. Then compress unused rows and re-save it. I have written the
code to do both.

Forgot to mention - their are 2 columns in the table - 1 narrow one for just
Checkboxes and 1 wide one for the comments, fields and other checkboxes.
 
J

Jezebel

Use plain text instead of a table, then format the unwanted lines as hidden.
Use a hanging indent for the comment 'column'.
 
G

GusEvans

Jezebel-

The user already has a couple of hundred already done - all I need to know
is if there is anyway to effectively compress the unchecked ones with little
or no indication. So far I am using the following code to do it -

Sub CloseUnChecked()
Dim intX As Integer
Dim strRow As String
Dim vCB As CheckBox

Application.ScreenUpdating = False
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:=strPassword
End If
For intX = 1 To 26
strRow = "chkRow" & intX
Set vCB = ActiveDocument.FormFields(strRow).CheckBox
If vCB.Value = False Then
With vCB
.AutoSize = True
.Size = 1
End With
ActiveDocument.Tables(1).Rows(intX).Select
With ActiveDocument.Tables(1).Rows(intX)
.HeightRule = wdRowHeightExactly
.Height = 1
End With
End If
Next
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:=strPassword
End Sub
 
G

Greg

Gus,

As Jezebel has suggested. Why don't you just delete the rows instead
of trying to squish them up.

Try:
Sub DeleteUnChecked()
Dim pRowIndex As Long
Dim pRows As Word.Rows
Application.ScreenUpdating = False
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If
Set pRows = ActiveDocument.Tables(1).Rows
For pRowIndex = pRows.Count To 1 Step -1
If pRows(pRowIndex).Range.FormFields(1).CheckBox.Value = False Then
pRows(pRowIndex).Delete
End If
Next
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
End Sub
 
G

Greg

Gus,

I'm ready. Go ahead and say it: "Read the whole question stupid."

Sorry

All I can suggest is maybe continuing your current process to squish
the rows even more and set the borders to nothing. Here is a bit of
code that I sometimes use to show/hide text in a table:


Dim bGrid As Boolean
Application.ScreenUpdating = False
With ActiveDocument.Tables(1)
With .Rows(1)
If .HeightRule = wdRowHeightExactly Then
.HeightRule = wdRowHeightAuto
CommandButton1.Caption = "Hide details"
.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
.Borders(wdBorderRight).LineStyle = wdLineStyleSingle
.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
Else
.HeightRule = wdRowHeightExactly
.Height = ".05"
CommandButton1.Caption = "Show details"
.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
.Borders(wdBorderRight).LineStyle = wdLineStyleNone
.Borders(wdBorderTop).LineStyle = wdLineStyleNone
End If
End With
End With
Application.ScreenUpdating = True
 
J

Jezebel

You've already established that your method doesn't work acceptably. So your
choices are live with it, or do something else. Unless you are particularly
in love with the dead horse?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top