none
VBA - Lista Suspensa de Base de Dados RRS feed

  • Pergunta

  • Pessoal, bom dia.
    Estou criando uma planilha com VBA para que os supervisores de vendas de nossa empresa possam preencher com o Budget previsto de vendas para o próximo ano.
    Eu utilizei uma planilha que disponibilizaram na Internet e acabei moldando conforme nossa necessidade.
    Porém, nesta planilha (que era de cadastro de fornecedores) ele alimenta cada linha com o código do cliente + 1 a cada nova inserção.
    O que eu preciso é o seguinte...cada supervisor tem a sua lista de clientes/item, e eu preciso que ele selecione o cliente que poderá estar listado numa das abas da planilha, relacionado com o item e ele preencha apenas o MÊS, ANO, VALOR R$ e VALOR QTD.
    O primeiro filtro deveria ser o supervisor, depois o cliente.
    Na tela de cadastro que tenho aqui não tem lista suspensa para selecionar.
    Alguém poderia me socorrer ?

    https://uploadbr.com/18a13f6370e7ab7b

    Obrigado.
    quinta-feira, 24 de maio de 2018 13:16

Todas as Respostas

  • Consegui colocar a lista, porém, ao testar para que faça a alteração, ele da erro conforme imagem.
    quinta-feira, 24 de maio de 2018 14:38
  • Quando dizes:

    "If optAlterar.Value Then", no fundo não estás a dizer nada ao código, tens que dar uma condição de comparação.

    Por exemplo:

    If optAlterar.Value =True Then

    ou

    If optAlterar.Value <> "" Then

    Verifica se é esse o problema, pois a falta de um comparador resulta em erro de compilação porque o código não tem variáveis de comparação.

    A mensagem de erro aparece nessa linha porque é a 1ª a conter erro, depois aparecerá o mesmo erro em "If optnovo.Value" e em "If optexcluir.Value"


    Marca como resposta se te for útil.

    M_A_S_L



    • Editado M_A_S_L quinta-feira, 24 de maio de 2018 21:55
    quinta-feira, 24 de maio de 2018 21:52
  • Quando dizes:

    "If optAlterar.Value Then", no fundo não estás a dizer nada ao código, tens que dar uma condição de comparação.

    Por exemplo:

    If optAlterar.Value =True Then

    ou

    If optAlterar.Value <> "" Then

    Verifica se é esse o problema, pois a falta de um comparador resulta em erro de compilação porque o código não tem variáveis de comparação.

    A mensagem de erro aparece nessa linha porque é a 1ª a conter erro, depois aparecerá o mesmo erro em "If optnovo.Value" e em "If optexcluir.Value"


    Marca como resposta se te for útil.

    M_A_S_L



    Olá, boa noite.
    Na verdade o que disse não está correto. Caso a variável seja Booleana, ou também o valor de um OptionButton, não é necessário inserir o comparador, basta a própria variável.

    Para o erro citado no post original, parece que não foram passados todos os parâmetros necessários para a função "SalvaRegistro" ou o tipo de variáveis é incompatível. Sugiro que verifique isto.

    Abraço.


    Filipe Magno

    sexta-feira, 25 de maio de 2018 01:09
  • Boa tarde Filipe.

    Se a variável for Boleana, tem obrigatoriamente que ter um critério para saber se é Verdadeiro ou Falso.

    Talvêz o Filipe tenha razão, porém veja:

    "Se o Valor de OptAlterar", 

    Call SalvaRegisto

    Que aplicação responde a isto?

    Por outras palavras, está a dizer-me que a linha a seguir é executada pelo VBA?

    "If OptAlterar.Value Then"


    M_A_S_L


    • Editado M_A_S_L domingo, 27 de maio de 2018 15:21
    domingo, 27 de maio de 2018 15:15
  • Boa tarde Filipe.

    Se a variável for Boleana, tem obrigatoriamente que ter um critério para saber se é Verdadeiro ou Falso.

    Talvêz o Filipe tenha razão, porém veja:

    "Se o Valor de OptAlterar", 

    Call SalvaRegisto

    Que aplicação responde a isto?

    Por outras palavras, está a dizer-me que a linha a seguir é executada pelo VBA?

    "If OptAlterar.Value Then"


    M_A_S_L


    Bom, para encerrar a discussão que não tem haver com o tópico (e para contribuir com o fórum), faça o teste e comprove:

    Dim var As Boolean
    var = True
    
    If var Then MsgBox "Relamente funciona sem inserir a condição para variáveis booleanas!", vbExclamation, "Funciona!"

    Obs.:esta variável pode ser o valor de um CheckBox ou um OptionButton marcado no formulário.

    A respeito da dúvida do tópico insisto ainda na sugestão que dei anteriormente, de verificar os argumentos.


    Filipe Magno

    segunda-feira, 28 de maio de 2018 03:11
  • Filipe,

    Olhe o código do Mateus e diga-me onde é que está:

    optAlterar = True or false,  or anything else

    Você atribuiu um valor mas o Mateus não, portanto no seu código a comparação existe, no do Mateus não.


    M_A_S_L

    segunda-feira, 28 de maio de 2018 19:18
  • Filipe,

    Olhe o código do Mateus e diga-me onde é que está:

    optAlterar = True or false,  or anything else

    Você atribuiu um valor mas o Mateus não, portanto no seu código a comparação existe, no do Mateus não.


    M_A_S_L

    Como a variável começa com "opt..." eu suponho que se refere ao resultado de um "OptionButton" que intrinsecamente é uma saída Booleana (eu não baixei o arquivo, apenas estou analisando o código postado). Se marcado é True e se desmarcado "False". É simples de testar, faça o teste e comprove. De toda forma, não é este o ponto de dúvida do tópico (ele não disse que houve problema nesta linha) e não faz sentido ficar discutindo isso.

    Filipe Magno

    segunda-feira, 28 de maio de 2018 19:25
  • Contrariamente ao que disse na resposta anterior eu penso que vem a proposito da dúvida.

    Eu presumi o mesmo em relação ao objeto e sendo marcado ou desmarcado faz sentido colocar um "If" para executar a rotina seja qual for o valor?

    Ele precisa de dizer corre esta rotina se for verdadeiro (ou falso, claro), caso contrario não faz nada.


    M_A_S_L

    segunda-feira, 28 de maio de 2018 19:51