簡體   English   中英

根據不同的單元格隱藏多個行范圍

[英]Hide multiple range of rows based on differents cell

目前我有一個工作腳本,但它有點慢,因為當我實際上需要每個循環隱藏 58 行時它隱藏了 1 行 1 行,我知道可以隱藏一系列循環並成功工作,但僅適用於前 58 行,不要隱藏接下來的 58 行。總共有 1740 行,所以我最多隱藏 1740 次而不是 30 次。

所以腳本的目標是隱藏行以不打印工作表的這一部分,該工作表中總共可以打印 30 張紙。 每張紙是 58 行,決定是否要打印這張紙的是單元格 I3,對於第一張紙,是否有文本,或者它是否為空或有空格,下一張紙是 I63,然后是 I119,依此類推。

在此處輸入圖像描述

有問題的代碼是這個代碼,並且通過 1 隱藏第 1 行來工作:

Sub Hide_column_and_Row_FR_3_XX_Fiche_Erreur()

Dim NbreLigne As Integer
Dim hh As Variant
Dim zz As Variant
Dim tableau As range


Set wrkshtDoc = ActiveWorkbook.Worksheets("FR-3-XX_Fiche d'erreur")
Set tableau = wrkshtDoc.range("A1:L1740")
hh = 1

NbreLigne = tableau.Rows.Count

For k = 3 To NbreLigne

            If tableau(k, 9) = " " Or tableau(k, 9) = Empty Then
               For zz = 1 To 58
               wrkshtDoc.Rows(hh).Hidden = True
               hh = hh + 1
               Next zz
                  
            Else
               For zz = 1 To 58
               wrkshtDoc.Rows(hh).Hidden = False
               hh = hh + 1
               Next zz
            End If
        
        k = k + 57
          
Next k

結束子

我嘗試了不同的方法來選擇多行,但我總是被“丟失的對象”擋在后面。 我可以在工作表中的單元格內編寫代碼,但 VBA 是另一回事......我試圖盡可能多地重用本文檔中已經存在的代碼來制作一些東西......

謝謝。

使用 Step 一次步進 58 行並使用 Resize 拾取所有 58 行:

Sub Hide_column_and_Row_FR_3_XX_Fiche_Erreur()

    Dim NbreLigne As Long
    Dim tableau As Range
    
    
    Set wrkshtDoc = ActiveWorkbook.Worksheets("FR-3-XX_Fiche d'erreur")
    Set tableau = wrkshtDoc.Range("A1:L1740")
    
    NbreLigne = tableau.Rows.Count
    
    Dim k As Long
    For k = 3 To NbreLigne Step 58
        tableau(k, 9).Resize(58, 1).EntireRow.Hidden = (tableau(k, 9) = " " Or tableau(k, 9) = Empty)
    Next k
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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