隐藏给定数量的行的Excelmacros

我正在寻找关于这个问题的答案,但没有运气。 我想要一个Excelmacros来隐藏基于单元格值的行。 我的表是行18和行418之间,你可以请看看我的VBA代码:

Sub HideRows() Dim np As Integer np = Range("W1").Value 'hidding all the table rows first ActiveSheet.Rows("18:418").EntireRow.Hidden = True 'showing only from row 18 to the number given by cell "W1" ActiveSheet.Rows("18:np").EntireRow.Hidden = False End Sub 

这是给我一个types不匹配的错误,有什么办法使这项工作? 非常感谢

更改

 ActiveSheet.Rows("18:np").EntireRow.Hidden = False 

 ActiveSheet.Rows("18:" & np).EntireRow.Hidden = False 

给一下去

 Sub HideRows() Dim np As Long np = Range("W1").Row 'hidding all the table rows first ActiveSheet.Range("18:418").EntireRow.Hidden = True 'showing only from row 18 to the number given by cell "W1" ActiveSheet.Range("18:np").EntireRow.Hidden = False End Sub 

此外,最好将大多数数字设置为Long而不是IntegerLong有一个更长的字符大小(即你可以使用更大的数字,因为整数的最大值是±32767)这值得注意,如果你正在循环一个大的数据集。 此外,VBA在32位环境下对待它们完全相同 – 编译时,它将Integer's to转换为长Integer's to 。 内部和长期参考