Llamar macro con valores de celda

Tengo el siguiente código que ejecuta una macro al cambiar el volor de una celda en un derterminado rango:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("k5:k300")) Is Nothing Then
Exit Sub
End If '
If Target >= 0 Then
Call Busca
End If '
End Sub
Lo que necesito es que al modificar otro rango de celdas distinto llame a otra macro.

1 Respuesta

Respuesta
1
Tines que agregarle al codigo  otra sentencia IF = SI.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("k5:k300")) Is Nothing Then
Exit Sub
End If '
If Target >= 0 Then
Call Busca
End If '

If Intersect(Target, Range("b5:b300")) Is Nothing Then 'modificas es rango
Exit Sub
End If '
If Target >= 0 Then
Call Buscar2 ' llamas a la macro de decees
End If '

End Sub
Hola parmijo, gracias por tu respuesta, modifiqué los rangos pero la segunda macro no funciona, directamente no se activa. No soy muy entendido en el tema, pero ¿ el error no está en los "exit sub" ?.
Modifica esta parte de la siguiente forma:

If Intersect(Target, Range("b5:b300")) Is Nothing Then 'modificas es rango
Exit Sub
else
If Target >= 0 Then
Call Buscar2 ' llamas a la macro de decees
End If '
End If
Amigo, hice la modificación que me indicaste, pero sigue sin funcionar.
Bueno ya se en donde estaba el error, prueba de la siguiente forma:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("k5:k300")) Is Nothing Then
GoTo saltar:
End If '
If Target >= 0 Then
Call Busca
End If '
saltar:
If Intersect(Target, Range("b5:b300")) Is Nothing Then 'modificas es rango
Exit Sub
End If '
If Target >= 0 Then
Call Buscar2 ' llamas a la macro de decees
End If '
End Sub
Ahora funciona perfectamente!!. Solamente quisiera me aclares una cosa más, como puedo hacer para la macro funcione solo con números, ya que si ingreso una letra o borro algun valor en alguna celda de los rangos que elegí, también se dispara la macro.
Verifica de la siguiente forma
If Intersect(Target, Range("k5:k300")) Is Nothing Then
GoTo saltar:
End If '
valor = Target.Value
If Target >= 0 Then
If valor >= 1 Then
'Call Busca
End If
End If '
saltar:
If Intersect(Target, Range("b5:b300")) Is Nothing Then 'modificas es rango
Exit Sub
End If '
valor = Target.Value
If Target >= 1 Then
If valor >= 1 Then
'Call Buscar2 ' llamas a la macro de decees
End If
End If '
salir:
End Sub
Ahora no funciona. Con este código no llame ninguna de las macros.
Le falta el comienzo:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("k5:k300")) Is Nothing Then
GoTo saltar:
End If '
valor = Target.Value
If Target >= 0 Then
If valor >= 1 Then
'Call Busca
End If
End If '
saltar:
If Intersect(Target, Range("b5:b300")) Is Nothing Then 'modificas es rango
Exit Sub
End If '
valor = Target.Value
If Target >= 1 Then
If valor >= 1 Then
'Call Buscar2 ' llamas a la macro de decees
End If
End If '
salir:
End Sub
Disculpa ... parece que ando en otra:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo salir:
Dim valor As Long
If Intersect(Target, Range("k5:k300")) Is Nothing Then
GoTo saltar:
End If '
valor = Target.Value
If Target >= 0 Then
If valor >= 1 Then
'Call Busca
End If
End If '
saltar:
If Intersect(Target, Range("b5:b300")) Is Nothing Then 'modificas es rango
Exit Sub
End If '
valor = Target.Value
If Target >= 1 Then
If valor >= 1 Then
'Call Buscar2 ' llamas a la macro de decees
End If
End If '
salir:
End Sub
El códigos funcionan excepto con valor "0". Si cambio el If Valor y el If target por >= 0, funciona ,  no  llama  la  macro  cuando ingreso  otro  valor  que no se número, pero se ejecuta la macro al borrar algún valor de los rangos elegidos.
Para que funcione hay que hacerle una pequeña modificacion:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo salir:
Dim valor As Long
If Intersect(Target, Range("k5:k300")) Is Nothing Then
GoTo saltar:
End If '
valor = Target.Value
If Target >= 0 Then
If valor >= 0 Then
'Call Busca
End If
End If '
saltar:
If Intersect(Target, Range("b5:b300")) Is Nothing Then 'modificas es rango
Exit Sub
End If '
valor = Target.Value
If Target >= 0 Then
If valor >= 0 Then
'Call Buscar2 ' llamas a la macro de decees
End If
End If '
salir:
End Sub
La macro funciona al ingresar un numero debido a que hay una declaracíon de la variable valor de tipo long cuyo valor solamente puede ser numerico. Si no es numerico produce un error y termina la macro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas