尝试根据单元格值隐藏行

时间:2019-12-27 09:03:14

标签: excel vba hide rows

我在使我的代码正常工作时遇到一些问题。请看下面的代码:

Private Sub Worksheet_Calculate()
Dim GenRequire As Integer
GenRequire = Range("A21").Value

Rows("22:31").EntireRow.Hidden = True
Select Case GenRequire
    Case Is = 0: Rows("22:31").EntireRow.Hidden = True 'No Rows shown
    Case Is = 1: Rows("22:22").EntireRow.Hidden = False '1st Row shown
    Case Is = 2: Rows("22:23").EntireRow.Hidden = False '1-2 rows shown
    Case Is = 3: Rows("22:24").EntireRow.Hidden = False '1-3 rows shown
    Case Is = 4: Rows("22:25").EntireRow.Hidden = False '1-4 rows shown
    Case Is = 5: Rows("22:26").EntireRow.Hidden = False '1-5 rows shown
    Case Is = 6: Rows("22:27").EntireRow.Hidden = False '1-6 rows shown
    Case Is = 7: Rows("22:28").EntireRow.Hidden = False '1-7 rows shown
    Case Is = 8: Rows("22:29").EntireRow.Hidden = False '1-8 rows shown
    Case Is = 9: Rows("22:30").EntireRow.Hidden = False '1-9 rows shown
    Case Is = 10: Rows("22:31").EntireRow.Hidden = False '1-10 rows shown
End Select
End Sub

我在Case Is = 10:上遇到了错误

  

运行时错误1004:应用程序定义的错误或对象定义的错误。

我正在尝试创建一个单元格,A21包含0-10(整数值)之间的值,其中0表示22-31之间没有行,1表示22行,2表示22和23,3表示22,23 ,以及24等)。任何人都可以提供的帮助将非常有帮助,因为我对Excel中的VBA脚本真的很陌生。注意:我的Excel版本有Office 365。

1 个答案:

答案 0 :(得分:0)

我会做一些简化:

Private Sub Worksheet_Calculate()

    Dim r
    r = Range("A21").Value
    If Not IsNumeric(r) Then Exit Sub
    r = Round(r, 0)
    With Rows(22)
        If r >= 1 And r < 10 Then
            Range(.Offset(0), .Offset(r - 1)).Hidden = False
            Range(.Offset(r), .Offset(9)).Hidden = True
        Else
            Range(.Offset(0), .Offset(9)).Hidden = r <> 10
        End If
    End With

End Sub