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

 
Postado : 29/04/2014 2:05 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed 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)
 
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

 
Postado : 30/04/2014 11:48 am