Ir ao conteúdo

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


Ir à solução Resolvido por Basole,

Posts recomendados

Postado

@Gabriel25121997

 

Eu estou enfrentando o mesmo erro, mas infelizmente ainda não consegui resolver, será que consegue me ajudar?

 

Meu código:

Option Explicit

Sub Inserir_clientes()

Dim tabela_clientes As ListObject
Dim n As Integer, id As Integer

Set tabela_clientes = Planilha3.ListObjects(1)
id = Range("ID").Value

n = tabela_clientes.Range.Rows.Count
tabela_clientes.Range(n, 1).Value = id
tabela_clientes.Range(n, 2).Value = Sistema.txt_nome.Value
tabela_clientes.Range(n, 3).Value = Sistema.cbb_sexo.Value
tabela_clientes.Range(n, 4).Value = Sistema.txt_telefone.Value
tabela_clientes.Range(n, 5).Value = Sistema.txt_cep.Value
tabela_clientes.Range(n, 6).Value = Sistema.txt_endereco.Value
tabela_clientes.Range(n, 7).Value = Sistema.txt_numero.Value
tabela_clientes.Range(n, 8).Value = Sistema.txt_bairro.Value
tabela_clientes.Range(n, 8).Value = Sistema.txt_local.Value

tabela_clientes.ListRows.Add
Range("ID").Value = id + 1

MsgBox "Cadastrado com sucesso!", vbInformation, "Informação"

End Sub

 

O objetivo é adicionar na planilha as informações do UserForm, e ele até faz isso, porém da o erro de "Tempo de execução '-2147417848 - O método 'Add' do objeto 'ListRows' falhou" não adiciona a nova linha e fecha tanto o VBA quanto a planilha... Não sei como contornar...

 

Agradeço desde já!

Postado

@Gabriel25121997 Tenho, mas é em outro módulo, nem pensei que poderia afetar esse em questão...

 

Esse módulo "Inserir_carros" adiciona o valor do campo cbb_clientes na planilha, e esse campo é atualizado com valores de uma outra planilha, como mostro no módulo "Atualizar_listclientes" um pouco mais abaixo.

Sub Inserir_carros()

Dim tabela_carros As ListObject
Dim i As Integer, idc As Integer

Set tabela_carros = Planilha4.ListObjects(1)
idc = Range("IDC").Value

i = tabela_carros.Range.Rows.Count
tabela_carros.Range(i, 1).Value = idc
tabela_carros.Range(i, 2).Value = Sistema.cbb_clientes.Value
tabela_carros.Range(i, 3).Value = Sistema.txt_modelo.Value
tabela_carros.Range(i, 4).Value = Sistema.txt_placa.Value

tabela_carros.ListRows.Add
Range("IDC").Value = id + 1

MsgBox "Cadastrado com sucesso!", vbInformation, "Informação"

End Sub

 

O campo cbb_clientes é atualizado com valores da planilha, ele é atualizado no módulo abaixo:

 

Sub Atualizar_listclientes()

Dim tabela As ListObject
Set tabela = Planilha3.ListObjects(1)

Sistema.cbb_clientes.RowSource = tabela.DataBodyRange.Address(, , , True)
Sistema.cbb_clientes.ColumnCount = 2


End Sub

 

Postado

@Gabriel25121997 Testei e nadaa!! O mesmo erro e sempre na linha "tabela_carros.ListRows.Add Range("IDC").Value = id + 1"...Se eu desativo essa linha, ai funciona! Porém preciso que ela seja adicionada e que coloque o valor nela, não sei outra forma de fazer isso sem utilizar o "ListRows.Add".

Postado

@Andreza Santos acho que o problema não é ela, o problema é, muito possivelmente, outra coisa. Tente desativar várias partes do seu código e ir testando, quando funcionar você vai saber que aquela parte que você desativou é o problema. Você consegue me enviar essa planilha pra eu ver?

Postado
Em 03/05/2021 às 08:43, Edson Luiz Branco disse:

...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... 👍

 

@Andreza Santos, tentou ativar a Planilha3 antes de executar o método Add, como eu havia dito para o outro colega?

Faça um teste:

Planilha3.Activate

 

Postado

@Andreza Santos aqui pra mim só apareceu erro na hora de atualizar, na 

Sub Atualizar_listclientes

 

Fiz umas pequenas alterações, ai funcionou sem problemas:

Ficou assim:  

 

Sub Atualizar_listclientes()
    Dim tabela      As ListObject

    Set tabela = Worksheets("Clientes").ListObjects("Clientes")
    With Sistema.cbb_clientes
        .RowSource = ""
        .Clear
        .ColumnCount = 2
        .List = tabela.DataBodyRange.Value2
    End With
End Sub

 

  • Solução
Postado

@Andreza Santos

 

Fiz alterações na sub Inserir_Clientes

 

Sub Inserir_clientes()
    Dim tabela_clientes As ListObject
    Dim n           As Integer
    Dim id          As Integer
    Dim ws          As Worksheet

    Set ws = Sheets("Clientes")
    Set tabela_clientes = ws.ListObjects("Clientes")

    id = Range("ID").Value
    With tabela_clientes
        .ListRows.Add

        n = .DataBodyRange.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

        .DataBodyRange(RowIndex:=n, columnindex:=1).Value = id
        .DataBodyRange(RowIndex:=n, columnindex:=2).Value = Sistema.txt_nome.Value
        .DataBodyRange(RowIndex:=n, columnindex:=3).Value = Sistema.cbb_sexo.Value
        .DataBodyRange(RowIndex:=n, columnindex:=4).Value = Sistema.txt_telefone.Value
        .DataBodyRange(RowIndex:=n, columnindex:=5).Value = Sistema.txt_cep.Value
        .DataBodyRange(RowIndex:=n, columnindex:=6).Value = Sistema.txt_endereco.Value
        .DataBodyRange(RowIndex:=n, columnindex:=7).Value = Sistema.txt_numero.Value
        .DataBodyRange(RowIndex:=n, columnindex:=8).Value = Sistema.txt_bairro.Value
        .DataBodyRange(RowIndex:=n, columnindex:=9).Value = Sistema.txt_local.Value

        Range("ID").Value = id + 1

        With Sistema
            .txt_nome.Text = ""
            .cbb_sexo.Text = ""
            .txt_telefone.Text = ""
            .txt_cep.Text = ""
            .txt_endereco.Text = ""
            .txt_numero.Text = ""
            .txt_bairro.Text = ""
            .txt_local.Text = ""
        End With


        Call Atualizar_listclientes

        MsgBox "Cadastrado com sucesso!", vbInformation, "Informação"

    End With
End Sub

 

*Caso o erro persista, tente deletar toda a tabela "Clientes" e inserir novamente.

  • Amei 1

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!