La instrucción If Then else en VBA es necesaria para tomar decisiones dentro del código en VBA.
Esta estructura tiene un comportamiento similar a Función SI en Excel, y también es conocida como bucle IF
Sintaxis de IF THEN ELSE
La sintaxis completa es como sigue:
If condición Then
[Instrucciones a ejecutar]
[ ElseIf condición2 Then
[Instrucciones a ejecutar]]
[ Else
[Instrucciones a ejecutar]]
End If
La parte correspondiente al ELSEIF como al ELSE son opcionales, por lo que la estructura podría quedar de las siguientes formas:
IF ELSEIF
En esta alternativa pueden quedar situaciones en las que no cumplan ni el primer ni el segundo conjunto de instrucciones.
If condición Then
[Instrucciones a ejecutar]
[ ElseIf condición2 Then
[Instrucciones a ejecutar]]
End If
IF THEN ELSE END IF
En esta segunda alternativa siempre si la "condición" no se cumple, se ejecutarán las instrucciones correspondientes al ELSE, es decir siempre se ejecutará una de las dos instrucciones.
If condición Then
[Instrucciones a ejecutar]
[ Else
[Instrucciones a ejecutar]]
End If
IF THEN
Tomando en cuenta que tanto el ELSEIF como el IF son opcionales, el código podría quedar de la siguiente forma, en la que solo si se cumple la "Condición" se ejecutarán las instrucciones que se encuentran dentro del IF.
If condición Then
[Instrucciones a ejecutar]
End If
IF THEN ELSE
Si se escribe todo en una sola línea, se debe prescindir del end if.
If condition Then [Instrucciones a ejecutar] [ Else [ Instrucciones a ejecutar] ]
Parte de la sintaxis de IF THEN ELSE
¿Qué es IF?, es el inicio de del bucle IF THEN ELSE.
En esta estructura "condición" representa el caso que debe cumplirse para que se ejecute la primera parte de la condición, si se quieren usar varias condiciones será necesario usar los operadores lógicos en VBA.
Elseif es una parte opcional que se ejecutaría solo si la parte anterior no se cumple y se requiere añadir alguna otra condición
Mientras que "else" hace que todos los casos en los que no se haya cumplido ninguno de los casos previos se pueda ejecutar las instrucciones siguientes, así tendríamos por ejemplo:
Sub EjemploIfThenElse()
a = 12
If a = 8 Then
MsgBox "1"
ElseIf a = 12
Then MsgBox "2"
Else
MsgBox "3"
End If
End Sub
Si "a" vale 8 entonces se ejecutaría el primer mensaje, si "a" en cambio valiese 12 se ejecutaría el segundo mensaje, en todos los demás valores posibles de "a" se ejecutaría el tercer mensaje.
IF THEN ELSE Ejercicios
En los siguientes ejemplos se puede encontrar una gran variedad de usos de if en vba, desde ejemplos, sencillos de IF THEN ELSE, hasta ejemplos anidados, y aplicados en la resolución de diversos problemas.
- Sorteo en Excel con Macros
- Doble condicional en VBA
- Encontrar palabras usando If then else
- If ... Then - Cálculo de Contribución Tributaria Mensual bajo Régimen RUS
- If then else aplicado al cálculo de precio y descuento de producto.
- Buscador personalizado de stock - If then Else
- IF THEN ELSE para mostrar: APROBADO o DESAPROBADO
- Ejemplo Programa de Educación Financiera
- Estimación de la cantidad de cajeros corresponsales a instalar
- Aprobación de Tarjeta mediante Estructura if then else
- IF then - Incremento de producción condicional
- Ejemplo de If then Else - Aplicado al cálculo de beneficios para el personal
- Ejemplo If then else: Evaluación de Proyectos
- Ejemplo If then Else con el Scoring
- Clasificación del Grupo Etáreo del MINSA
- Uso de DO LOOP para el ejercicio del nivel estudiantil (con IF THEN )
- Ejemplo de If then Else aplicado al Cálculo del Promedio Final de un Curso
- Ejemplo de Select Case y If ... Then aplicado a la conversión de Tipo de cambio
- If Plan Postpago - Prepago Celular
- Ejemplo de If then Else aplicado a descuento por tardanzas
- Ejemplo de If..Else aplicado a la valuación de opciones "Call" y "Put"
- Ejemplo de If then Else aplicado a la aprobación de un préstamo
- Ejemplo de if then else aplicado al craest
- Userform: Ejemplo de If Then and Else aplicado a la toma de Pagares
- Ejemplo de If then else aplicado al Cálculo de Descuentos por Volumen de Compra
- Ejemplo de IF THEN ELSE para el cambio de un numero en base menor a 10
- Ejemplo de If Then Else aplicado a verificación de fechas
- Aplicación de IF THEN ELSE a Put Options
- Estructura IF THEN ELSE aplicado a gratificaciones
- Ejemplo de uso de IF then else (VBA)
- Ejemplo de uso de IF then else (desde formulario)
10/12/2014 a las 2:13 pm
Hola
Mi problema es que quiero que al introducir un valor menor a 650000 empiece de nuevo el ciclo hasta que el usuario ingrese un valor correcto y no se grave el valor incorrecto
Seria de gran ayuda si me ayudaras 🙂
es un formulario
If vseguro >= 650000 Then
lstvs.AddItem vseguro
Else
MsgBox ("El Valor dìgitado" & " " & vseguro & " " & "No es correcto.")
End If
todo el codigo
Private Sub chkpa_Click()
If chkpa = True Then
lblpa.Caption = Round(lbltsv.Caption) * 150000
Else
lblpa.Caption = "No Tiene Puntos"
End If
End Sub
Private Sub cmdcalcular_Click()
Dim nom, i, tseguro As String
Dim vseguro, tsv, pa As Double
acum = 0
i = "s"
While (i = "s" Or i = "S")
nom = InputBox("Digite El Nombre Asesor")
txtna.Text = nom
'nombre asesor - txtna
tseguro = InputBox("Digite El Tipo Seguro")
'nombre asesor - lst
lstts.AddItem tseguro
vseguro = InputBox("Digite El Valor Seguro")
If (vseguro >= 650000) Then
lstvs.AddItem vseguro
Else
MsgBox ("El Valor dìgitado" & " " & vseguro & " " & "No es correcto.")
End If
'Tipo seguro debe ser mayor a 650000
i = InputBox("Desea continuar s/n")
acum = acum + vseguro
Wend
lbltsv.Caption = acum
MsgBox ("Registro Realizado Con Exito")
End Sub
Private Sub cmdinforme_Click()
MsgBox (" El Asesor " & nom & " Obtuvo un total de seguros vendidos de " & lbltsv.Caption & " Y Una Comision De : " & lblc.Caption & " Obtuvo Puntos ? " & lblpa.Caption)
End Sub
Private Sub cmdlimpiar_Click()
txtna.Text = Clear
lstts.Clear
lstvs.Clear
lbltsv.Caption = Clear
lblpa.Caption = Clear
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub lstvs_Click()
End Sub
Private Sub optc12_Click()
If optc12 = True Then
lblc.Caption = lbltsv.Caption * 12 / 100
End If
End Sub
Private Sub optc5_Click()
If optc5 = True Then
lblc.Caption = lbltsv.Caption * 5 / 100
End If
End Sub
Private Sub UserForm_Click()
End Sub
28/02/2015 a las 1:33 am
El If en VBA es muy importante porque te permite identificar en que ocasiones realizaras diversas actividades. Además te permite poner una condicionante, como if y se coloca alguna acción, then if y la condicional. Muchas páginas las usan como por ejemplo considero que Cineplanet lo emplea, ya que selecciona el lugar de residencia en donde se encuentra, el cine que se encuentra en dicho lugar y luego se procede a seleccionar la pelicula que se encuentra disponible en dicho cine. If es una función muy util para muchas empresas.
22/04/2015 a las 12:32 pm
Estructura IF
Para programar: Tres columnas, primera Trabajador, segunda Sueldo y tercera Categoria -
Si el sueldo estas entre 1000 y 3000 categoria A , caso contrario debe decir Categoria B.
Estructura IF
Similar agragando una columna a su derecha: Si el sueldo es mayor a 1000 y su categoria es A, su bonificacion es del 15% del sueldo, caso contrario su bonificacion es del 5% del sueldo.
29/05/2015 a las 5:50 pm
If- Then- Else.
Cuando se encuentra una instrucción If...Then...Else, se prueba una condición. Si la condición es "verdadera", se ejecutan las instrucciones que están a continuación de Then. Si la condición es Falsa, cada instrucción Else-If (si hay alguna) se evalúa en orden. Cuando se encuentra una else-if-condition que sea verdadera, se ejecutan las instrucciones que siguen inmediatamente a la instrucción Else-If asociada. Si else-if-condition se evalúa como verdadera, o si no hay ninguna instrucción Else-If, se ejecutan las instrucciones situadas después de Else. Después de la ejecución de las instrucciones que siguen a Then, ElseIf o Else, la ejecución continúa con la instrucción que sigue a End If.
Las cláusulas Else-If y Else son opcionales. Puede tener tantas cláusulas Else-If como desee en una instrucción If...Then...Else, pero no puede aparecer ninguna cláusula Else-If después de una cláusula Else. If ...Then...Else las instrucciones se pueden anidar una dentro de otra.
Con la sintaxis de varias líneas, la instrucción If debe ser la única instrucción incluida en la primera línea. Las instrucciones ElseIf, Else y End If pueden ir precedidas solamente por una etiqueta de línea. El bloque If...Then...Else debe terminar con una instrucción End If.
10/07/2015 a las 3:30 pm
Hola, buen día.
Espero me puedan ayudar en la siguiente situación, realice la siguiente programación. Copiar datos de la "Hoja1" y pegarlos en la "Hoja2"
Sub()
Sheets("Hoja1").Select
Cells(2,1).Select
PrimerValor=ActiveCell
Range("A1").Select
ActivarValor=ActiveCell
Sheets(ActivarValor).Select
Cells(1,1).Select
Cells(1,1)=PrimerValor
Sheets("Hoja1").Select
Cells(3,1).Select
PrimerValor=ActiveCell
Range("A1").Select
ActivarValor=ActiveCell
Sheets(ActivarValor).Select
Cells(1,2).Select
Cells(1,2)=PrimerValor
Sheets("Hoja1").Select
Cells(4,1).Select
PrimerValor=ActiveCell
Range("A1").Select
ActivarValor=ActiveCell
Sheets(ActivarValor).Select
Cells(1,3).Select
Cells(1,3)=PrimerValor
End
Y así sucesivamente hasta repetir la acción 11 veces. De acuerdo a esto, notaran que los únicos valores que van cambiando(aumentando), son el número de fila de la "hoja1" y el número de columna de la "Hoja2"
Espero me puedan ayudar en ver la manera de resumir y agilizar esta programación, tengo una vaga idea de que pueda ser con la "If y GoTo" pero no logro realizarlo, O de alguna otra manera que se pueda.
De antemano, gracias por su apoyo y atención a todos.
Saludos
01/03/2016 a las 11:42 pm
Buenas noches . necesito saber como referenciar una celda con macro. Ejemplo.
Valor= Range("A1"). Value
If valor>= ("B10") then**aqui me da error.
RGB= interior.color(255,0,0)
Else
RGB= interior.color(0,0,0)
End if
Next
05/03/2016 a las 6:56 pm
hola andres prueba de esta manera!
Valor= Range(“A1”). Value
If valor>= range(“B10”) then.
RGB= interior.color(255,0,0)
Else
RGB= interior.color(0,0,0)
End if
Nex
saludos..
21/03/2016 a las 1:04 pm
Buenos dias mi nombre es Maurizio y mi problema es el siguiente: mediante la inserción de un UseForm me gustaría crear un reloj analógico, que vio en Internet usted encontrará poco o nada.
Pero como que ya había creado los años que se encontraban en VB6, ahora costumbre crear usando sólo VBA que me da problemas, no sería tan clase a darle una mirada y realice los cambios necesarios para que también puede trabajar con un UserForm gracias de antemano por la ayuda te me dan sobre saludos desde a. Maurice. (PS) A mí sólo me haría demasiado ver cómo operar una mano luego puedo tratar conmigo.
13/10/2016 a las 2:07 pm
Consulta...
Tengo que agregar un botón a mi planilla de excel, para poder enviar un mail y que los destinatarios de ese mail dependan del valor de una celda.
Si tal dice "GEA PROCESS" tales destinatarios..y asi..
Este es mi ejemplo y no me funciona.
Sub Enviar_Mail()
'Declarar variables
Dim OLApp As Outlook.Application
Dim OLMail As Object
'Abrir la aplicacion Outlook y crear el email
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(0)
OLApp.Session.Logon
'Detallar los elementos del email, a quienes enviar, titulos, y archivo a adjuntar
CATEGORIA = Worksheets("Cash ARS").Range("H1").Value
If CATEGORIA = "GEA Process" Then
With OLMail
.To = "correo@correo.com; correo@correo.com"
.CC = "correo@correo.com"
.BCC = ""
Sheets("Ingreso").Select
.Subject = Range("E3")
.Body = "Buen dia se adjunta archivo de rendición de gastos"
.Attachments.Add ActiveWorkbook.FullName
.Display
End With
End If
If CATEGORIA = "GEA Farm" Then
With OLMail
.To = "correo@correo.com"
.CC = "correo@correo.com"
.BCC = ""
Sheets("Ingreso").Select
.Subject = Range("E3")
.Body = "Buen dia se adjunta archivo de rendición de gastos"
.Attachments.Add ActiveWorkbook.FullName
.Display
End With
End If
If CATEGORIA = "GEA Westfalia" Then
With OLMail
.To = "correo@correo.com"
.CC = "correo@correo.com"
.BCC = ""
Sheets("Ingreso").Select
.Subject = Range("E3")
.Body = "Buen dia se adjunta archivo de rendición de gastos"
.Attachments.Add ActiveWorkbook.FullName
.Display
'Limpiar datos almacenados en las variables definidas
Set OLMail = Nothing
Set OLApp = Nothing
End With
End If
End Sub
07/01/2017 a las 3:16 pm
Esta bien el código, recuerde que la comparación realizada con el IF distingue entre mayúsculas y minúsculas, tiene que añadir la librería correspondiente (y tener el outlook abierto)
https://www.excel-avanzado.com/17122/enviar-un-rango-de-celdas-como-adjunto-en-correo.html
17/01/2017 a las 10:11 pm
su información me sirvió de mucho
22/01/2017 a las 2:10 pm
Un atento y cordial saludo
Mi pregunta es la siguiente:
Estoy haciendo una base de datos de alumnos, quiero que en la columna "A" celda A2, A3, A4, A5... aparezca un prefijo seguido de un consecutivo (AL001, AL002, AL003, AL004) asi sucesivamente tan pronto lleno la fila de tados del alumno, (que cuando termine de introducir el último dato, aparezca lo antes mencionado)
27/03/2017 a las 3:52 pm
Buenas Tardes, una mano para una ayuda por favor
tengo un dato traido por un formulario para entregarlo a una celda.
son 3 columnas y el dato debe compararse ejemplo si, no o talvez y poner
una x en alguna de las tres columnas
como lo puedo manejar
14/04/2017 a las 5:02 pm
Necesito que me ayuden con un macro donde a medidas que vayan pasando el tiempo se vaya congelando los meses y llenando los campos del mes que corresponda. Por ejemplo:
Enero 98% (Valor trabajando, pero como ya paso el tiempo, se congela)
Febrero 89%
Marzo 70%
Abril (Mes vigente en el cual se debe ir actualizando con respecto a los avances del proyecto)
Mayo (Mes vacío porque aún no hemos llegado a ese mes)
31/07/2017 a las 9:45 pm
Hola soy Schmid Barrientos
Me gustaria saber si hay alguna forma de que en caso no se cumplan las condiciones establecidas en el if, elseif y por lo tanto se llegue al else, de no cumplirse else se regrese a la condicion inicial. Por ejemplo binario solo puede tomar el numero 1 o 2, si toma 3 debera aparecer un imputbox diciendo solo puede tomar el numero 1 o 2 . Inmediatamente se debe volver a preguntar el ingreso del numero o 2 mas no deberá terminarse la macro.
binario = InputBox("Ingrese el número 1 o el número 2")
If binario = 1 Then
Range("a3") = Int(N)
For x = 1 To N
Cells(3, x + 1) = Round(Cells(3, x) / -2, 2)
Next
ElseIf binario = 2 Then
Range("a6") = Int(N)
For x = 1 To N Step 3
Cells(6, x + 1) = Round(Cells(6, x) * -3, 2)
Cells(6, x + 2) = Round(Cells(6, x + 1) / -2, 2)
Cells(6, x + 3) = Round(Cells(6, x + 2) + 2, 2)
Next
Else
MsgBox "Solo puede ingresar el número 1 o el 2"
' aca me gustaria que vuelve a preguntar por el ingreso de 1 o 2 , osea que pueda volver a llamar a la variable binario y la ejecute y no cierre la macro. Existe una forma?
End If
04/05/2019 a las 2:57 pm
hola buenas mi nombre es carlos, una pregunta como se hace para que la formula reconozca, dos columnas y me arroje un resultado. con la condición cuando se introduzca un valor de una de esas columnas verifique ese valor y lo ponga en otra celda
30/05/2019 a las 3:47 am
Hola mi nombre es Salvador, como programar un código VBA para que al poner en la celda ("D3") un nº 5, me salga un cuadro InputBox solicitando una cifra de 4 números y una ves puestos, al dar intro que los inserte en la celda ("F3") de la misma hoja Gracias anticipadas
30/05/2019 a las 6:28 am
Hola mi nombre es Salvador, como programar un código VBA para que al poner en la celda («D3») un nº 5, me salga un cuadro InputBox solicitando una cifra de 4 números y una ves puestos, al dar intro que los inserte en la celda («F3») de la misma hoja Gracias anticipadas
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal TARGET As RANGE)
Dim Tipo As String ' no se si es asi, todavia esto verde
If ("D3") = 5 Or 6 Or 7 Or 8 Then 'en "Celda D3" yo pongo uno de estos numeros
InputBox ' quiero que salga InputBox y que me pida un dato
' yo coloco por ejemplo 1230
'al dar intro me coloque 1230 en la celda "F3", se quita el cuadro de dialogo y listo.
End If
End Sub
29/06/2019 a las 10:06 am
Buenos dias,
Como puedo realizar esta operación en VBA
Si el valor es menor a 1'000.000 al frente debe ponerse 8 %
Si el valor esta entre 1'000.000 y 2'000.000 al frente debe ponerse 10 %
Si el valor es mayor a 2'000.000 al frente debe ponerse 11 %
12/11/2019 a las 3:28 pm
Buenas tardes, estoy empezando en el mundillo del Vba y las macros y necesito una pequeña ayudilla..
Como podría indicarle a una macro lo siguiente:
- Si el valor introducido en la celda C9 de la hoja1 NO ES IGUAL a uno de los valores de la columna2 de la Hoja2, entonces MsgBox "USUARIO NO AUTORIZADO" .
He hecho un sencillo formulario de consulta con imágenes para consultar los vehículos autorizados de un párquing, y para ello me he servido de un par de macros y alguna fórmula de BuscarV y Condicional. Pero todo ello con ayuda de la grabadora de macros y auto aprendizaje de lo que he ido aprendiendo en foros. De ahí mi consulta
Muchas gracias de antemano!
28/12/2019 a las 11:27 am
Buenas,quisiera que alguien me pudiese ayudar a realizar el método de integración por Simpson,y quisiera que al elegir la primera o la segunda regla de Simpson se introduzca automáticamente una sucesión de número de las siguiente manera
1°regla de Simpson: 1,4,2,4,2,.....,2,4,1
2°regla de Simpson:1,3,3,2,....2,3,3,1
Le agradecería mucho a quien pudiese ayudarme.
10/03/2020 a las 12:00 pm
Buenos días
Hice esta macro con If no sé porque no reconoce el End If , les agradecería que me ayudaran
Private Sub cmdvalidar_Click()
'Declaracion de variables
Dim Nombre As String
Dim Apellido As String
Dim Nota1 As Integer
Dim Nota2 As Integer
Dim Nota3 As Integer
Dim Promedio As Integer
Dim Status As String
'Solicitud de datos
Nombre = InputBox("Ingrese su Nombre")
Apellido = InputBox("Ingrese su Apellido")
Nota1 = InputBox("Ingrese su Primera Nota")
Nota2 = InputBox("Ingrese su Segunda Nota")
Nota3 = InputBox("Ingrese su Tercera Nota")
'Guardo las variables en la hoja
Range("C11").Value = Nombre & " " & Apellido
Range("C13").Value = Nota1
Range("C15").Value = Nota2
Range("C17").Value = Nota3
Range("C19").Value = Promedio
Range("C21").Value = Status
'Usando If
If Promedio >= 13 Then
Status = Aprobado
Else
If Promedio < 13 Then
Status = Desaprobado
End If
'Calcular promedio
Promedio = (Nota1 + Nota2 + Nota3) / 3
End Sub