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"
' Verifica se as planilhas existem em ambos os arquivos
If PlanilhaExiste(wsName, "Vendas&Faturamento25.xlsx" And PlanilhaExiste(wsName, "Estoque25.xlsx" Then
Set wsVendas = Workbooks("Vendas&Faturamento25.xlsx".Worksheets(wsName)
Set wsEstoque = Workbooks("Estoque25.xlsx".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".End(xlUp).Row)
lastRowEstoque = WorksheetFunction.Min(maxRows, wsEstoque.Cells(wsEstoque.Rows.Count, "C".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: