[英]Code to hide multiple rows based on cell value
有一種叫做“For循環”的東西可以幫助你通過大量的行go,而不必寫下每一行。 在這里閱讀它們: https://www.excel-easy.com/vba/loop.html
我會給你一個基本的例子:
Sub hideSomeRows()
Dim currentRow As Long
Dim lastRow As Long
lastRow = 1000 'or any other last row you want to check
For currentRow = 1 To lastRow Step 5
If Range("S" & currentRow).Value <= 0 Then
Rows(currentRow & ":" & currentRow + 4).EntireRow.Hidden = True
End If
Next currentRow
End Sub
如果檢查行的 S 列中存在負值或零,這將遍歷第 1 行和第 1000 行之間的每 5 行,並隱藏自身和接下來的 4 行。
我使代碼盡可能簡單,但在使用它之前你真的應該考慮限定“范圍”。 這是一個很好的討論,為什么它很重要以及如何做到這一點。 在此處查找一些快速代碼片段,展示如何將您正在處理的工作簿和工作表定義為代碼中的變量。 以下是有關使用工作表的深入信息:
要點:做
Dim wb As Workbook
Set wb = ThisWorkbook
Dim ws As Worksheet
Set ws = wb.Sheets("!!YOURWORKSHEETNAME!!") 'replace !!YOURWORKSHEETNAME!! with the name of your worksheet
然后寫ws.Range
而不是Range
。 行也是如此。 你為什么問? 在執行宏之前嘗試查看另一個工作表,您會看到,如果沒有另行說明,您的宏將始終將Range
解釋為最后一個活動工作表的范圍!
根據您的查詢,我假設您有 1000 行,如果單元格的值 <=0,則必須隱藏接下來的 4 行。
Sub Hide_Unhide()
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 1000
If (Not IsEmpty(ActiveSheet.Range("S" & i).Value)) And ActiveSheet.Range("S" & i).Value <= 0 Then
ActiveSheet.Range("S" & i).EntireRow.Hidden = True
i = i + 4
End If
Next
Application.ScreenUpdating = True
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.