1
resposta

[Bug] VBA = Erro em tempo de execução '1004': O método 'Range' do objeto '_Global' falhou

Estou tentando executar esse código e não estou conseguindo, poderiam me ajudar?

Sub Atualiza_Caixa_Listagem_Movimentações()

Sheets("Movimentos").AutoFilterMode = False

If Range("Botao_Entrada").Value = True Then
    Sheets("Movimentos").UsedRange.AutoFilter 9, "Entrada"
ElseIf Range("Botao_Saida").Value = True Then
    Sheets("Movimentos").UsedRange.AutoFilter 9, "Saída"
End If


Sheets("Caixa_Movimentos").UsedRange.Clear
Sheets("Movimentos").UsedRange.Copy
Sheets("Caixa_Movimentos").Range("A1").PasteSpecial

Sheets("Movimentos").AutoFilterMode = False


linha = Sheets("Caixa_Movimentos").Range("A100000").End(xlUp).Row

Movimentos.Lista_Movimentacoes.ColumnCount = 9
Movimentos.Lista_Movimentacoes.ColumnHeads = True
Movimentos.Lista_Movimentacoes.ColumnWidths = "100;100;100;100;100;100;100;100;100"
Movimentos.Lista_Movimentacoes.RowSource = "Caixa_Movimentos!A2:J" & linha

End Sub

Private Sub Botao_Entrada_Click()

Range("Botao_Entrada").Value = True
Range("Botao_Saida").Value = False
Call Atualiza_Caixa_Listagem_Movimentações

End Sub

Private Sub Botao_Saida_Click()

Range("Botao_Saida").Value = True
Range("Botao_Entrada").Value = False
Call Atualiza_Caixa_Listagem_Movimentações

End Sub

Private Sub Caixa_Item_Change()

Cx_Sub.Value = Sheets("Base_Mesclado").Range("A:A").Find(Caixa_Item.Value).Offset(0, 4).Value
Cx_Qtd.Value = Sheets("Base_Mesclado").Range("A:A").Find(Caixa_Item.Value).Offset(0, 5).Value
Cx_Desc.Value = Sheets("Base_Mesclado").Range("A:A").Find(Caixa_Item.Value).Offset(0, 1).Value

End Sub

Private Sub CommandButton1_Click()

Controle_Itens.Show

End Sub

Private Sub CommandButton3_Click()

End Sub
Private Sub Entrada_Click()

If Caixa_Item.Value = "" Then
    MsgBox ("Prencha o campo item!")
    Exit Sub
End If

If Cx_Qtd.Value = "" Then
    MsgBox ("Preencha o campo Quantidade!")
    Exit Sub
End If

If Cx_Desc.Value = "" Then
    MsgBox ("Preencha o campo Descrição!")
    Exit Sub
End If

If Cx_Sub.Value = "" Then
    MsgBox ("Preencha o campo Subinventário!")
    Exit Sub
End If

If Cx_Req.Value = "" Then
    MsgBox ("Preencha o campo Requisição!")
    Exit Sub
End If

If Cx_Ende.Value = "" Then
    MsgBox ("Preencha o campo Endereço!")
    Exit Sub
End If

If Cx_Qtd_Aten.Value = "" Then
    MsgBox ("Preencha o campo Quantidade Atendida!")
    Exit Sub
End If


linha1 = Sheets("Movimentos").Range("A1048576").End(xlUp).Row + 1

Sheets("Movimentos").Cells(linha1, 3).Value = Caixa_Item.Value
Sheets("Movimentos").Cells(linha1, 6).Value = Cx_Qtd.Value + 0
Sheets("Movimentos").Cells(linha1, 5).Value = Cx_Sub.Value
Sheets("Movimentos").Cells(linha1, 4).Value = Cx_Desc.Value
Sheets("Movimentos").Cells(linha1, 8).Value = Cx_Req.Value
Sheets("Movimentos").Cells(linha1, 2).Value = Cx_Ende.Value
Sheets("Movimentos").Cells(linha1, 7).Value = Cx_Qtd_Aten.Value

Caixa_Item.Value = ""
Cx_Qtd.Value = ""
Cx_Sub.Value = ""
Cx_Req.Value = ""
Cx_Ende.Value = ""
Cx_Desc.Value = ""
Cx_Data.Value = ""
Cx_Qtd_Aten.Value = ""

MsgBox ("Item Enviado com Sucesso!")

Call Atualiza_Caixa_Listagem_Movimentações

End Sub

Private Sub Frame1_Click()

End Sub

Private Sub Label3_Click()

End Sub

Private Sub Label4_Click()

End Sub

Private Sub Label8_Click()

End Sub

Private Sub TextBox6_Change()

End Sub

Private Sub Todos_Click()

Call Atualiza_Caixa_Listagem_Movimentações

End Sub

Private Sub UserForm_Initialize()

Call Atualiza_Caixa_Itens

Call Atualiza_Caixa_Listagem_Movimentações

End Sub

Sub Atualiza_Caixa_Itens()

linha = Sheets("Base_Mesclado").Range("A1048576").End(xlUp).Row
Caixa_Item.RowSource = "Base_Mesclado!A2:A" & linha

End Sub
1 resposta

Olá Naylson, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

A mensagem Erro em tempo de execução '1004': O método 'Range' do objeto '_Global' falhou, geralmente ocorre quando o VBA não consegue identificar qual intervalo você está se referindo no argumento da função Range.

Sendo assim, se certifique que os intervalos estão nomeados exatamente da forma que você está passando como argumento no Range, ou seja, que tenha as mesmas acentuações, grafia, dentre outros.

Para ver o nome dos seus intervalos, acesse a guia "Fórmulas" e em seguida "Gerenciador de Nomes", e verifique se está utilizando os nomes corretos no objeto Range:

Imagem que mostra a guia fórmula e em seguida a opção Gerenciador de Nomes

Todavia, vale ressaltar que como é um assunto externo ao curso e que não tenho acesso ao cenário completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.

Espero ter ajudado.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!