¿Cómo combinar los operadores "Or" y "And" en una sentemcia "IF"?

Haber si me pueden orientar...

Poseo una macro de excel en la cual se deben ejecutar un procedimiento apartir de 3 condiciones de las cuales 1 es obligatoria para que ejecute una u otra cosa las otras dos son solo como criterios...

Las cosa es así:

En la celda B1 se coloca un texto (primer variable y es la que se avalúa para ejecuta la macro) que puede ser Compra o Venta.

En la celda B2 se pueden colocar uno de dos textos (2da. Y 3ra. Variable) que son CCF o Fcatura

La sentencia por el momento se tiene así:

If ActiveSheet.Range("B2")="CCF" and ActiveSheet.Range("B1")="Compra" Then

Ejecuta la macro para el procedimiento establecido en compra.

ElseIF ActiveSheet.Range("B2")="Factura" and ActiveSheet.Range("B1")="Compra" Then   

Ejecuta la macro para el procedimiento establecido en compra.

Como pueden observar ambas sentencias ejecutan el mismo procedimiento para Compra, pero igual necesito identificar cuál corresponden a CCF y cúales a Factura. De esta manera funciona bien, lo que yo quiero es siplificar y en vez de tener dos sentencias que me ejecutan lo mismo, tener una para ambos casos.

Pensaba hacer algo así:

If ActiveSheet.Range("B2")="CCF" Or ActiveSheet.Range("B2")="Factura" And_ ActiveSheet.Range("B1")="Compra" Then

Ejecuta la macro para el procedimiento Compra

Como pueden observar la parte "And ActiveSheet.Range("B1")="Compra" Then" es la variable obligatoria que jecutaría la macro para el procedimiento Compra ya que si fuera "And ActiveSheet.Range("B1")="Venta" Then" entonces ejecutaría la macro para el procedimiento Venta.

Como pueden identificar, las variables CCF y Factura son comunes para ambos procedimientos (Compra y Venta) Pero el procedimiento a ejecutar dependerá de estos últimos...

1

1 respuesta

Respuesta
1

Hay dos maneras en la primera se usa la función and y luego un if si cualquiera de las dos condiciones es verdadera ejecuta una macro, en la segunda, si la condición compra se cumple lo que sigue es validar la condición factura o ccf cualquiera de las dos que sea verdadera activara una macro diferente.

Sub concatena_cortes()
Set funcion = WorksheetFunction
With ActiveSheet
    condicion = funcion.And(.Range("B2") = "CCF", .Range("B1") = "Compra")
    condicion2 = funcion.And(.Range("B2") = "Factura", .Range("B1") = "Compra")
End With
If condicion = True Then
'ejecuta macro
ElseIf condicion2 = True Then
'ejecuta macro
End If
End Sub
'------------------------------------------------------
Sub concatena_cortes1()
With ActiveSheet
    If .Range("B1") = "Compra" Then
        If .Range("B2") = "CCF" Then Call macro1
        If .Range("B2") = "factura" Then Call macro2
    End If
End With
End Sub

¡Gracias! 

Muy buenas opciones James Bond. Evaluaré ambas haber con cuál me sale mejor...Aunque la segunda me llama la atención con los If anidados....

Espero te sirvan y por favor no olvides evaluar la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas