Notifications
Clear all

Executar macro em multiplos worksheets

5 Posts
4 Usuários
0 Reactions
1,028 Visualizações
(@thame)
Posts: 2
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
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

thame,

Boa tarde!

Veja se é assim.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 26/05/2017 12:15 pm
(@thame)
Posts: 2
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
(@brunoxro)
Posts: 698
Honorable 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: 858
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

Osvaldo

 
Postado : 26/05/2017 2:30 pm