- 07 Jan 2020 às 10:17
#51495
Bom dia,
Sou iniciante no VBA e domino pouco o excel. Fui me aventurar e agora estou com um erro frequente.... Poderiam me ajudar?
Estou com um problema com o meu cadastro, esta aparecendo um erro. Estou enviando a descrição abaixo:
A mensagem de erro que aparece é: Erro em tempo de execução '-2147417848 (80010108)': O método '_Default' do objeto 'Range' falhou
Esse erro aparece na terceira repetição para salvar o preenchimento do formulário na planilha. Na linha Cells(totalregistro, 1) = txt_in_codigo
O código que estou usando é:
Private Sub bt_in_salvar_Click()
'referenciando a planliha
Set infra1 = Worksheets("pl_infraestrutura")
'abaixo está criada a avariavel total de registros onde irá armazenar a quantidade de linhas que foram utilizadas e somando +1 vai para que será preenchida
totalregistro = Worksheets("pl_infraestrutura").UsedRange.Rows.Count + 1
Worksheets("pl_infraestrutura").Select
txt_in_data = Date
txt_in_time = Time
'código para geração de ID automática codificação automatica dos cadastros.
Dim contador As Integer
Dim linha As Integer
linha = 2
Range("a1048576").Select
Selection.End(xlUp).Select
If ActiveCell = "id" Then
contador = 0
Else
contador = ActiveCell.Value
End If
contador = contador + 1
txt_in_codigo = contador
'apartir daqui começa a gravação dos dados
Cells(totalregistro, 1) = txt_in_codigo
Cells(totalregistro, 2) = txt_in_data
Cells(totalregistro, 3) = txt_in_time
Cells(totalregistro, 4) = txt_in_usuario_logado
Cells(totalregistro, 5) = cx_in_tipo_area
Cells(totalregistro, 6) = cx_in_modalidade
Cells(totalregistro, 7) = cx_in_valor_m2
Cells(totalregistro, 8) = cx_in_ref
'mensagem de gravação concluída
MsgBox "Dados gravados com sucesso"
'limpar dados das caixas
cx_in_tipo_area = ""
cx_in_modalidade = ""
cx_in_ref = ""
cx_in_valor_m2 = ""
txt_in_responsavel = txt_in_usuario_logado
txt_in_codigo = ""
txt_in_data = ""
txt_in_time = ""
'colocar o cursor na caixa nome
cx_in_tipo_area.SetFocus
'código para geração de ID automática (codificação automatica dos cadastros. Não registra na planilha, apenas mostra o cídogo no formulario.
contador = contador + 1
txt_in_codigo = contador
'aparecer a data após finalizar o salvamento
txt_in_data = Date
txt_in_time = Time
totaldelinhas = Worksheets("pl_infraestrutura").UsedRange.Rows.Count
cx_in_localizar.RowSource = "pl_infraestrutura!e2:e" & totaldelinhas
cx_in_localizar_codigo.RowSource = "pl_consumiveis!a2:a" & totaldelinhas
End Sub
Quando substituo o código "Cells (totalregistro, 1) = txt_in_codigo" por "Range (totalregistro,1) = txt_in_codigo" o erro passa a ser em tempo de execução '1004': o método 'Range" do objeto '_Global' falhou.
Espero que possam me ajudar! Obrigado!
Sou iniciante no VBA e domino pouco o excel. Fui me aventurar e agora estou com um erro frequente.... Poderiam me ajudar?
Estou com um problema com o meu cadastro, esta aparecendo um erro. Estou enviando a descrição abaixo:
A mensagem de erro que aparece é: Erro em tempo de execução '-2147417848 (80010108)': O método '_Default' do objeto 'Range' falhou
Esse erro aparece na terceira repetição para salvar o preenchimento do formulário na planilha. Na linha Cells(totalregistro, 1) = txt_in_codigo
O código que estou usando é:
Private Sub bt_in_salvar_Click()
'referenciando a planliha
Set infra1 = Worksheets("pl_infraestrutura")
'abaixo está criada a avariavel total de registros onde irá armazenar a quantidade de linhas que foram utilizadas e somando +1 vai para que será preenchida
totalregistro = Worksheets("pl_infraestrutura").UsedRange.Rows.Count + 1
Worksheets("pl_infraestrutura").Select
txt_in_data = Date
txt_in_time = Time
'código para geração de ID automática codificação automatica dos cadastros.
Dim contador As Integer
Dim linha As Integer
linha = 2
Range("a1048576").Select
Selection.End(xlUp).Select
If ActiveCell = "id" Then
contador = 0
Else
contador = ActiveCell.Value
End If
contador = contador + 1
txt_in_codigo = contador
'apartir daqui começa a gravação dos dados
Cells(totalregistro, 1) = txt_in_codigo
Cells(totalregistro, 2) = txt_in_data
Cells(totalregistro, 3) = txt_in_time
Cells(totalregistro, 4) = txt_in_usuario_logado
Cells(totalregistro, 5) = cx_in_tipo_area
Cells(totalregistro, 6) = cx_in_modalidade
Cells(totalregistro, 7) = cx_in_valor_m2
Cells(totalregistro, 8) = cx_in_ref
'mensagem de gravação concluída
MsgBox "Dados gravados com sucesso"
'limpar dados das caixas
cx_in_tipo_area = ""
cx_in_modalidade = ""
cx_in_ref = ""
cx_in_valor_m2 = ""
txt_in_responsavel = txt_in_usuario_logado
txt_in_codigo = ""
txt_in_data = ""
txt_in_time = ""
'colocar o cursor na caixa nome
cx_in_tipo_area.SetFocus
'código para geração de ID automática (codificação automatica dos cadastros. Não registra na planilha, apenas mostra o cídogo no formulario.
contador = contador + 1
txt_in_codigo = contador
'aparecer a data após finalizar o salvamento
txt_in_data = Date
txt_in_time = Time
totaldelinhas = Worksheets("pl_infraestrutura").UsedRange.Rows.Count
cx_in_localizar.RowSource = "pl_infraestrutura!e2:e" & totaldelinhas
cx_in_localizar_codigo.RowSource = "pl_consumiveis!a2:a" & totaldelinhas
End Sub
Quando substituo o código "Cells (totalregistro, 1) = txt_in_codigo" por "Range (totalregistro,1) = txt_in_codigo" o erro passa a ser em tempo de execução '1004': o método 'Range" do objeto '_Global' falhou.
Espero que possam me ajudar! Obrigado!