2017-05-26 81 views
1

我正在尋找關於此問題的答案,但沒有運氣。 我想要一個excel宏來隱藏基於單元格值的行。 我的表列18之間和行418請你看看我的VBA代碼:隱藏給定行數的Excel宏

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 

這是給我一個類型不匹配的錯誤,有沒有什麼辦法,使這項工作?謝謝你這麼多

回答

3

變化

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

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

不錯,我走了2周,你爬到12K :) –

+2

@ShaiRado - 有更多的代表可當你不回答所有的問題:d – YowE3K

+0

@ YowE3K - 另一位老將回來,我要給大家放棄船? :)) –

0

給這個一去

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 

而且,最好是Dim大多數數字爲Long,而不是IntegerLong具有較長的字符大小(即,您可以使用更大的數字,因爲Integer的最大值爲±32767)如果您正在循環大型數據集,這值得注意。此外,VBA在32位環境下對待它們完全相同 - 編譯它時將轉換Integer's to長。 Int & Long Reference