Como ejecutar una macro cuando el Valor de una celda es igual al valor de una celda de un rango

Soy nuevo en esto y no me aclaro. Quiero ejecutar tres macros diferentes si el valor de una celda coincide con el valor de cualquier celda dentro de 4 diferentes rangos.

Tengo la casilla c3 que es una validación de datos en formato lista. Pues mi idea es que cuando cambio el valor de esta casilla mediante la ejecución de la lista me busque el nuevo valor introducido en 4 rangos diferentes. Si lo encuentra en el primer rango me ejecuta una macro, si lo hace en el segundo rango ejecuta otra macro diferente si así llegar hasta los 4 rangos.

Las macros la tengo creadas sin problemas pero no se hacer la comparación y la ejecución de la macros.

Alguna idea como os he dicho soy completamente nuevo he probado esto pero ni siquiera soy capaz de hacerlo para que ejecute una sola macro

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "c3" Then
If Target.Value = Range(n107, n141) Then Call Distribuidor
End If
End Sub

1 respuesta

Respuesta

Espero estés bien.

Te paso unas lineas de código para ver si logras hacer lo que necesitas.

Sub Macro1()

'Si C3 es igual a LUCAS, entonces

If Range("C3") = "LUCAS" Then

'Que salgo un cartel emergente que dice C3 es igual a LUCAS

MsgBox ("C3 es igual a LUCAS")

'Si no es igual a LUCAS, entonces que salga un cartel emergente que dice C3 no es igual a LUCAS

Else
MsgBox ("C3 NO es igual a LUCAS")
End If

End Sub

Tendrías que reemplazar los carteles emergentes por tus macros. Por ejemplo por Call Distribuidor.

Ademas debes establecer tu rango. Yo lo hice en C3.

Bendiciones!

Lucas.

Buenas días, muchas gracias por tu respuesta funciona pero no es exactamente
lo que quería, a ver si me sé explicar mejor.


En la casilla c3 he aplicado mediante la validación de datos una lista con 25
nombres. Ahora quiero que el valor que seleccione en la C3. Me lo busque en un
rango B102 hasta B132 si lo encuentra me llama a una macro1 sino lo encuentra que busque en el rango C102 hasta C132 si lo encuentra llama a la macro2 sino lo encuentra busca en un nuevo rango D102 hasta D132 si lo encuentra llama a la macro3 sino lo encuentra que busque en el ultimo rango E102 hasta E132 y aplique a la macro4.

Espero haberme explicado un poco mejor

Y muchas gracias por la respuesta

Saludos,

Espero estés bien.

Adjunto el código y luego el ejemplo.

Sub Buscar1()
Dim RANGO1 As Variant
Dim BUSCO As Range
DATO = Range("C3")
RANGO1 = Range("B102:B132").Value
Set BUSCO = Sheets("Hoja1").Range("RANGO1").Find(DATO, LookIn:=xlValues, lookat:=xlWhole)
If Not BUSCO Is Nothing Then
BUSCO.Select
MsgBox ("RANGO 1 = El dato está en la celda " & BUSCO.Address)
'Call MACRO 1
Else
Call Buscar2
End If
End Sub
Sub Buscar2()
Dim RANGO2 As Variant
Dim BUSCO As Range
DATO = Range("C3")
RANGO2 = Range("C102:C132").Value
Set BUSCO = Sheets("Hoja1").Range("RANGO2").Find(DATO, LookIn:=xlValues, lookat:=xlWhole)
If Not BUSCO Is Nothing Then
BUSCO.Select
MsgBox ("RANGO 2 = El dato está en la celda " & BUSCO.Address)
'Call MACRO 2
Else
Call Buscar3
End If
End Sub
Sub Buscar3()
Dim RANGO3 As Variant
Dim BUSCO As Range
DATO = Range("C3")
RANGO2 = Range("D102:D132").Value
Set BUSCO = Sheets("Hoja1").Range("RANGO3").Find(DATO, LookIn:=xlValues, lookat:=xlWhole)
If Not BUSCO Is Nothing Then
BUSCO.Select
MsgBox ("RANGO 3 = El dato está en la celda " & BUSCO.Address)
'Call MACRO 4
Else
Call Buscar4
End If
End Sub
Sub Buscar4()
Dim RANGO4 As Variant
Dim BUSCO As Range
DATO = Range("C3")
RANGO2 = Range("E102:E132").Value
Set BUSCO = Sheets("Hoja1").Range("RANGO4").Find(DATO, LookIn:=xlValues, lookat:=xlWhole)
If Not BUSCO Is Nothing Then
BUSCO.Select
MsgBox ("RANGO 4 = El dato está en la celda " & BUSCO.Address)
'Call MACRO 4
Else
MsgBox ("NO SE ENCONTRARON DATOS QUE CONCIDAN CON LA CELDA C3")
End If
End Sub

Ahora te paso un linck con el ejemplo: https://www.dropbox.com/s/scshw7rw73ll030/Buscar%20Valor%20y%20Ejecutar.xlsm

Bendiciones!

Lucas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas