Olá, bom dia a todos.
Tenho o código abaixo, que faz uma procura na planilha 3 e retorna os dados procurados na planilha 1. É uma triplice procura. Baseia-se em procurar um nome vinculado a uma data inicial e outra data final. Está funcionando quase perfeitamente, só tem um porém : quando a procura não encontra nenhum dado, mesmo assim a macro informa: "Os dados solicitados estão prontos". Gostaria que, nesse caso, a macro informa-se que nada foi encontrado. Alguém pode me ajudar? Grata.
Eis o código:
Sub GerarHistorico()
ActiveSheet.Unprotect (123)
Application.ScreenUpdating = False
'Application.EnableEvents = False
Sheets("HistoricoEscolar").Select
Dim lastRow As Long
Dim lastResultRow As Long
Dim x As Long
' Verifica qual a ultima célula preenchida
lastRow = Plan3.Cells(Rows.Count, 2).End(xlUp).Row 'Planilha 26 Controle Total, Col B
' Apaga valores anteriores
Plan1.Range("a12:G50").ClearContents
Plan1.Range("a52:G65").ClearContents
lastResultRow = 12 'O resultado sera colocada a partir da linha 12 da Planilha 1 Histórico Escolar
' Ciclo em todas as linhas
For x = 11 To lastRow 'a linha 11 é a primeira Linha dos dados da pequisa (Plan 3 Controle Total)
If Plan3.Cells(x, 4).Value >= CDate(Plan1.Range("j3")) And Plan3.Cells(x, 4) <= CDate(Plan1.Range("j4")) And Plan3.Cells(x, 16) = Plan1.Range("j2").Value Then '1 coluna pequisa
'Dados, dtas Relatorio, Data Inicial Dados, datas Relatorio, Data Final Dados,alunos Relatorio Aluno
'Plan 1 HistóricoEscolar Plan 3 Controle Total
Plan1.Cells(lastResultRow, 1).Value = Plan3.Cells(x, 2).Value 'Ano
Plan1.Cells(lastResultRow, 2).Value = Plan3.Cells(x, 3).Value 'Semestre
Plan1.Cells(lastResultRow, 3).Value = Plan3.Cells(x, 8).Value 'Disciplina
Plan1.Cells(lastResultRow, 4).Value = Plan3.Cells(x, 9).Value 'Sigla
Plan1.Cells(lastResultRow, 5).Value = Plan3.Cells(x, 14).Value 'Carga Horaria
Plan1.Cells(lastResultRow, 6).Value = Plan3.Cells(x, 17).Value ' Média da notas
Plan1.Cells(lastResultRow, 7).Value = Plan3.Cells(x, 18).Value 'Situação
lastResultRow = lastResultRow + 1
End If
Next
MsgBox ("Os dados solicitados estão prontos")
ActiveSheet.Protect (123)
Application.ScreenUpdating = True
End Sub
Postado : 05/05/2016 5:54 am