Compartilhar via

Falhas na Execução de Código VBA no Microsoft Excel

Anônima
2023-07-28T17:29:45+00:00

Título Original: Erro em tempo de execução '1004': o método 'Range' do objeto '_Global' falhou

Olá, estou enfrentando dificuldades em executar o código VBA abaixo:

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

linha = Sheets("Movimentos").Range("A100000").End(xlUp).Row + 1

Sheets("Movimentos").Cells(linha, 3).Value = Caixa_Item.Value

Sheets("Movimentos").Cells(linha, 6).Value = Cx_Qtd.Value + 0

Sheets("Movimentos").Cells(linha, 5).Value = Cx_Sub.Value

Sheets("Movimentos").Cells(linha, 4).Value = Cx_Desc.Value

Sheets("Movimentos").Cells(linha, 8).Value = Cx_Req.Value

Sheets("Movimentos").Cells(linha, 2).Value = Cx_Ende.Value

Sheets("Movimentos").Cells(linha, 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

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

1 resposta

Classificar por: Mais útil
  1. Anônima
    2023-07-28T18:52:58+00:00

    Olá Naylson Viana, tudo bem?

    Seja bem vindo(a) a Comunidade Microsoft!

    Amigo, precisei um pouco de IA pra entender 100% o problema, pois também não consegui executar como exemplo estes comandos, por isso a resposta precisará ser um pouco mais longa, melhor executar as soluções por partes, mas vejamos abaixo:

    O código VBA fornecido parece ser principalmente funcional, mas há alguns problemas em potencial:

    Na sub-rotina principal Sub Atualiza_Caixa_Listagem_Movimentações(), o nome da função é grafado com acento em "Movimentações", mas nas instruções Call dentro dos eventos de clique do botão (Botao_Entrada_Click() e Botao_Saida_Click()), é grafado sem acento em "Movimentações". O VBA não diferencia maiúsculas de minúsculas, mas diferencia acentos. Certifique-se de que os nomes das funções correspondam exatamente, incluindo acentos, para evitar possíveis problemas.

    Na sub-rotina principal, há uma referência a um objeto chamado Movimentos, mas não parece estar declarado em nenhum lugar do código fornecido. Isso pode ser definido em uma parte diferente da pasta de trabalho ou em uma referência externa. Certifique-se de que o objeto Movimentos esteja adequadamente definido e acessível neste contexto.

    Existem várias referências de planilhas no código (por exemplo, Sheets("Movimentos"), Sheets("Caixa_Movimentos"), Sheets("Base_Mesclado")). Certifique-se de que esses nomes de planilha existam na pasta de trabalho em que o código está sendo usado. Além disso, certifique-se de que essas planilhas contenham os dados e colunas relevantes aos quais o código está se referindo.

    O código usa referências a intervalos nomeados como Botao_Entrada, Botao_Saida, Cx_Sub, Cx_Qtd, Cx_Desc, etc. Certifique-se de que esses intervalos nomeados estejam definidos na pasta de trabalho e se refiram às células ou controles corretos.

    Alguns procedimentos do manipulador de eventos são definidos, mas deixados vazios (por exemplo, Label3_Click(), Label4_Click(), etc.). Se esses manipuladores de eventos devem fazer algo específico, certifique-se de que o código seja adicionado dentro deles.

    Algumas variáveis como Cx_Req, Cx_Ende, Cx_Data e outras são usadas sem serem declaradas no trecho de código fornecido. Certifique-se de que essas variáveis sejam declaradas antes de serem usadas para evitar erros de tempo de execução.

    Como disse, ficou um pouco longo, será necessário verificar por partes todos esses quesitos, pra que a execução possa ocorrer em tempo certo e sem falhas, me avise onde foi que encontrou maior dificuldade ou se conseguiu uma execução perfeita depois das alterações e analises, ok?

    Fico no seu aguardo. Um forte abraço!

    Se a resposta te auxiliou, não deixe por favor de "Marcar Como Resposta", por que a mesma poderá ajudar outros amigos com a mesma dúvida ou dúvidas semelhantes, obrigado!

    Esta resposta foi útil?

    0 comentários Sem comentários