lunes, 17 de octubre de 2011

Código VBA (condiciones con IF...THEN...ELSE))






Presentamos una selección de ejemplos de código en VBA listo para ejecutar mediante cualquier macro o por medio de un evento de algún objeto (Excel, un libro, una hoja o un rango).

En este artículo, ofrecemos líneas de código ejecutable para realizar acciones con una hoja de Excel, siempre que se cumpla una condición. Concretamente veremos el grupo de instrucciones IF ... THEN...ELSE (Si.... entonces..... si no).


El texto en verde que a veces se puede ver entre el código, es el que debe personalizar el usuario, si procede.


IF....THEN

1) Comprobar que un número escrito en la celda activa es el requerido. Si se cumple, muestra un mensaje diciendo "El código es correcto". Si no se cumple, la macro termina y no hace nada.

Sub ComprobarCódigo()
   If ActiveCell = "BF1234" Then
      MsgBox ("
El código es correcto")
   End If

End Sub

IF....THEN...ELSE


2) Comprobar que un número escrito en una celda determinada es el requerido. Si se cumple, muestra un mensaje diciendo "El código es correcto". Si no se cumple, muestra un mensaje diciendo "El código no es correcto".



Sub ComprobarCódigo()
   If Range("A1") = "BF1234" Then
      MsgBox("
El código es correcto")
   Else
      MsgBox("El código no es correcto")
   End If

End Sub





  José Manuel Pomares Medrano


6 comentarios:

  1. Como puedes usar este codigo dos veces?...

    ResponderEliminar
  2. Hola, soy nuevecita en esto y necesito ayuda

    Cree un boton q me ejecute las siguiente macro:


    Private Sub CommandButton1_Click()
    Dim x As Integer
    Dim capacitacion As String
    Dim capacitacion2 As String
    Dim capacitacion3 As String


    Gestiondecalidad = Range("C5").Value
    Medisyn = Range("C6").Value
    Bioseguridad = Range("c7").Value

    If Gestiondecalidad < 80 Then
    capacitacion = "Gestión de calidad"
    Else
    capacitacion = "."

    If Medisyn >= 80 Then
    capacitacion2 = "."
    Else
    capacitacion2 = "Medisyn"

    If Bioseguridad < 80 Then
    capacitacion3 = "Bioseguridad"
    Else
    capacitacion3 = "."

    End If
    End If
    End If
    Range("A12").Value = capacitacion
    Range("B12").Value = capacitacion2
    Range("c12").Value = capacitacion3

    Range("A12").Font.Bold = True
    Range("B12").Font.Bold = True



    End Sub


    El problema es que me toma solo una de las condiciones, no si dos cumplen al misma condicion, por ejemplo <80 en gestion y medisyn, a pesar de darle ubicaciones distintas a la celda. No quiero crear un boton por cada item.
    gracias

    ResponderEliminar
    Respuestas
    1. Si quieres que se cumplan dos condiciones simultáneas (o más) puedes utilizar el operador lógico "AND"en cada "IF". Por ejemplo:

      If Gestiondecalidad < 80 AND Bioseguridad <80 Then
      capacitacion = "Gestión de calidad"....
      ......
      ...

      Por supuesto, también podrías utilizar el operador lógico "OR" para que se cumpla una condición... u otra (pero no las dos de forma simultánea).

      Saludos

      Eliminar
  3. Buenas tarde,

    Como puedo llamar esta macro dos veces.
    si lo ejecuto con Call. solo se ejecuta una vez y se detiene.


    Sub generar()

    Hoja3.Columns("a:v").Delete

    fin = Hoja1.Range("b10").End(xlUp).Row
    Hoja1.Range("b2").Select


    For y = 0 To Int((fin - 1) / 2)
    For k = 0 To 2


    Hoja2.Range("c5").Value = "'" & Format(ActiveCell.Value, "00000000")

    Hoja2.Range("a1:v33").Copy Destination:=Hoja3.Cells((33 * y) + 1, (22 * k) + 1)

    ActiveCell.Offset(1, 0).Select
    If ActiveCell.Value = "" Then End
    Next k
    Next y

    End Sub

    ResponderEliminar
    Respuestas
    1. Sustituye la línea: If ActiveCell.Value = "" Then End
      por la línea: If ActiveCell.Value = "" Then Exit Sub

      Saludos

      Eliminar
    2. Muchísimas gracias. es lo que necesitaba, que Dios te siga Bendiciendo.

      Eliminar