Ir ao conteúdo

Excel Erro tempo de execução '-2147417848 - O método 'Add' do objeto 'ListRows' falhou


Ir à solução Resolvido por BiaMidori,

Posts recomendados

Postado

Olá, pessoal, bom dia!

 

Construí um código que possibilita ao usuário adicionar e alterar itens de uma lista suspensa diretamente por um UserForms, sem precisar manipular a tabela. Os códigos funcionam, mas somente até certo momento. Depois começam a aparecer erros, as vezes meu arquivo de excel é inclusive fechado. Não estou entendo a causa. Inicialmente apareceu o erro:

 

"Erro em tempo de execução '-2147417848 (80010108) 'O método 'Add' do objeto 'ListRows' falhou.


Vi que uma das possíveis causas poderia ser a quantidade de variáveis utilizada e a definição para elas utilizadas. Tentei reduzi-las e, se usadas, defini-las corretamente. Com isso, testei novamente e novamente funcionou até um momento, depois tive erro. Esta é a linha que está dando problema
Set NovaLinha = Tabela2.ListRows.Add

 

Alguém saberia me dizer o que preciso fazer para corrigir? 

OBS: O usuário manipula o UserForm na Planilha1 e as informação são armazenada na Planilha2.Sistema 32 bts.

----------------------
Eis o código abaixo:


Private Sub btn_adicionarcodigo_Click()

 

Dim a As String
a = combobox_nome.Value
Dim oRange As Range
Set oRange = Planilha2.Range("E:AE").Find(what:=a, lookat:=xlPart)

 

If a = oRange.Value Then

Dim Tabela2 As ListObject 


Dim NovaLinha As ListRow
Set Tabela2 = Planilha2.ListObjects("T" & a) 
Set NovaLinha = Tabela2.ListRows.Add


NovaLinha.Range(1, 1) = Me.box_codigo
                    
Me.box_codigo = ""
 

End Sub

Postado

Bom dia, @BiaMidori

 

Esse é um erro de diagnóstico geralmente difícil e tem a ver com Userforms versus criação de novos objetos (.Add), sejam eles controles, shapes, etc. Não tinha visto acontecer ainda com simples adição de linha em ListObject.

Tente contornar o problema ativando a planilha imediatamente antes de começar a adicionar a linha.

Se possível, anexe seu modelo problemático para darmos uma olhada... 👍

 

____________

P.S.: ia me esquecendo: outra coisa que recomendo principalmente em códigos mais extensos e com sucessivas edições/reedições é fazer uma faxina de vez em quando indo no núcleo do código no arquivo, usando a antiga e bem conhecida ferramenta "Excel VBA Code Cleaner" do Rob Bovey. Ela é um suplemento gratuito para o VBA e após instalada fica disponível no menu Ferramentas>Clean Project do VBE. Infelizmente só está disponível para o Office instalado na versão 32bits. você encontra ela no site oficial em: Excel VBA Code Cleaner

  • Curtir 1
  • Solução
Postado

@Edson Luiz Branco Eu criei um novo documento, diminui o número de variáveis, e adicionei a função Application.ScreenUpdating = False no início do código e Application.ScreenUpdating = True no final do código. Coloquei as variáveis também depois do With Planilha1. Não descobri exatamente a causa, e não sei exatamente qual foi a solução, mas agora está funcionado, rsrs. Obrigada!

  • 1 ano depois...
Postado

@BiaMidori @Edson Luiz Branco
Olá, pessoal!

 

Estou com o mesmo problema, não sei como faço para arrumar e preciso de ajuda.

O problema só ocorre quando eu, via botão do formulário, chamo a macro que insere a linha na tabela. Se eu simplesmente rodar a macro não há problema algum, porém se eu rodar ela via um 'call' do botão, o Excel dá esse erro e simplesmente fecha.

 

Conto com a ajuda de vocês,

Gabriel

Postado

Consegui arrumar!

Primeiro descobri o motivo do erro estar acontecendo (mais ou menos). Eu tinha, no meu UserForm, uma referência, em uma Listbox, à minha tabela. Sempre que eu inseria uma linha na tabela acontecia algum conflito com o Listbox e dava erro.

Pra arrumar tive que referenciar o valor da tabela para a Listbox de uma forma diferente. Antes eu simplesmente colocava: ...rowsource = "[nome da tabela]"

Agora tive que usar: Me.lista_tblfDieta.List = TabelaDieta.DataBodyRange.Value — sendo lista_tblfDieta o nome da minha listbox, e 'TabelaDieta' o nome da variável que eu dei para a tabela, sendo: 'Dim TabelaDieta as ListObject'.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!