MS Excel VBA-根据单元格值隐藏行不起作用

时间:2018-12-28 23:40:44

标签: excel vba

我非常新手,并且在按命令按钮时尝试根据某些单元格中的值来显示/隐藏某些行。我需要2件事的帮助:

1)希望此操作实际上无需按任何按钮即可。即每次更改单元格C10的值时,代码都会运行以隐藏/显示。

2)我有4个在按下按钮时运行的子例程。其中三个工作正常。我无法运行“ Rows1to13”子例程。无法理解它,因为这是完全相同的例程,我只是更改了触发它的单元格并更改了隐藏的行范围。

我的代码在下面

Private Sub CommandButton4_Click()
    Call HideDefault
    Call rows1to13
End Sub

Sub HideDefault()

    If (Range("C10")) = "Manual" Then
        For a = 44 To 90
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = True
            End If
        Next
        For a = 92 To 125
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = False
            End If
        Next
    End If

    If (Range("C10")) = "Manual" Then
        MsgBox "Manual Data Entry chosen"
    End If

End Sub

Sub rows1to13()
    'and if C11=yes and C16=yes'

    If (Range("C11")) = "Yes" Then
        For a = 12 To 13
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = False
            End If
        Next
    End If

    If (Range("C16")) = "Yes" Then
        For a = 17 To 20
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = False
            End If
        Next
    End If

    'and if C11=No and C16=No'

    If (Range("C11")) = "No" Then
        For a = 12 To 13
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = True
            End If
        Next
    End If

    If (Range("C16")) = "No" Then
        For a = 12 To 13
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = True
            End If
        Next
    End If

    'and if C11= blank and C16= Blank'

    If (Range("C11")) = "" Then
        For a = 12 To 13
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = False
            End If
        Next
    End If

    If (Range("C16")) = "" Then
        For a = 17 To 20
            If Worksheets("Sheet1").Cells(a, 1).Value >= "0" Then
                Worksheets("Sheet1").Rows(a).Hidden = False
            End If
        Next
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

我发现了为什么代码未执行的问题。 。这很简单。该代码正在寻找要执行的单元格中的值,并且区分大小写。在工作表中,单元格的输入是用大写字母表示的,即“否”,但是编写的代码中查找“否”。

使用工作表更改事件来执行,而无需按下按钮。谢谢VBasic2008