Página 1 de 1

Erro de definição de aplicativo ou definição de objeto

Enviado: 30 Mar 2022 às 10:48
por JulioLopes
Prezados, bom dia.

Estou escrevendo um código de para criação de formulário no VBA, e após a escrita e realização do teste aparece o erro a seguir (Erro em tempo de execução '1004' - Erro de definição de aplicativo ou de definição de Objeto).

Poderiam me auxiliar? tenho pouco conhecimento em VBA.

Segue abaixo o código

Private Sub CommandButton1_Click()

linha = Range("A1").End(xlDown).Row + 1
Cells(linha, 1) = caixa_empregado.Value
Cells(linha, 2) = caixa_selecao.Value
Cells(linha, 3) = caixa_cartao.Value
Cells(linha, 4) = caixa_cpf.Value
Cells(linha, 5) = caixa_matri.Value
Cells(linha, 6) = caixa_obs.Value

nome = caixa_empregado.Value
empresa = caixa_selecao.Value

End Sub

Private Sub Userform_Initialize()

ult_linha = Sheets("base").Range("b2").End(xlDown).Row

caixa_selecao.RowSource = "base!B3:B" & ult_linha

End Sub

Private Sub CommandButton2_Click()

Unload Registro_cartao

End Sub

Re: Erro de definição de aplicativo ou definição de objeto

Enviado: 30 Mar 2022 às 11:34
por osvaldomp
Olá, @JulioLopes .

1. ao executar o código no modo Depurar (via F8), qual é o valor da variável "linha" após o comando linha = Range("A1").End(xlDown).Row + 1 ?

2. se você comentar a linha em que ocorre o erro, a linha seguinte executa ou também retorna erro?

3. sugestão: disponibilize o seu arquivo Excel.

Re: Erro de definição de aplicativo ou definição de objeto

Enviado: 30 Mar 2022 às 13:15
por JulioLopes
@osvaldomp , boa tarde.

O valor a ser utilizado na linha 1 deverá ser o preenchido no formulário.

Sim, o erro continua ocorrendo.

Re: Erro de definição de aplicativo ou definição de objeto

Enviado: 30 Mar 2022 às 18:11
por osvaldomp
JulioLopes escreveu: 30 Mar 2022 às 13:15 O valor a ser utilizado na linha 1 deverá ser o preenchido no formulário.
Sim, mas não foi isso que eu perguntei. A pergunta que fiz foi "qual o valor da variável linha", pois suspeitei que esse seria o problema.
E realmente é, pois o valor da variável que o seu código retorna é 1048577, ou seja, uma linha a mais do que a quantidade total de linhas da planilha, que é 1048576, por isso o erro.
E ainda que retornasse 1048576 esse não seria um valor compatível com a sua planilha.

Reformulei o seu código, veja abaixo. Se você quiser testar coloque-o no lugar do existente.
Código: Selecionar todos
Private Sub CommandButton1_Click()
 Dim LR As Long
  With Range("Tabela1")
   LR = IIf(.Cells(1, 1) = "", 1, .Cells(0, 2).End(4).Row - 1)
   .Cells(LR, 1) = caixa_selecao.Value
   .Cells(LR, 2) = caixa_empregado.Value
   .Cells(LR, 3) = caixa_cartao.Value
   .Cells(LR, 4) = caixa_cpf.Value
   .Cells(LR, 5) = caixa_matri.Value
   .Cells(LR, 6) = caixa_obs.Value
  End With
End Sub