繁体   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