Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Erro 91 em VBA

Dúvidas gerais sobre Excel
luizmarcon
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Seg Jun 27, 2011 5:04 pm

Erro 91 em VBA

Mensagem por luizmarcon »

Prezados, boa tarde.

Estou com dificuldade com um cadastro de formulários que fiz no excel 2010.Sou iniciante e fiz estes códigos com auxílio de outras planilhas baixadas.

Aparece Erro de tempo em execução '91' A variavel do objeto ou a variavel do bloco with não foi definida.

Minha planilha está em xlsm pois só consigo salva-la assim, como disponibilizo ela para vocês?

Grato.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1561
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: Erro 91 em VBA

Mensagem por Mauro Coutinho »

luiz, como fez adaptações utilizando códigos de outras planilhas, só pelo erro que postou fica dificil dar uma resposta correta, a única coisa referente a este erro é que temos uma variavel não declarada ou definida, que pode ser tanto o nome de uma aba, a referencia a uma celula ou range, entree outros, alem do fato de estar usando a versão excel 2010, aonde temos incompatibilidades entre alguns objetos com versões anteriores, referencias que não existem nas versões atuais, então sugiro, seguir a rotina passo a passo para saber exatamente em qual linha se da o erro, abra o editor do VBA e na rotina inicial, vá teclando "F8" e a rotina será executada passo a passo, linha por linha e irá parar na linha de erro que fcará destacada, então poste aqui, que se possivel analizaremos, apesar de o ideal seria postar seu modelo,mas como não possuo a versão 2010, a mesma não rodará na v 2003 nem na 2007.

abraços


luizmarcon
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Seg Jun 27, 2011 5:04 pm

Re: Erro 91 em VBA

Mensagem por luizmarcon »

Mauro, bom dia. Realmente era isso, estava com um erro de digitação em uma variável, após concertar este problema, consegui rodar a macro e o formulário.

Muito obrigado pela ajuda Mauro.
Editado pela última vez por luizmarcon em Ter Jun 28, 2011 10:57 am, em um total de 2 vezes.


luizmarcon
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Seg Jun 27, 2011 5:04 pm

Re: Erro 91 em VBA

Mensagem por luizmarcon »

Prezados, Fiz varias correções e meu código inteiro está abaixo:

Apresenta ainda algun problemas como por exemplo não carrega a lista de estados no formulário, o código do correspondente não aparece no formulário, e ai ser acrescentado um nele, vai pra celula "CodCalc" e não pra celular A2 que deveria ser.

Código: Selecionar todos

Private Sub UserForm_Dados_Initialize()

AtualizaListaEstados

CadastroCodigo = Worksheets("Dados").Range("CodCalc").Value + 1

TextBox_Cod.Value = CadastroCodigo

End Sub
Sub AtualizaPlanilha()

With Dados

Cells(DadosLinha, 1).Value = TextBox_Cod.Value
Cells(DadosLinha, 2).Value = TextBox_Nome.Value
Cells(DadosLinha, 3).Value = TextBox_Contato.Value
Cells(DadosLinha, 4).Value = TextBox_email.Value
Cells(DadosLinha, 5).Value = TextBox_comarca.Value
Cells(DadosLinha, 6).Value = ComboBox_estado.Value
Cells(DadosLinha, 7).Value = TextBox_avenida.Value
Cells(DadosLinha, 8).Value = TextBox_num.Value
Cells(DadosLinha, 9).Value = TextBox_cep.Value
Cells(DadosLinha, 10).Value = TextBox_oab.Value
Cells(DadosLinha, 11).Value = TextBox_Banco.Value
Cells(DadosLinha, 12).Value = TextBox_ag.Value
Cells(DadosLinha, 13).Value = TextBox_conta.Value
Cells(DadosLinha, 14).Value = TextBox_op.Value
Cells(DadosLinha, 15).Value = TextBox_valor.Value
End With

End Sub
Sub AtualizaControles()

With Dados
    TextBox_Cod.Value = Cells(DadosLinha, 1).Value
    TextBox_Nome.Value = Cells(DadosLinha, 2).Value
    TextBox_Contato.Value = Cells(DadosLinha, 3).Value
    TextBox_email.Value = Cells(DadosLinha, 4).Value
    TextBox_comarca.Value = Cells(DadosLinha, 5).Value
    ComboBox_estado.Value = Cells(DadosLinha, 6).Value
    TextBox_avenida.Value = Cells(DadosLinha, 7).Value
    TextBox_num.Value = Cells(DadosLinha, 8).Value
    TextBox_cep.Value = Cells(DadosLinha, 9).Value
    TextBox_oab.Value = Cells(DadosLinha, 10).Value
    TextBox_Banco.Value = Cells(DadosLinha, 11).Value
    TextBox_ag.Value = Cells(DadosLinha, 12).Value
    TextBox_conta.Value = Cells(DadosLinha, 13).Value
    TextBox_op.Value = Cells(DadosLinha, 14).Value
    TextBox_valor.Value = Cells(DadosLinha, 15).Value
End With
TextBox_Nome.SetFocus

End Sub

