teste e atribuição ...
 
Notifications
Clear all

teste e atribuição de valores com função ou Set

3 Posts
2 Usuários
0 Reactions
494 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Ola.
O alexandrevba e gtsalikis me falaram para substituir as linhas de testes dos if´s por funções.
antes não tinha necessidade, mas como fui adicionar mais coisas acabou complicando.

agora tenho que fazer os mesmos testes varias vezes durante a macro
mas não tenho ideia de como fazer essas funções
são apenas testes e atribuição de valores em variáveis

mas são muitas variáveis e ficaria complicado torna-las publicas
será que existe algo como Set para função interna na própria macro?

e eu vou ter que sequencia-las
tipo
teste1:teste2:teste3 ...
teste2:teste3:teste1 ...
teste3:teste2:teste1 ...
...
uma delas é essa " a mais simples":

If ZigO = False Then
    If Coi = Ocf Then
       Coi = Oci + Zig
        end if
Else
    If Coi = Oci Or Coi = Ocf Then
           Zig = Zig * -1: Coi = Coi + Zig
         If Op = 0 Then Loi = Loi + Lig: Ddo = 1 
     End If
End If

Ela não tem que retornar valores,
Tem apenas que atribuir valores nas variáveis se a condição for verdadeira.

.Até...

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 29/04/2014 2:05 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Edcronos,

Bom Dia!

Seu post está muito genérico... seria algo mais ou menos assim:

'Supondo que todas as variável são do tipo Integer (exceto a variável ZigO)

Sub Teste (ByVal XZig0 as Boolean, ByVal XCoi As Integer, ByVal XOcf As Integer, ByVal XOci As Integer, ByVal XZig as Integer, ByVal XOp as Integer, ByVal XLoi as Integer, ByVal XLig as Integer,ByVal XDdo as Integer)
    If XZigO = False Then
        If XCoi = XOcf Then
           XCoi = XOci + Zig
            end if
    Else
        If XCoi = XOci Or XCoi = XOcf Then
               XZig = XZig * -1: XCoi = XCoi + XZig
             If XOp = 0 Then XLoi = XLoi + XLig: XDdo = 1
         End If
    End If

Nas outras partes do código onde é necessário fazer os diversos testes, basta chamar a rotina, passando os parâmetro:

Call Teste (False, 8, 5, 2, 4, 5, 2, 6,2)

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 30/04/2014 7:35 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Obrigado pela resposta.
Todas as variáveis som long e algumas byte,
a zigo é para saber se entra no teste ou não, algo como ordem de prioridade

eu pensei que teria algo mais simples
eu tornei as variáveis publicas e criei sub macros

Mas mesmo assim ficou algo difícil de fazer funcionar
Em serie e com os testes repetidos funciona bem
mas cada teste acaba se repetindo 5 vezes.

acho que vou ter que quebrar a cabeça para diminuir isso.
já que pelo contexto da pergunta a resposta foi, vou marcar como resposta certa.

Até mais

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 30/04/2014 11:48 am