如果语句不在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