Visual Basic - Reducir codigo

Life is soft - evento anual de software empresarial
   
Vista:

Reducir codigo

Publicado por Patricio  (1 intervención) el 31/01/2008 05:45:45
Alguien podri ayudarme a reducir este codigo, parece poco pero tengo muchos renglones con lo mismo para diferentes variables, no se de que manera podria aplicar un codigo mas reducido y rapido pero que haga lo mismo.
Saludos..
If IsNull(Eq1) Or Eq1 = "0" And Eq2 <> "0" And Eq3 <> "0" Then
Text1 = (((Eq2 + Eq3) / 2) + ((Eq4 + Eq5 + Eq6 + Eq7) / 4) + ((eql1 + eql2) / 2) + MEQ1) / 4
Else
If IsNull(Eq2) Or Eq2 = "0" And Eq1 <> "0" And Eq3 <> "0" Then
Text1 = (((Eq1 + Eq3) / 2) + ((Eq4 + Eq5 + Eq6 + Eq7) / 4) + ((eql1 + eql2) / 2) + MEQ1) / 4
Else
If IsNull(Eq3) Or Eq3 = "0" And Eq1 <> "0" And Eq2 <> "0" Then
Text1 = (((Eq2 + Eq1) / 2) + ((Eq4 + Eq5 + Eq6 + Eq7) / 4) + ((eql1 + eql2) / 2) + MEQ1) / 4
Else
If IsNull(Eq1) Or Eq1 = "0" And IsNull(Eq2) Or Eq2 = "0" And IsNull(Eq3) Or Eq3 = " 0" Then
Text1 = (((Eq4 + Eq5 + Eq6 + Eq7) / 4) + ((eql1 + eql2) / 2) + MEQ1) / 3
Else
Text1 = (((Eq1 + Eq2 + Eq3) / 3) + ((Eq4 + Eq5 + Eq6 + Eq7) / 4) + ((eql1 + eql2) / 2) + MEQ1) / 4

End If
End If
End If
End If
Por cierto. me urge
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Reducir codigo

Publicado por cmgcharli (1 intervención) el 31/01/2008 09:03:22
Una pequeña reduccion en tu ejemplo es que ((Eq4 + Eq5 + Eq6 + Eq7) / 4) + ((eql1 + eql2) / 2) + MEQ1) siempre se repite igual luego podemos definirlo como una constante, cuyo valor se almacene en una variable y susituir la en el procedimiento anterior

Otra idea seria definir el codigo anterio como una funcion a la cual le pases los valores de las distintas variables y que te devuelva un resultado y asi la puedas llamar siempre que la necesistes y no tener que repetir el codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reducir codigo

Publicado por Richard Montero (25 intervenciones) el 31/01/2008 23:15:53
Patricio:

Intentá con lo siguiente
Todo ese código sustituilo por lo siguiente:

********************************************************************
Dim miVarD As Double
miVarD = 0
If IsNull(Eq1) Or Eq1 = "0" Then Eq1 = 0 Else miVarD = miVarD + 1
If IsNull(Eq2) Or Eq2 = "0" Then Eq2 = 0 Else miVarD = miVarD + 1
If IsNull(Eq3) Or Eq3 = "0" Then Eq3 = 0 Else miVarD = miVarD + 1
If miVarD > 0 Then
Text1 = ((Eq1 + Eq2 + Eq3) / miVarD + (Eq4 + Eq5 + Eq6 + Eq7) / 4 + (eql1 + eql2) / 2 + MEQ1) / 4
Else
Text1 = ((Eq4 + Eq5 + Eq6 + Eq7) / 4 + (eql1 + eql2) / 2 + MEQ1) / 3
End If
********************************************************************

Saludos,

Richard
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar