Ir ao conteúdo
  • Cadastre-se

Excel Planilha controle - programação vba


Posts recomendados

Pessoal boa noite.

Utilizo uma planilha para controle de material onde a mesma possui formulario de saída e formulário de entrada de materiais. Alguns dados o preenchimento é obrigatorio. Porém na planilha formulário entrada de materiais o campos com preenchimento obrigatório estão todos preenchidos e mesmo assim esta aparecendo a mensagem Existem dados obrigatórios não preenchidos. Verifique. 
Se possivel alguem pode me ajudar com esse problema, desde já obrigado pelo apoio e ajuda.

 

Sub GRAVAR()

Dim material    As String
Dim status      As String
Dim qtde        As Integer

material = form_saida.Range("E5").Text
status = form_saida.Range("G16").Text
qtde = var.Range("B2").Value

Application.ScreenUpdating = False

If qtde = 0 Then

MsgBox "Existem dados obrigatórios não preenchidos. Verifique.", vbCritical, "Dados ausentes"

Else

If material <> status Then
If status = "CORRIGIR" Then


MsgBox "Verifique o tipo de material e o centro de custo. Divergência foi encontrada.", vbCritical, "Erro"


Else

    Sheets("ENTRADAS").Select
    Rows("3:3").Select
    Selection.EntireRow.Hidden = True
    Rows("2:4").Select
    Selection.EntireRow.Hidden = False
    Range("A3:T3").Select
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    Selection.Copy
    Rows("4:4").Select
    Selection.Insert Shift:=xlDown
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Rows("3:3").Select
    Selection.EntireRow.Hidden = True
    Range("A4").Select
    Sheets("FORMULÁRIO ENTRADA DE MATERIAL").Select
    Range("B5,F5,C7,C13,C15,E15,C16,C18,E18,C20,C22,C24").Select
    Range("C24").Activate
    Selection.ClearContents
    Range("B5").Select
    
    MsgBox "Dados salvos com sucesso.", vbInformation, "Dados gravados"

End If
End If

Application.ScreenUpdating = True

End If

End Sub

Link para o comentário
Compartilhar em outros sites

Sugestão: disponibilize diretamente aqui no fórum uma amostra do seu arquivo Excel, com botão para carregar o Form que está apresentando o problema e informe com exatidão quais os campos de preenchimento obrigatório.

 

Esclareça o que você quer dizer com "Porém na planilha formulário entrada de materiais ..." Você se refere a uma planilha, a um UserForm ou ... ?

 

Em qtde = var.Range("B2").Value, esclareça sobre a variável var, que não está declarada e nenhum objeto/valor está atribuído a ela no seu código.

 

dicas:

1. para responder clique na caixa Responder, localizada abaixo da última postagem

2. ao publicar código aqui no fórum, selecione-o e clique no ícone <> localizado no menu da caixa de resposta

Link para o comentário
Compartilhar em outros sites

Olá boa noite.
Conforme solicitado segue anexo cópia da planilha controle de entrada e saída de materiais. Na planilha formulário entrada de material todos os campos na cor cinza o preenchimento é obrigatório os demais campos são preenchidos de forma automatica, em seguida ao clicar no botão gravar todos os dados são salvos na planilha entradas. porém depois de preenchidos os dados aparece a mensagem do VBA alertando que todos os campos é obrigatorio sendo que os mesmos não estão vazios.

Na planilha formulário saída de material está tudo certo e os dados depois de lançados são salvos na planilha saídas, as configurações da planilha saídas foram copiadas para o VBA da planilha entrada, acredito que ao copiar essas programação VBA ocorreu algum erro, por isso aparece essa mensagem. Desde já obrigado pela ajuda e apoio.

CONTROLE ALMOXARIFADO - UTD BRUMADO 2020 VERSÃO 2.1.rar

Link para o comentário
Compartilhar em outros sites

