如果语句在Excel VBA中不起作用

时间:2017-10-13 14:20:04

标签: excel vba excel-vba checkbox

Iam尝试使用VBA在Excel中创建一个简单的if语句。

我正在创建一个新复选框

将以下代码添加到框中。

df1

结果:如果选中或取消选中复选框,则会隐藏行。

(选中复选框)

所有行都可见

取消选中复选框

结果:所有行都隐藏

(未选中复选框)

所有行都可见

取消选中复选框

结果:所有行都隐藏

3 个答案:

答案 0 :(得分:4)

您希望在变更事件中使用它。

你不需要If Then。 CheckBox1 rtu为TRUE / FALSE,只需使用它。

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

此外,最好始终将父对象声明为Rows()的任何范围对象。如果代码在工作表代码中,则使用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

答案 1 :(得分:2)

假设它是一个ActiveX CheckBox,请将此代码放在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

答案 2 :(得分:1)

你可以将它放在一个子中,假设它是一个activeX复选框

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