Ejecutar macro de acuerdo a una condición

Dante muy buenos días

Experto pudieras apoyarme en ayudarme con una macro en la cual quiero ejecutar una macro de acuerdo el numero de cuenta.

1.- Si la cuenta que esta en la columna B existe un numero de cuenta 1233, o 1244, quiero ejecutar una macro de otro libro que no esta abierto. Este ciclo se puede repetir muchas veces dado que puedo tener muchas las dos cuentas. Modulo 3 Macro validacion_pasivos del libro ACTIVOS.

2.- Ahora bien si tengo 1233, y 2258, debo de ejecutar una macro que se llama validación_activos del libro ACTIVOS. Y si es la cuenta 2258, ejecutar La segunda macro que esta en el modulo dos del mismo libro que se llama validación_cuenta, libro ACTIVOS, este proceso se ejecutara para una macro y si encuentra otra cuenta ejecutar la segunda.

Te comento que mis macros una vez que son ejecutadas se guardan los cambios en la misma macro y se cierra la macro, por eso es necesario que esta condición entre en un ciclo, ya que cada cuenta se debe de validar ciertos criterios que están programadas ya en las macros.

1 respuesta

Respuesta
1

Te anexo la macro

Sub EjecutarMacros()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    '
    ChDir l1.Path & "\"
    For i = 2 To h1.Range("B" & Rows.Count).End(xlUp).Row
        Select Case h1.Cells(i, "B")
            Case 1233
                Run "ACTIVOS.xlsm!validacion_pasivos"
                Run "ACTIVOS.xlsm!validacion_activos"
            Case 1244
                Run "ACTIVOS.xlsm!validacion_pasivos"
            Case 2258
                Run "ACTIVOS.xlsm!validacion_activos"
                Run "ACTIVOS.xlsm!validacion_cuenta"
        End Select
    Next
End Sub

Veo que pusiste 2 veces las cuentas 1233 y 2258, entonces supongo que si es la cuenta 1233 hay que ejecutar las macros "validacion_pasivos" y "validacion_activos".

El archivo con las macros "ACTIVOS.xlsm" deberá estar en la misma carpeta, lo puedes dejar abierto o cerrado, si está cerrado, la macro lo abrirá.

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Dante Muchas gracias por la atención y gracias por responder mi Pregunta te lo agradezco.

Pero me esta ejecutando todas las cuentas, pero quiero  colocar dos restricciones

1.- si en el caso 1233 existe referencia que esta en la columna C y existe un registro de concepto en la columna D de '0005, ejecutar macro, de lo contrario no ejecutar y validar la siguiente cuenta.

Lo mismo sucede con los demás casos, por favor si no es tanta molestia la mía.

Te anexo la macro actualizada, solamente se ejecuta si en la columna D tiene el texto "0005"

Sub EjecutarMacros()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    '
    ChDir l1.Path & "\"
    For i = 2 To h1.Range("B" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "C") = "0005" Then
            Select Case h1.Cells(i, "B")
                Case 1233
                    Run "ACTIVOS.xlsm!validacion_pasivos"
                    Run "ACTIVOS.xlsm!validacion_activos"
                Case 1244
                    Run "ACTIVOS.xlsm!validacion_pasivos"
                Case 2258
                    Run "ACTIVOS.xlsm!validacion_activos"
                    Run "ACTIVOS.xlsm!validacion_cuenta"
            End Select
        End If
    Next
End Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

¡Gracias! Dante E POR P E R T O. Por eso eres el número 1 en racking

Dante y si para el case 2258 fuera una condición diferente podría colocar otro IF antes del Case?

2258

Podría ser algo como esto:

Sub EjecutarMacros()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    '
    ChDir l1.Path & "\"
    For i = 2 To h1.Range("B" & Rows.Count).End(xlUp).Row
        Select Case h1.Cells(i, "C")
            Case "0005"
                Select Case h1.Cells(i, "B")
                    Case 1233
                        Run "ACTIVOS.xlsm!validacion_pasivos"
                        Run "ACTIVOS.xlsm!validacion_activos"
                    Case 1244
                        Run "ACTIVOS.xlsm!validacion_pasivos"
                    Case 2258
                        Run "ACTIVOS.xlsm!validacion_activos"
                        Run "ACTIVOS.xlsm!validacion_cuenta"
                End Select
            Case "Otro"
                Select Case h1.Cells(i, "B")
                    Case 2258
                        Run "ACTIVOS.xlsm!validacion_activos"
                        Run "ACTIVOS.xlsm!validacion_cuenta"
                End Select
        End Select
    Next
End Sub

Si te faltan considerar otras condiciones, crea una nueva pregunta y me pones todo el detalle.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas