• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

相同的Worksheet_Activate代码,但有不同的范围不工作在工作表2

excel-vba 来源:user9112818 3次浏览

首先,我对Excel和其他应用程序中使用的宏和vba一无所知。我从互联网复制并运行下面的代码在片材1为:相同的Worksheet_Activate代码,但有不同的范围不工作在工作表2

Option Explicit 
Private Sub Worksheet_Activate() 
    Dim r As Range, c As Range 
    Set r = Range("a129:a1675") 
    Application.ScreenUpdating = False 
    For Each c In r 
    If Len(c.Text) = 0 Then 
    c.EntireRow.Hidden = True 
    Else 
     c.EntireRow.Hidden = False 
    End If 
    Next c 

    Application.ScreenUpdating = True 
End Sub 

的代码在表1,但是相同的代码但具有不同的范围,即工作正常。 “a5:a100”对于工作表2不起作用。

我们是否需要停用工作表1的代码?

由于事先 问候, ID


===========解决方案如下:

您可以创建一个子这样的一个,并将其放置在一个标准的代码模块,例如Module1' (you will have to insert it: Right-click in the Project explorer while selecting the workbook's VBA project, select插入and Module`)。

Option Explicit 

Sub HideRows(Rng As Range) 

    Dim Ws As Worksheet 
    Dim R As Long 

    Application.ScreenUpdating = False 
     With Rng 
      Set Ws = .Worksheet 
      For R = 1 To .Rows.Count 
       Ws.Rows(.Row).EntireRow.Hidden = Not CBool(Len(.Cells(R))) 
      Next R 
     End With 
    Application.ScreenUpdating = True 
End Sub 

然后从所有工作表中调用相同的子文件受到影响,每个工作表都有一个不同的范围作为参数。

Option Explicit 

Private Sub Worksheet_Activate() 
    HideRows Range("A1:A1675") 
End Sub 

想法是该范围应该只有一列。如果您提供多列范围,则行的Hidden状态将取决于每行中最后一个单元格的内容。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)