Prezados Boa noite
Dentro do meu projeto tenho um formulário onde o usuário pode cadastrar o padrão de horário de serviço que podem ser de três tipos
folga na semana
folga no sábado
folga no domingo
Sempre informando quantos dias trabalha para estar de folga em cada um destes tipos. Na planilha cada registro ganha um código, e o formulário recebe as informações para cadastrar, alterar e excluir da planiha , cada rotina em seu respectivo botão. Antes de cadastrar, criei a rotina para verificar se o código já existe assim que o codigo é digitado no txtbox.
Aqui começa o meu problema. Se o código pesquisado já está cadastrado, ele encontra e popula o formulário normalmente (ótimo). Se não existe ele dá Erro em tempo de execução "91" a variável do objeto ou a variável do bloco whith não foi encontrada. Quando deveria perguntar se quer cadastrar.
Quando mando depurar a linha que fica em amarelo é
linha = Sheets("Horarios").Range("A2:A" & UltLin).Find(what:=codigo).Row
E não sei mais onde mexer para funcionar
Segue abaixo o código
Private Sub txtCod_AfterUpdate()
Application.ScreenUpdating = False
'Código sai da macro caso seja atualizado campo vazio
If Me.txtCod = "" Then
MsgBox "Por favor indique um código", vbCritical, Atenção
Exit Sub
End If
btnCadastrar.Enabled = True
btnAlterar.Enabled = True
btnExcluir.Enabled = True
btnSair.Enabled = True
Dim Plan As Worksheet
Dim linha As Long
Dim codigo As Integer
Dim Tipo_folga As Object
Dim UltLin As Long
Sheets("Horarios").Select
codigo = txtCod
UltLin = Sheets("Horarios").Cells(Rows.Count, "A").End(xlUp).Row
'localiza um registro sem o Loop pelo método Find
linha = Sheets("Horarios").Range("A2:A" & UltLin).Find(what:=codigo).Row
On Error GoTo nao_encontrado
txtSabNome = Sheets("Horarios").Cells(linha, 2)
txtDomNome = Sheets("Horarios").Cells(linha, 3)
txtMST = Sheets("Horarios").Cells(linha, 4)
txtMSF = Sheets("Horarios").Cells(linha, 6)
txtSIT = Sheets("Horarios").Cells(linha, 7)
txtSIF = Sheets("Horarios").Cells(linha, 9)
txtDt = Sheets("Horarios").Cells(linha, 10)
txtDF = Sheets("Horarios").Cells(linha, 12)
Exit Sub
nao_encontrado:
Dim respostas As String 'Cria a variável respostas
respostas = MsgBox("Código não encontrado, Deseja cadastrar?", vbYesNo)
If respostas = vbYes Then 'Se a resposta for sim então
txtCod = txtCod.Value
txtDomNome = ""
txtSabNome = ""
txtMST = ""
txtMSF = ""
txtSIT = ""
txtSIF = ""
txtDt = ""
txtDF = ""
End If
If respostas = vbNo Then
txtDomNome = ""
txtSabNome = ""
txtMST = ""
txtMSF = ""
txtSIT = ""
txtSIF = ""
txtDt = ""
txtDF = ""
txtCod.SetFocus
End If
Application.ScreenUpdating = True
End Sub
vocês conseguem me dizer aonde está o erro?
A parte problemática do projeto está em anexo.
Desde já agradeço pela atenção e imensa ajuda.
Creuza Moura
Postado : 07/06/2018 5:45 pm