Notifications
Clear all

Executar macro em multiplos worksheets

5 Posts
4 Usuários
0 Reactions
1,002 Visualizações
(@thame)
Posts: 0
New Member
Topic starter
 

Estou tentando executar uma macro para ocultar linhas onde o valor seja 0, porém preciso executar o código em 40 abas, tentei automatizar a macro para rodar em todas mas não estou conseguindo. O nome das abas vai de 1 até 40, nessa ordem.

O código para ocultar as linhas com valor 0 esta funcionando, o problema esta para fazer rodas em todas as abas com o nome que eu quero (1, 2 ,3, ..., 40)

Sub oculta()
Dim ws As Worksheet
Application.ScreenUpdating = False 'Desabilita atualização de tela
ActiveSheet.Calculate 'Calcula somente as fórmulas da aba ativa
    BeginRow = 3
    EndRow = 350
    ChkCol = 3
For Each ws In Worksheets
   If ws.Name = "1" Or ws.Name = "2" Then

    For RowCnt = BeginRow To EndRow 'oculta linhas com valor < 1
        If Cells(RowCnt, ChkCol).Value < 1 Then
            Cells(RowCnt, ChkCol).EntireRow.Hidden = True
        Else
            Cells(RowCnt, ChkCol).EntireRow.Hidden = False
        End If
    Next RowCnt

   End If
Next
Application.ScreenUpdating = True 'Habilita atualização de tela
End Sub

:|

 
Postado : 26/05/2017 12:02 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

thame,

Boa tarde!

Veja se é assim.

 
Postado : 26/05/2017 12:15 pm
(@thame)
Posts: 0
New Member
Topic starter
 

thame,

Boa tarde!

Veja se é assim.

Quase isso wagner, ele não pode fazer em todas as abas, apenas nas abas com os nomes 1, 2, 3, .., 40 (no total 40 abas).

 
Postado : 26/05/2017 12:52 pm
(@brunoxro)
Posts: 0
New Member
 

Boa tarde theme,

Se você quer que rode apenas nas abas que estejam nomeadas como números? Fiz uma pequena alteração no código do Wagner (adicionei um IF).

Teste:

'Option Explicit

Sub Oculta02()
    
    ThisWorkbook.Activate
    
    Dim Ws As Worksheet
    
    Application.ScreenUpdating = False 'Desabilita atualização de tela
    ActiveSheet.Calculate 'Calcula somente as fórmulas da aba ativa
    
    BeginRow = 3
    EndRow = 350
    ChkCol = 3
    
    For Each Ws In Worksheets
        
        Nome = Ws.Name
        
        'Se é número, entra na rotina
        If IsNumeric(Nome) Then
        
        
            Ws.Select
           'If ws.Name = "1" Or ws.Name = "2" Then
        
            For RowCnt = BeginRow To EndRow 'oculta linhas com valor < 1
                If Cells(RowCnt, ChkCol).Value < 1 Then
                    Cells(RowCnt, ChkCol).EntireRow.Hidden = True
                Else
                    Cells(RowCnt, ChkCol).EntireRow.Hidden = False
                End If
            Next RowCnt
        
           'End If
       
       End If
       
    Next
    Sheets("1").Select
    MsgBox "Linhas ocultas com Sucesso!", vbDefaultButton1, "LINHAS OCULTAS"
    Application.ScreenUpdating = True 'Habilita atualização de tela
    
End Sub

att,

 
Postado : 26/05/2017 1:15 pm
(@osvaldomp)
Posts: 857
Prominent Member
 
Sub oculta()
 Dim i As Long, RowCnt As Long
  ActiveSheet.Calculate 'Calcula somente as fórmulas da planilha ativa
  For i = 1 To 40
   With Sheets(CStr(i))
    .Rows("3:350").EntireRow.Hidden = False
      For RowCnt = 3 To 350 'oculta linhas com valor < 1
       If .Cells(RowCnt, 3).Value < 1 Then .Rows(RowCnt).EntireRow.Hidden = True
      Next RowCnt
    End With
  Next i
End Sub
 
Postado : 26/05/2017 2:30 pm