Edited by HansV to break EXTREMELY long lines in pre - /pre section - please have some consideration for users who don't have a 3,024 pixel wide monitor!

The thread in <post#=119,087>post 119,087</post#> notwithstanding, there is a real need for making active use of triple-state checkboxes in VBA.
My current example is setting up a mask of eight bits against which FSO files/folders will be checked.
Eight attribute bits are listed, eight checkboxes are on the GUI form. Each checkbox is described as triple-state (True, False, Null)
Word 2000 VBA Help states "A control set to Null does not initiate the Click event."
The Click event for any one checkbox contains code to assemble an feedback string (below),
but since the Null-state setting does not initiate a click event, the code to generate the feedback string does not get called.
Since no click event takes place when the user changes (by clicking) the state of the checkbox from False to Null,
the VBA code for the click event cannot update the feedback string.

<pre>Function strBuildBitString(bln1, bln2, bln3, bln4, bln5, bln6, bln7, bln8) As String
Dim strResult As String
strResult = strResult & bln1 & strcFilterItemDelimiter
strResult = strResult & bln2 & strcFilterItemDelimiter
strResult = strResult & bln3 & strcFilterItemDelimiter
strResult = strResult & bln4 & strcFilterItemDelimiter
strResult = strResult & bln5 & strcFilterItemDelimiter
strResult = strResult & bln6 & strcFilterItemDelimiter
strResult = strResult & bln7 & strcFilterItemDelimiter
strResult = strResult & bln8 & strcFilterItemDelimiter
strBuildBitString = strResult
End Function</pre>

<pre>Private Sub cbHidden_Click()
Me.tbSourceAttributes8bits = strBuildBitString(Me.cbRO, Me.cbHidden, Me.cbSystem,
Me.cbVolume, Me.cbDirectory, Me.cbAAr, Me.cbAAl, Me.cbCompressed)
End Sub
</pre>

One solution is to avoid the CLICK event and use instead the CHANGE event, which klutzy solution seems to work for me, for the time being
<pre>Function strBool(bln) As String
If IsNull(bln) Then
strBool = "Null"
Else
strBool = bln
End If
End Function
Private Sub cbHidden_Change()
Me.tbSourceAttributes8bits = strBuildBitString(strBool(Me.cbRO), strBool(Me.cbHidden),
strBool(Me.cbSystem), strBool(Me.cbVolume), strBool(Me.cbDirectory),
strBool(Me.cbArchive), strBool(Me.cbAlias), strBool(Me.cbCompressed))
End Sub</pre>