Sub AtualizaListaEstados()
    With ComboBox_estado
        .AddItem "Acre"
        .AddItem "Alagoas"
        .AddItem "Amapá"
        .AddItem "Amazonas"
        .AddItem "Bahia"
        .AddItem "Ceará"
        .AddItem "Distrito Federal"
        .AddItem "Espírito Santo"
        .AddItem "Goiás"
        .AddItem "Maranhão"
        .AddItem "Mato Grosso"
        .AddItem "Mato Grosso do Sul"
        .AddItem "Minas Gerais"
        .AddItem "Pará"
        .AddItem "Paraíba"
        .AddItem "Paraná"
        .AddItem "Pernambuco"
        .AddItem "Piauí"
        .AddItem "Rio de Janeiro"
        .AddItem "Rio Grande do Sul"
        .AddItem "Rio Grande do Norte"
        .AddItem "Rondônia"
        .AddItem "Roraima"
        .AddItem "Santa Catarina"
        .AddItem "São Paulo"
        .AddItem "Sergipe"
        .AddItem "Tocantins"
    End With
End Sub

Private Sub ComboBox_pesquisa_Change()

If ComboBox_pesquisa.ListIndex = -1 Then
    Exit Sub
End If

DadosLinha = ComboBox_pesquisa.ListIndex + 2
AtualizaControles

End Sub

Private Sub Excluir_Click()
Dim Retorno

If ComboBox_pesquisa.ListIndex = -1 Then
    Retorno = MsgBox(" Nenhum correspondente selecionado", vbOKOnly + vbCritical, "Erro")
    Exit Sub
End If

If MsgBox("Confirma exclusão?", vbYesNo + vbCritical, "Confirma") = vbNo Then
    RestauraControles
    Exit Sub
End If

With Dados
    .Rows(DadosLinha).Delete
End With

Retorno = MsgBox("Exclusão Efetuada", vbOKOnly + vbCritical, "Sucesso")

RestauraControles
AtualizaComboBoxPesquisa
CadastroCodigo = Worksheets("Dados").Range("CodCalc").Value + 1
TextBox_Cod.Value = CadastroCodigo

End Sub

Private Sub Fechar_Click()

Unload UserForm_Dados

End Sub

Sub RestauraControles()

TextBox_Nome.Value = ""
TextBox_Contato.Value = ""
TextBox_email.Value = ""
TextBox_comarca.Value = ""
TextBox_avenida.Value = ""
TextBox_num.Value = ""
TextBox_cep.Value = ""
TextBox_oab.Value = ""
TextBox_Banco.Value = ""
TextBox_ag.Value = ""
TextBox_conta.Value = ""
TextBox_op.Value = ""
TextBox_valor.Value = ""

With ComboBox_estado
    .ListIndex = -1
    .Value = ""
End With

ComboBox_pesquisa.ListIndex = -1
TextBox_Nome.SetFocus

End Sub

Private Sub Limpar_Click()
RestauraControles
CadastroCodigo = Worksheets("Dados").Range("CodCalc").Value + 1

End Sub

Sub AtualizaComboBoxPesquisa()

TotalRegistros = Worksheets("Dados").UsedRange.Rows.Count

If TotalRegistros > 1 Then
    With ComboBox_pesquisa
        .Enabled = True
        .RowSource = "Dados!B2:B" & TotalRegistros
    End With
Else
    With ComboBox_pesquisa
        .Enabled = False
    End With
End If

End Sub


Private Sub Salvar_Click()
If TextBox_Nome.Value = "" Then
  MsgBox "Informe os dados", vbOKOnly + vbCritical, "Dados"
  TextBox_Nome.SetFocus
  Exit Sub
End If

If MsgBox("Confirma Atualização ?" & Chr(13) & Chr(13) & _
    "Código: " & TextBox_Cod.Value & Chr(13) & Chr(13) & _
    "Nome: " & TextBox_Nome.Value, vbYesNo + vbQuestion, "Confirmação") = vbNo Then
    TextBox_Nome.SetFocus
    Exit Sub
End If

If ComboBox_pesquisa.ListIndex = -1 Then
    DadosLinha = Worksheets("Dados").UsedRange.Rows.Count + 1
    Worksheets("Dados").Range("CodCalc").Value = CadastroCodigo
End If

AtualizaPlanilha
MsgBox "Atualização Efetuada"
RestauraControles
AtualizaComboBoxPesquisa
CadastroCodigo = Worksheets("Dados").Range("CodCalc").Value + 1
TextBox_Cod.Value = CadastroCodigo

End Sub
Editado pela última vez por luizmarcon em Ter Jun 28, 2011 10:59 am, em um total de 2 vezes.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


luizmarcon
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Seg Jun 27, 2011 5:04 pm

Re: Erro 91 em VBA

Mensagem por luizmarcon »

Desculpe sempre estar colocando mais coisa aqui, mas é que estou olhando linha por linha desse código.

Meu módulo está assim:

Código: Selecionar todos

Option Explicit
Public DadosLinha As Integer
Public CadastroCodigo As Integer
Public Dados As Worksheet
Public TotalRegistros As Integer
Public Endereco As String
Public CaixaDialogo As FileDialog

Sub AtivaFormulario()

UserForm_Dados.Show

End Sub


Debora
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Ter Jun 12, 2018 1:07 am

Re: Erro 91 em VBA

Mensagem por Debora »

Olá, estou tendo o mesmo problema mas não identifico o erro:

Selection.Find(What:=mesdata, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Erro 91 em VBA

Mensagem por webmaster »

O metodo Find retorna um objeto do tipo Range, que se nao encontrado, retorna nulo. Por isso o Activate no final da erro. Tente algo assim:

Código: Selecionar todos

resultado = Selection.Find(What:=mesdata, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

If Not resultado Is Nothing Then
    ' coloque seu codigo aqui
End If
O teste eh por sua conta, ok?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder