Note: The other languages of the website are Google-translated. Back to English

 ¿Cómo ejecutar una macro basada en el valor de la celda en Excel?

Supongamos que tengo varios códigos de macro en mi libro de trabajo, y ahora quiero ejecutar estos códigos en función del valor de la celda. En este artículo, hablaré sobre varias situaciones que puede sufrir en su trabajo diario al usar Excel.

Ejecute o active la macro si el valor de la celda es mayor o menor que un valor específico con código VBA

Ejecute o active una macro si el valor de la celda es igual a un texto específico con código VBA


flecha azul burbuja derecha Ejecute o active la macro si el valor de la celda es mayor o menor que un valor específico con código VBA

Por ejemplo, si el valor en la celda A1 está entre 10 y 50, ejecute macro1, y si el valor es mayor que 50, ejecute macro2. Para resolver este trabajo en Excel, aplique el siguiente código VBA.

1. Haga clic con el botón derecho en la pestaña de la hoja en la que desea ejecutar la macro en función de un valor de celda y luego elija Ver código desde el menú contextual, y en el Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente código en el módulo en blanco:

Código de VBA: ejecute la macro si el valor de la celda es mayor o menor que:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
    End If
End Sub

doc ejecutar macro según el valor de celda 1

Nota:: En el código anterior:

A1 es la celda que contiene el valor específico en el que desea ejecutar la macro;

Caso 10 a 50: Macro1: significa que si el valor está entre 10 y 50, ejecute Macro1;

Caso es> 50: Macro2: significa que si el valor es mayor que 50, ejecute Macro2.

Cambie estos nombres y criterios de macro según sus necesidades, y también puede agregar más criterios siguiendo el Funda guión.

2. Luego guarde y cierre esta ventana de código, ahora, cuando el valor que ingrese esté entre 10 y 50 en la celda A1, se activará Macro1, si el valor ingresado es mayor que 50, se ejecutará Macro2.


flecha azul burbuja derecha Ejecute o active una macro si el valor de la celda es igual a un texto específico con código VBA

Si desea activar la macro basándose en un texto específico en una celda, por ejemplo, para ejecutar la macro1 si se ingresa el texto "Eliminar", y ejecutar la macro2 si se ingresa el texto "Insertar". El siguiente código puede hacerte un favor.

1. Haga clic con el botón derecho en la hoja en la que desea ejecutar la macro según el valor de la celda y luego elija Ver código desde el menú contextual, y en el Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente código en el módulo en blanco:

Código de VBA: ejecute macro si el valor de la celda es un texto específico

Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "Delete" Then
 Call Macro1
End If
If target.Value = "Insert" Then
Call Macro2
End If
End Sub 

doc ejecutar macro según el valor de celda 2

Nota:: En el código anterior, "Borrar y recuadro"Son los textos de celda en los que desea ejecutar macros según, y Macro1 y Macro2 son las macros que desea ejecutar en función del texto. Cámbielos según sus necesidades.

2. Luego guarde este código y cierre la ventana, ahora, cuando ingrese el texto “Eliminar” en la celda A1, se dispara macro1, si se ingresa el texto “Insertar”, se ejecutará macro2.


Artículos relacionados:

¿Cómo ejecutar una macro cuando el valor de la celda cambia en Excel?

¿Cómo ejecutar macro automáticamente antes de imprimir en Excel?

¿Cómo ejecutar una macro según el valor seleccionado de la lista desplegable en Excel?

¿Cómo ejecutar una macro haciendo clic en hipervínculos en Excel?

¿Cómo ejecutar una macro cuando se selecciona una hoja de un libro de trabajo?


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (18)
5 clasificado de 5 · 1 calificaciones
Este comentario fue minimizado por el moderador en el sitio
Hola, ¿qué tal si quieres ejecutar una macro basada en dos celdas? ¿Una celda está basada en texto y la otra celda tiene valores numéricos? Luego, querrá llamar a una macro si las dos celdas muestran exactamente lo que desea, como "SÍ" para la primera celda y 1 para la segunda celda, de lo contrario, aparecerá un cuadro emergente que dice "No encontrado".
Este comentario fue minimizado por el moderador en el sitio
Requisito:
Basado en la selección
Habrá una lista desplegable para las siguientes tres propiedades de la misma dimensión que se muestra a continuación.
Y habrá tres celdas derivadas que se derivarán de las celdas (G46, G47 y G48)

Escenario:
Si selecciono un valor de la lista desplegable del centro de costos, la celda derivada del centro de costos (K46) debe completarse con el valor seleccionado de la lista desplegable del centro de costos (H46) y las otras dos celdas derivadas (K47 y k48) deben quedar en blanco.

De manera similar, si selecciono el valor de la lista desplegable del administrador de presupuesto, la celda derivada del administrador de presupuesto debe completarse con el valor seleccionado de la lista desplegable del administrador de presupuesto (H47) y las otras dos celdas derivadas (K45 y k48) deben quedar en blanco.
Este comentario fue minimizado por el moderador en el sitio
Estoy trabajando con análisis de resultados. En este caso, los datos en Excel serán así: Nombre, Subnombre, Crade. Ahora, quiero encontrar todos los números aprobados o candidatos exitosos del resultado. Cómo puedo obtenerlo. Porque tengo 6 temas diferentes y sus resultados en una sola hoja de Excel. Si el estudiante reprobó en una materia, no será un estudiante exitoso. ¿Cómo eliminar su nombre en todos los temas.
Este comentario fue minimizado por el moderador en el sitio
Corrija el código para la misma hoja de trabajo.
PRIMER CÓDIGO FUNCIONANDO PERFECTAMENTE
Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Si no intersecta (objetivo, rango ("D1")) no es nada, entonces
Seleccionar rango de casos ("D1")
Caso "0.5": Mitad
Caso "1": Uno
Caso "1.25": OneTwentyFive
Fin Seleccionar
Si terminar
End Sub

EL SEGUNDO CÓDIGO NO FUNCIONA (corregir lo siguiente)
Cambio secundario privado (objetivo ByVal como rango)
Si no intersecta (objetivo, rango ("D2")) no es nada, entonces
Seleccionar rango de casos ("D2")
Caso "9.53": nuevepuntocincotres
Fin Seleccionar
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Olá, quero fazer o siguiente:
Na Celula A1, assim que ela estiver preenchida passe para a celula de baixo, no case A2.
Eu use um leitor de codigo de barras para catastrar produtos, e ele lê os numeros automaticos, ai tenho que ficar apertando ENTER para ir para celula de baixo.

¡Gracias!
Este comentario fue minimizado por el moderador en el sitio
Hola, una consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
Este comentario fue minimizado por el moderador en el sitio
hola gustavo
Para resolver su problema, por favor aplique el siguiente código:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        If Target.Value > 10 And Target.Value < 50 Then
         macro1
         macro2
        End If
    End If
End Sub

Por favor, inténtalo, ¡espero que te pueda ayudar!
Este comentario fue minimizado por el moderador en el sitio
Hola,
je souhaiterais appliquer cette macro à mon code. Le problème est que la cellule s'incrémente via une toupie et le code ne reconnais pas le changement de valeur de la cellule.
Quand je saisie la valeur manuellement celà fonctionne correctement.

Gracias de antemano
Este comentario fue minimizado por el moderador en el sitio
Hola, Gilles,
Deberías insertar un Botón giratorio (control ActiveX) primero, y luego haga clic derecho, elija Ver código, luego, copie y pegue el siguiente código entre los scripts existentes,
Dim xWSh As Worksheet
Dim xOL As OLEObject
Dim xRg As Range
Set xWSh = Application.ActiveSheet
Set xOL = xWSh.OLEObjects("SpinButton1") 'The name of the spin button
Set xRg = xWSh.Range(xOL.LinkedCell)
If IsNumeric(xRg) And xRg.Address = "$A$1" Then
        Select Case xRg.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
End If

https://www.extendoffice.com/images/stories/comments/comment-skyyang/DOC-RUN-CODE.png

Por favor, inténtalo, ¡espero que te pueda ayudar!
Este comentario fue minimizado por el moderador en el sitio
¡Hola!

Soy muy nuevo en VBA y probé esta solución para una hoja de Excel que tengo. Básicamente, solo tengo una lista larga en Excel, donde en la columna T debe escribir Sí o No, y me gustaría, si escribió Sí, ejecute una macro ... Probé muchas formas diferentes de definir el rango pero nada funciona.

Sub hoja de trabajo_cambio (objetivo ByVal como rango)

Establecer objetivo = Rango ("T:T")
Si objetivo.Valor = "Sí" Entonces
Llamar Macro1
Si terminar

End Sub

Resalto este problema (error de tiempo de ejecución: tipo de discrepancia): If target.Value = "Yes" Then

¿Alguien puede ayudar?

Saludos, Isabella
Este comentario fue minimizado por el moderador en el sitio
Hola Westergaard
Puede ser que el siguiente código de VBA pueda ayudarlo: (Nota: cambie el nombre del Macro1 a su propio nombre en clave)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T:T")) Is Nothing Then
If Target.Value = "Yes" Then
      Call Macro1
    End If
    End If
End Sub

Por favor, inténtalo, ¡espero que te pueda ayudar!
Este comentario fue minimizado por el moderador en el sitio
¡Muchos gracias! Ahora funciona :)
Este comentario fue minimizado por el moderador en el sitio
Hola,
Cómo modificar esta base de código en el resultado del cálculo de la fórmula de la celda A1
Sub hoja de trabajo_Calcular()
Por favor, ayuda

Hoja de trabajo secundaria privada_Change (ByVal Target As Excel.Range)
Si Target.Cells.Count > 1, entonces salga de Sub
Si es numérico (objetivo) y destino. Dirección = "$ A $ 1", entonces
Seleccionar caso Target.Value
Caso 10 a 50: Macro1
Caso es> 50: Macro2
Fin Seleccionar
Si terminar
End Sub
5 clasificado de 5
Este comentario fue minimizado por el moderador en el sitio
Hola, F.G.
Para que el código funcione en celdas de fórmula, aplique el siguiente código:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    ElseIf (Not Intersect(Range("$A$1"), Target.Dependents) Is Nothing) Then
        Set Rg = Intersect(Range("$A$1"), Target.Dependents)(1)
        Select Case Rg.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    End If
End Sub

Por favor, inténtalo, ¡espero que te pueda ayudar!
Este comentario fue minimizado por el moderador en el sitio
Chao skyyang. Spero tu possa aiutarmi. Ho un programmino in vba che basandosi su variazioni di prezzo di a cella (E1), collegata in DDE con una piattaforma di trading di borsa, fissa i prezzi: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga successiva in base a un intervalo temporal impostato all'apertura del foglio elettronico. L'algoritmo da me sviluppato fa si che nelle colonne: "BH" e "BI" vengano visualizzati i prezzi di acquisto e di vendita, ma solo quando soddisfatte le condizioni date, altrimenti le celle non restituiscono nessun valore. Quello di cui avrei bisogno è di un avviso sonoro .wav che mi avvisi quando viene restituito un valore, di acquisto o di vendita, in modo di non dover fissare lo schermo per 14 ore al giorno. Ho provato a inserire un codice "SoundMe()" trovato on-line, ma suona ogni volta che c'è un nuovo massimo o un nuovo minimo nella riga in cui il programma sta aggiornando i prezzi. Pensi che il problema si possa risolvere? Gracias por la atención
Stefano
Este comentario fue minimizado por el moderador en el sitio
Buenos días,
ho provato il listato che permette di richiamare 2 macro al cambio del valore di a cella, se quel cambio deriva da a funzione "se" non funziona, se digito i valori (vero o falso) funziona.

Come posso ovviare?
Eventualmente come potrei evitare di utilizzare il condizionale sulla cella e far verificare al listto se la cella che deve far avviare le macro è compilata o meno?

gracias
Este comentario fue minimizado por el moderador en el sitio
Buenos días,
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" o se viene inserita una data e non un numero.

Ad esempio se nella cella A1 inserisco: If(B2=0;vero;falso) e la macro leggendo vero mi nasconde lo sheet2 altrimenti mi scopre la sheet 2.

¿Cómo puedo hacer?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo case vero o falso).

gracias
Este comentario fue minimizado por el moderador en el sitio
Hola carlo,
De hecho, el segundo código de este artículo puede resolver su problema.
Nota:: solo necesita cambiar el texto a Verdadero y Falso en el código, y cambiar el nombre del código por el suyo propio.
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "True" Then
 Call Macro1
End If
If target.Value = "False" Then
Call Macro2
End If
End Sub 


Inténtalo de nuevo, ¡gracias!
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL