none
Uso do GoTo RRS feed

  • Pergunta

  • Olá,

     

    Preciso de ajuda para terminar um programa em VBA:

    Tenho uma lista de transações de venda, uma de email MKT e outra de promoções, onde cada promoção tem um ou mais ítens.

    Ao selecionar a promoção, são mostrados todos os produtos que dela fazem parte, assim como a data inicial e final.

    Na busca, o usuário pode selecionar por todas as transações no período, somente de produtos na promoção (qtde de ítens vendidos) ou vendas únicas de produtos na promoção.

    Estou usando o IF no início de de acordo com a opção assinalada e uso o Goto para executar a consulta desejada e depois peço para voltar onde estava e continuar a busca. Vou ver se consigo ser mais específica:

     

    If Me.Opt_Periodo.Value = True Then
                    GoTo Escolha_período
                    ElseIf Me.Opt_Promocao.Value = True Then
                        GoTo Escolha_promoção
                        ElseIf Opt_VendasUnicas.Value = True Then
                            GoTo Escolha_Promoção_Unica
                Else: Exit Sub
                End If

    Cada vez que é localizada nova compra, há um outro GoTo que verifica se o cliente recebeu email MKT e depois deve voltar às buscas de onde estava.

    Estou com dificuldade pois dei o nome de Voltar: para todas elas e está dando duplicidade e não sei como resolver o problema pois, a rotina é comum a todas elas.

    O que quero fazer é que assim que achar o valor que estou procurando o for seja interrompido e volte onde estava, alimentando uma variável.

    Não sei se consegui me fazer entender. Caso queiram, posso enviar o código que estou trabalhando.

     

    Obrigada.

     

     

    quarta-feira, 7 de janeiro de 2009 15:00

Todas as Respostas

  • Olá Panddora,

    a forma mais organizada e correta seria você criar sub-rotinas separadas para cada tratamento, como uma Sub Escolha_Promocao e uma Sub Escolha_Promocao_Unica. Em vez de usar o GoTo para executar um trecho de código e outro GoTo para voltar ao If, basta chamar a sub-rotina para que ela seja processada e o código volte exatamente ao ponto onde estava no procedimento principal.
    sexta-feira, 9 de janeiro de 2009 11:46
    Moderador
  •  Olá, Luiz

    Para isso será necessário criar variáveis globais?

    Obrigada pela ajuda.

     


    Pand
    sexta-feira, 30 de janeiro de 2009 20:15