VB - 更改所有复选框

时间:2015-05-26 15:26:15

标签: vba checkbox wildcard

我对一般的编程和特别是Visual Basic非常天真。

我的问题听起来非常愚蠢和无关紧要,但几个小时后我一直在努力。

我正在使用Microsoft Office和Visual Basic环境编写调查,以利用复选框,按钮等功能。

我想知道是否有办法立即更改所有复选框的属性(例如字体颜色)? 也就是说,如果我按下按钮X,所有复选框都变为红色(这是一个愚蠢的例子,有点复杂)。我知道我必须解决.ForeColor领域,但我不知道是否可以同时为所有复选框更改它(并且它们真的很多,因此逐个更改属性或手动创建数组是不可能的:p)。

我的复选框名为Q1A,Q1B,Q1C,Q2A,Q2B ...有没有办法使用像“”这样的通配符,例如: Q .ForeColor =& HFF& ?,以某种方式将这些属性应用于名称以“Q”开头的所有复选框?

我希望自己清楚明白, 提前谢谢!

1 个答案:

答案 0 :(得分:0)

这将遍历单词doc中的所有控件,并根据需要更新名称以“Q”开头的复选框。请注意,这是针对ActiveX复选框的,我非常确定您正在使用它。

Public Sub Testsub()

Dim control As Object

If Me.QA1.Value = False and Q1B.Value = False And Q1C.Value = False Then 
     Check = MsgBox(".........") 
     For Each control In Me.InlineShapes
          If control.OLEFormat.ClassType = "Forms.CheckBox.1" Then 
          'check if object is a checkbox
              If Left(control.OLEFormat.Object.Name, 1) = "Q" Then
              'check if checkbox name starts with "Q", then format checkbox
                   control.OLEFormat.Object.Value = True
                   control.oleformat.object.forecolor = &HFF&
                   'add anything else you want to do to each checkbox here
              End If
          End If


     Next control
ElseIf Me.QA1.value................
   'Any other criteria you want to checkfor, use same loop to set the checkboxes.

End If

End Sub