Crear vba para un rango de celdas con 2 condiciones

Me gustaría saber como crear un vba que me error cuando no se cumplan 2 condiciones, una de ellas referente a una celda en concreto, y la otra condición es referente a un rango de celda (que cuando en cualquiera de ese rango el valor indicado sea inferior a 6).

1 Respuesta

Respuesta
1

Para desarrollar una macro se necesitan aclaraciones acerca de los rangos o referencias, hojas, cuándo ejecutarla, etc ...

Aquí dejo un ejemplo explicado paso a paso para que puedas ajustar estos detalles a tu caso.

Sub controlando()
'x Elsamatilde()
Dim marca1 As Byte, marca2 As Byte
'control contenido de celda
If [A2] = "" Then marca1 = 1
'control contenido en rango
For Each cd In Range("B2:C6")
'si algún valor del rango es < 6 deja la marca y finaliza el bucle
If cd.Value < 6 Then
    marca2 = 1
    Exit For
End If
Next cd
'control de marcas
If marca1 = 1 Then MsgBox "Error en el primer control."
If marca2 = 1 Then MsgBox "Error en el segundo control."
End Sub

El código se coloca en el Editor, en un módulo. Se ejecuta desde allí mismo, con un botón, con un atajo de teclado o desde el menú Macros. Este tema (Cómo ejecutar una macro) lo tengo explicado en la sección Macros de mi sitio.

Como no se indica nombre de hoja se ejecutará sobre la hoja activa.

Sdos y no olvides valorar la respuesta si el tema queda resuelto. Sino envía aclaraciones.

Elsa

Te adjunto imagen

He realizado tu formula, pero siempre me parece el segundo error. Necesito que desde que se cumpla en alguna de las celdas sea igual o superior a 6 no aparezca el error, es decir que ninguna de las celdas del rango (ej: B13 a Y13) sea superior a 6 aparezca el error. Cuenta las celdas en blanco.

No es lo mismo: 'que cuando en cualquiera de ese rango el valor indicado sea inferior a 6'

A que digas: 'es decir que ninguna de las celdas del rango (ej: B13 a Y13) sea superior a 6 aparezca el error'

En el primer caso y así fue programado, con que aparezca 1 valor inferior ya aparece el mensaje... en cambio lo que manifiestas ahora es que envíe el mensaje si todos los valores son menores.

En este caso el segundo control quedaría así:

'control de contenido en rango
For Each cd In Range("B13:Y13")
'si algún valor del rango es > 6 deja la marca y finaliza el bucle
If cd.Value > 6 Then
    marca2 = 1
    Exit For
End If
Next cd

Luego el mensaje solo se mostrará si la variable 'marca2' quedó vacía.

If marca2 = 0 Then MsgBox "Error en el segundo control."

El resto va sin cambios.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas