如何做几个checkbox相同的代码来设置checkbox值?

我在我的Excel用户表单中有几个checkbox(总共10个),它们应该有相同的行为。 这意味着,当我重新加载表单时,checkbox的值应该改变,这取决于电子表格中实际select的行的值。

以下代码适用于一个checkbox:

If Sheet1.Cells(iRow, Sheets("aux").Range("B21")) = "X" Then cbERW.Value = True ElseIf Sheet1.Cells(iRow, Sheets("aux").Range("B21")) = "?" Then cbERW.Value = Null Else cbERW.Value = False End If 

我怎样才能以最简单的方式做到这一点多个checkbox? 但是对于每一个checkbox,引用的行和列都可以改变。 例如,下一个看起来像这样( cbHSAW而不是cbERWB22而不是B21 ):

 If Sheet1.Cells(iRow, Sheets("aux").Range("B22")) = "X" Then cbHSAW.Value = True ElseIf Sheet1.Cells(iRow, Sheets("aux").Range("B22")) = "?" Then cbHSAW.Value = Null Else cbHSAW.Value = False End If 

任何人都知道如何轻松做到这一点?

你可以把你的testing语句包装在一个函数中,并通过特定checkbox的范围。 然后设置返回结果可以作为checkbox的值。 下面的内容需要根据你的表单和范围进行修改,但是会给你想要的结果。

 'Function to test the value of the range Private Function SetCheckBox(ByVal rng As Range) If rng.Value = "X" Then SetCheckBox = True ElseIf rng.Value = "?" Then SetCheckBox = Null Else SetCheckBox = False End If End Function Private Sub UserForm_Initialize() 'Set value for each checkbox by passing its range to the function CheckBox1.Value = SetCheckBox(Sheets("aux").Range("A1")) CheckBox2.Value = SetCheckBox(Sheets("aux").Range("A2")) CheckBox3.Value = SetCheckBox(Sheets("aux").Range("A3")) CheckBox4.Value = SetCheckBox(Sheets("aux").Range("A4")) End Sub 

在这里输入图像说明