Logo Hardware.com.br
L@cerda
L@cerda Novo Membro Registrado
149 Mensagens 1 Curtida

Macro com erro

#1 Por L@cerda 08/02/2025 - 12:30
A seguinte macro está dando erro, alguém consegue me ajudar por favor ?

Sub OcultarLinhas()

  Dim wsVendas As Worksheet
  Dim wsEstoque As Worksheet
  Dim wsName As Variant
  Dim rngVendas As Range
  Dim rngEstoque As Range
  Dim cell As Range
  Dim lastRowVendas As Long
  Dim lastRowEstoque As Long
  Dim maxRows As Long

  On Error GoTo ErrHandler ' Tratamento de erros

  Application.ScreenUpdating = False ' Desabilita atualização da tela

  maxRows = 500 ' Define o número máximo de linhas

  For Each wsName In Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro&quot

    ' Verifica se as planilhas existem em ambos os arquivos
    If PlanilhaExiste(wsName, "Vendas&Faturamento25.xlsx&quot And PlanilhaExiste(wsName, "Estoque25.xlsx&quot Then

      Set wsVendas = Workbooks("Vendas&Faturamento25.xlsx&quot.Worksheets(wsName)
      Set wsEstoque = Workbooks("Estoque25.xlsx&quot.Worksheets(wsName)

      ' Encontra a última linha preenchida, mas não ultrapassa o número máximo de linhas
      lastRowVendas = WorksheetFunction.Min(maxRows, wsVendas.Cells(wsVendas.Rows.Count, "B&quot.End(xlUp).Row)
      lastRowEstoque = WorksheetFunction.Min(maxRows, wsEstoque.Cells(wsEstoque.Rows.Count, "C&quot.End(xlUp).Row)

      ' Define os intervalos com base nas últimas linhas encontradas
      Set rngVendas = wsVendas.Range("B3:B" & lastRowVendas)
      Set rngEstoque = wsEstoque.Range("C3:C" & lastRowEstoque)

      For Each cell In rngVendas
        If Not rngEstoque.Find(What:=cell.Value, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
          rngEstoque.Find(What:=cell.Value, LookIn:=xlValues, LookAt:=xlWhole).EntireRow.Hidden = True
        End If
      Next cell

    Else

      ' Exibe mensagem de erro mais específica
      MsgBox "Erro: Planilha '" & wsName & "' não encontrada em um dos arquivos.", vbCritical, "Erro"

    End If

  Next wsName

  Application.ScreenUpdating = True ' Habilita atualização da tela

  MsgBox "Processo concluído!" ' Mensagem de conclusão

  Exit Sub ' Sai da sub-rotina

ErrHandler: ' Etiqueta para tratamento de erros
  MsgBox "Ocorreu um erro: " & Err.Description, vbCritical, "Erro" ' Exibe mensagem de erro

End Sub

' Função para verificar se uma planilha existe em um arquivo
Function PlanilhaExiste(nomePlanilha As String, nomeArquivo As String) As Boolean

  On Error Resume Next ' Ignora erros
  PlanilhaExiste = Not IsError(Application.Match(nomePlanilha, Workbooks(nomeArquivo).Worksheets.Names, 0))
  On Error GoTo 0 ' Volta a tratar erros

End Function




segue o erro:

Anexo do post

Anexos

© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal