簡體   English   中英

根據單元格值隱藏多行的代碼

[英]Code to hide multiple rows based on cell value

我正在嘗試檢查單元格值,並基於此,應該隱藏 5 行。

例如,如果S4單元格值<=0 ,那么它應該隱藏行從4 到 8 ,然后它應該再次檢查S9單元格值,如果它是<=0 ,那么它應該隱藏行從9 到 13等等。

像這樣我有超過1000行。 有沒有更好的方法來處理這個? 請告訴我。

在此處輸入圖像描述

有一種叫做“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM