如果语句不在Excel VBA中工作

Iam试图用VBA在Excel中创build一个简单的if语句。

我正在创build一个新的checkbox

将下面的代码添加到框中。

Sub CheckBox1_Click() HideRows "2:5" End Sub Sub HideRows(rowRange) If CheckBox1 = False Then Rows(rowRange).EntireRow.Hidden = True Else: Rows(rowRange).EntireRow.Hidden = False End If End Sub 

结果:如果checkbox处于选中状态或未选中状态,则行都将隐藏。

(checkbox被选中)

所有行都可见

取消选中checkbox

结果:所有行都被隐藏

(checkbox未选中)

所有行都可见

取消选中checkbox

结果:所有行都被隐藏

你想在一个改变事件。

你不需要那么那么。 CheckBox1 rturns一个TRUE / FALSE,只是使用它。

EntireRow Rows()时, EntireRow也是不需要的。 你已经在引用整行。

此外,最好总是将父级声明为Rows()所在的任何Range对象。 如果代码在工作表代码中,则使用Me ,因为它将引用自身。 如果代码位于模块中,则使用ActiveSheet或更优选的特定Worksheets("Sheet1")

 Private Sub CheckBox1_Change() HideRows "2:5" End Sub Sub HideRows(rowRange) 'if this code is not in the worksheet code then change `Me` to `ActiveSheet` Me.Rows(rowRange).Hidden = Not CheckBox1 End Sub 

假设它是一个ActiveXcheckbox,将这个代码放在Sheet Module中…

 Private Sub CheckBox1_Click() If CheckBox1 = True Then Rows("2:5").Hidden = True Else Rows("2:5").Hidden = False End If End Sub 

编辑:

或者只是使用这个…

 Private Sub CheckBox1_Click() Rows("2:5").Hidden = CheckBox1 End Sub 

您可以把它放在一个子,假设它是一个activeXcheckbox

 Private Sub CheckBox1_Click() If CheckBox1 = True Then [2:5].EntireRow.Hidden = False Else: [2:5].EntireRow.Hidden = True End If End Sub