Em 14/02/2020 às 22:51, Luciano Piccolo Neto disse:

 ... Porém na planilha formulário entrada de materiais o campos com preenchimento obrigatório estão todos preenchidos e mesmo assim esta aparecendo a mensagem ...

 

A origem do problema é que a variável qtde retorna sobre o preenchimento de campos da planilha FORMULÁRIO SAIDA DE MATERIAL e não  da planilha FORMULÁRIO ENTRADA DE MATERIAL, por isso o código retorna a mensagem e interrompe a execução.

 

 

Link para o comentário
Compartilhar em outros sites

@osvaldomp Boa tarde. Tentei alterar a variável para corrigir o erro da planilha FORMULÁRIO ENTRADA DE MATERIAL, porém não estou conseguindo. Se possível você poderia me informar qual a variável correta para corrigir esse problema. Desde já obrigado pelo apoio e ajuda.

Link para o comentário
Compartilhar em outros sites

 

Segue uma sugestão para verificar se os 11 campos pintados de cinza na planilha FORMULÁRIO ENTRADA DE MATERIAL estão preenchidos.

 

substitua esta linha

If qtde = 0 Then

 

por esta

If Application.CountA([C7], [C13:C24], [F5], [E15], [E18]) < 11 Then

 

Com a substituição acima sugerida as linhas abaixo ficarão sem efeito e poderão ser excluídas.

'Dim qtde        As Integer

'qtde = var.Range("B2").Value

Link para o comentário
Compartilhar em outros sites

@osvaldomp Boa noite Osvaldo, alterei as configurações da linha conforme sugerido, porém ao clicar no botão gravar o erro continua. A planilha possui 12 campos pintados na cor cinza. Segue anexo planilha com as alterações realizadas.

 

If Application.CountA([B5], [C7], [C13:C24], [F5], [E15], [E18]) < 12 Then

CONTROLE ALMOXARIFADO - UTD BRUMADO VERSÃO 2.1.rar

Link para o comentário
Compartilhar em outros sites

Baixei o seu arquivo e vi que as alterações que você fez no código estão corretas.

 

Os 12 campos estão preenchidos, cliquei no botão GRAVAR a mensagem não foi exibida

Em seguida, limpei um dos 12 campos, aí sim, aparece a mensagem e o código é interrompido. Ou seja, aqui está funcionando corretamente agora.

 

Com você não funciona dessa forma ?

Link para o comentário
Compartilhar em outros sites

@osvaldomp Fiz o teste deixando um campo vazio, aparece a mensagem de erro informando que possui campos sem preenchimento, após preencher todos os campos ao clicar no botão GRAVAR a macro não roda. Já na planilha formulário de saída a macro funciona normalmente limpando os dados e salvando-os na guia saídas.

Link para o comentário
Compartilhar em outros sites

Ótimo, então. O seu teste mostrou a você que o problema de aparecer a mensagem indesejada sobre a falta de preenchimento foi resolvido.

 

E sim, se os 12 campos forem preenchidos a macro roda!

 

Para testar acrescente duas caixas de mensagem conforme em vermelho abaixo. Ou coloque-as em outras posições em que você desejar.

Se os  12 campos estiverem preenchidos então as duas caixas serão exibidas, o que demonstra que o código é executado. No entanto, se ao menos um dos campos estiver vazio, então a caixa de alerta é mostrada e a execução é finalizada, e nesse caso as duas caixas de mensagem não serão exibidas.

 

MsgBox "Existem dados obrigatórios não preenchidos. Verifique.", vbCritical, "Dados ausentes"

Else
MsgBox "Caixa 1"

 

Application.ScreenUpdating = True
MsgBox "Caixa 2"
End If

 

 

Agora, se o código roda mas não apresenta o resultado desejado, então é uma outra situação que nada tem a ver com o problema que você levantou ao abrir este tópico, e nesse caso você precisa revisar a construção da sua macro.

Link para o comentário
Compartilhar em outros sites

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