Tomas Pucutay
Tomas Pucutay
Oops, la indentación 😅
Sammy Sidney Poemape Camarena
Este me ha parecido un excelente aporte, estos tres detalles tuve que descubrirlos con prueba y error en un entorno cerrado sin facilidad para googlear.
¿Qué es la instrucción if-then y cómo se utiliza?
La instrucción IF-THEN es una herramienta fundamental en la programación que permite ejecutar acciones específicas si se cumple una determinada condición. En esencia, se estructura como: "si ocurre esto, entonces haz aquello". Esta instrucción es clave para implementar condicionales y tomar decisiones en función de los datos disponibles, permitiendo mayor control y flexibilidad en los programas.
En Visual Basic, por ejemplo, puedes emplear IF-THEN para decidir si el valor de un dado es par o impar. Esto se hace utilizando funciones y variables que determinan el valor y, posteriormente, evalúan la condición para ejecutar la acción correspondiente.
¿Cómo crear una función para un dado en Visual Basic?
La creación de una función en Visual Basic requiere definir claramente los pasos y decisiones que deseas implementar. Aquí te brindamos una guía para programar una función que simule el lanzamiento de un dado y determine su resultado como par o impar.
Definir la función y las variables:
vd como dim vd as integer.Generar el valor aleatorio:
int(random * 6 + 1).Implementar la condición IF-THEN:
vd es igual a 2, 4 o 6 para considerarlo par: if vd = 2 or vd = 4 or vd = 6 then dado = "par".else para otros valores y considera que el dado es impar: else dado = "impar".Probar y visualizar el resultado:
message box para mostrar el valor del dado.¿Cómo optimizar las condiciones con else if?
El uso de else if optimiza el código al detener la evaluación una vez que una condición se cumple, lo cual es crucial en programas complejos o con grandes volúmenes de datos.
Reducir evaluación innecesaria:
Estructurar cuidadosamente las condiciones:
Buenas prácticas:
¿Cómo poner en práctica lo aprendido?
Refuerza tu comprensión repitiendo este ejercicio con otro conjunto de reglas. Por ejemplo, puedes usar cartas de un mazo para determinar si son de color rojo o negro. Expande tu programa para incluir detalles como el palo (corazones, diamantes, tréboles, picas) y experimenta creando complejidades adicionales en el código. ¡Este enfoque aprender-haciendo ofrecerá una práctica valiosa y te hará más competente en el uso de IF-THEN y en la programación en general!
Tomas Pucutay
Tomas Pucutay
Oops, la indentación 😅
Sammy Sidney Poemape Camarena
Este me ha parecido un excelente aporte, estos tres detalles tuve que descubrirlos con prueba y error en un entorno cerrado sin facilidad para googlear.
Public Function cartas() As String
Dim NumCar As Integer Dim ColCar As Integer Dim TipCar As Integer Dim RNumCar As String Dim RColCar As String Dim RTipCar As String Dim a NumCar = Int((Rnd * 13) + 1) ColCar = Int((Rnd * 2) + 1) TipCar = Int((Rnd * 4) + 1) If NumCar = 1 Then RNumCar = "As" ElseIf NumCar = 2 Then RNumCar = "2" ElseIf NumCar = 3 Then RNumCar = "3" ElseIf NumCar = 4 Then RNumCar = "4" ElseIf NumCar = 5 Then RNumCar = "5" ElseIf NumCar = 6 Then RNumCar = "6" ElseIf NumCar = 7 Then RNumCar = "7" ElseIf NumCar = 8 Then RNumCar = "8" ElseIf NumCar = 9 Then RNumCar = "9" ElseIf NumCar = 10 Then RNumCar = "10" ElseIf NumCar = 11 Then RNumCar = "Jota" ElseIf NumCar = 12 Then RNumCar = "Reina" ElseIf NumCar = 13 Then RNumCar = "Rey" End If If ColCar = 1 Then RColCar = "Negro" ElseIf ColCar = 2 Then RColCar = "Rojo" End If If TipCar = 1 Then RTipCar = "Tréboles" ElseIf TipCar = 2 Then RTipCar = "Diamantes" ElseIf TipCar = 3 Then RTipCar = "Corazones" ElseIf TipCar = 4 Then RTipCar = "Picas" End If cartas = RNumCar & " de " & RTipCar & " " & RColCar a = MsgBox(cartas) End Function
Así programé una función que te da una de las 52 cartas de la baraja clásica de poker al azar :)
Roger Christian Cansaya Olazabal
Luis Gabriel Sánchez Quintana
Justo estaba buscando cómo obtener el residuo en VBA, gracias por compartir
Emanuel Loaiza Bravo
Les comparto el reto de generar una carta de baraja inglesa de manera aleatoria.
' Carta Aleatoria Public Function cartas() As String Dim C As Integer Dim CU As Integer Dim CUs As String Dim pinta As String Dim cartastring As String C = Int((52 * Rnd) + 1) ' Definir rangos que le pertenecen a cada pinta If C >= 1 And C <= 13 Then pinta = "Picas" ElseIf C >= 14 And C <= 26 Then pinta = "Corazones" ElseIf C >= 27 And C <= 39 Then pinta = "Treboles" Else: pinta = "Diamantes" End If ' Convertir los corazones, treboles y diamantes a números entre el 1 y el 13 If C >= 1 And C <= 13 Then CU = C - 0 ElseIf C >= 14 And C <= 26 Then CU = C - 13 ElseIf C >= 27 And C <= 39 Then CU = C - 26 ElseIf C >= 40 And C <= 52 Then CU = C - 39 End If CUs = CU ' Nombrar las cartas 1, 11, 12 y 13 como A, J, Q, K respectivamente If CUs = "1" Then cartastring = "A" ElseIf CUs = "11" Then cartastring = "J" ElseIf CUs = "12" Then cartastring = "Q" ElseIf CUs = "13" Then cartastring = "K" Else: cartastring = CUs End If cartas = "La carta generada aleatoriamente es " + cartastring + " de " + pinta End Function
Cristian Duvan Laverde Quiroga
Casi que no lo logro
Ernesto García Silva
Aplicando if , funcion en VBA y en la hoja Aleatorio entre y una tabla al cual le di el nombre de figuras del WIN+[.] aplique tambien formato condicional para el color de la celda en la tabla. Se puede hacer diversidad depende del Usuario. Sintaxis y Aplicacion de la Funcion en Hoja:
Santos Avalo
Interesante alternativa. Gracias.
Alvaro Manuel Polo Fuentes
¿Alguien me puede explicar para que sirve el comando Rnd y en qué casos se utiliza?
Eduard Giraldo Martínez
Hola, Alvaro 😀
Según lo que pude entender de la clase, lo que hace Rnd es que genera un número aleatorio entre 0 y 1
.
Lo que hace el código de la clase es escoger un número al azar 0.862619, lo multiplica por 6. Lo que da un resultado de 5,175714, se le suma un 1 (No entiendo muy bien por qué) y este resultado se redondea, lo que quedaría cómo un 6.
.
Rnd lo puedes usar para cosas aleatorias, sorteos, juegos.
👾
Roberto Ignacio Salazar García
Hola Alvaro y Edward.
También tenía dudas sobre la función para el dado y encontré lo siguiente:
Cada vez que tengas INT antes de un número lo va a redondear a la unidad menor, por ejemplo: INT(1.1) = 1 y INT(1.9) = 1 En ese caso se le necesita sumar 1 para que el dado arroje el número 6, por ejemplo si el RND = 0.99, entonces: 0.99 * 6 = 5.94 5.94 + 1 = 6.94 y INT(6.94) = 6
Lo que si me genera duda es que si el RND = 1, entonces 1 * 6 = 6 , 6 + 1 = 7 y INT(7) = 7 , y un dado no debería dar 7. Quizás habría una forma de poner una restricción en el código para que nunca salga 7.
Un saludo chicos.
Luis Miguel Acosta Gutierrez
Esto lo generó una IA, comparto el resultado:
Sub ChooseCard() ' Declare variables Dim suits(1 To 4) As String Dim numbers(1 To 13) As String Dim suit As String Dim number As String Dim card As String
' Initialize arrays of suits and numbers suits(1) = "Spades" suits(2) = "Hearts" suits(3) = "Clubs" suits(4) = "Diamonds"
numbers(1) = "Ace" numbers(2) = "Two" numbers(3) = "Three" numbers(4) = "Four" numbers(5) = "Five" numbers(6) = "Six" numbers(7) = "Seven" numbers(8) = "Eight" numbers(9) = "Nine" numbers(10) = "Ten" numbers(11) = "Jack" numbers(12) = "Queen" numbers(13) = "King"
' Choose a random suit and number suit = suits(Int((4 - 1 + 1) * Rnd + 1)) number = numbers(Int((13 - 1 + 1) * Rnd + 1))
' Construct the card name card = number & " of " & suit
' Determine whether the card is red or black If suit = "Hearts" Or suit = "Diamonds" Then MsgBox card & " is a red card." Else MsgBox card & " is a black card." End If End Sub
Isaac Bustillo
Hola, adjunto código del reto.
Resultados
Juan Betancur
Con Debug.Print y la variable podemos imprimir el valor de la variable
Public Function dado() As String Dim VD As Integer VD = Int((Rnd * 6) + 1) If VD Mod 2 = 0 Then dado = "par" Else dado = "Impar" End If Debug.Print VD End Function
Manuel Gustavo Pinzón García
En mi caso usé OR para añadir las condiciones del valor del dado en una sola línea.
diana carolina moya romero
Después de 2 días intentándolo, preguntándole a IA el porqué de cada estructura, y corrigiendo errores, lo logré para el juego favorito de mi sobrina, uno:
Public Function cartas() As String
'vamos a declarar las variables
Dim NumCar As Integer
Dim ColCar As Integer
Dim RNumCar As String
Dim RColCar As String
Dim a
'vamos a generar valores aleatorios
NumCar = Int((Rnd * 13) + 1)
ColCar = Int((Rnd * 4) + 1)
'vamos a convertir valores numéricos a texto
If NumCar = 0 Then
RNumCar = "cero"
ElseIf NumCar = 1 Then
RNumCar = "1"
ElseIf NumCar = 2 Then
RNumCar = "2"
ElseIf NumCar = 3 Then
RNumCar = "3"
ElseIf NumCar = 4 Then
RNumCar = "4"
ElseIf NumCar = 5 Then
RNumCar = "5"
ElseIf NumCar = 6 Then
RNumCar = "6"
ElseIf NumCar = 7 Then
RNumCar = "7"
ElseIf NumCar = 8 Then
RNumCar = "8"
ElseIf NumCar = 9 Then
RNumCar = "9"
ElseIf NumCar = 10 Then
RNumCar = "devolver"
ElseIf NumCar = 11 Then
RNumCar = "comedos"
ElseIf NumCar = 12 Then
RNumCar = "comecuatro"
ElseIf NumCar = 13 Then
RNumCar = "cambiocolor"
End If
If ColCar = 1 Then
RColCar = "azul"
ElseIf ColCar = 2 Then
RColCar = "amarillo"
ElseIf ColCar = 3 Then
RColCar = "rojo"
ElseIf ColCar = 4 Then
RColCar = "verde"
End If
'vamos a formar resultados y a retornar
cartas = RNumCar & RColCar
'vamos a mostrar resultados y finalizar
a = MsgBox(cartas)
End Function
Santiago Correa
Comparto funcion para mostrar una carta aleatoriamente.
Eduardo Johnson A.
Angel Fabricio Romani Tafur
Aquí gracias al apoyo de chatgpt, busqué una manera más corta y/o eficiente de hacer el trabajo y me encontré con esto. Y probando funciona bien.
Ioannes Schroeder
Carlos David Botero Rivera
Para jugar al parchis jajaj:
Public Function Dados() As String
Dim D1 As Integer
Dim D2 As Integer
Dim Suma As Integer
Dim a
' Lanzar dos dados
D1 = Int((Rnd * 6) + 1)
D2 = Int((Rnd * 6) + 1)
Suma = D1 + D2
' Evaluar si la suma es par o impar
If Suma Mod 2 = 0 Then
Dados = "Par"
Else
Dados = "Impar"
End If
' Mostrar los valores de los dados
a = MsgBox(" " & D1 & " + " & D2 & " = " & Suma)
End Function
Lizette Rosalía Dazza Hernández
📌 Condicionales IF-THEN en VBA
Los condicionales If...Then permiten ejecutar acciones solo si se cumple una condición.
🔑 Resumen rápido
Carmen Judith Jaimes Delgado
Casi que no... pero aún tratando de digerir, pero se logró
Public Sub Cartas()
Dim Cartas As Integer
Dim Color As String
Dim tipoCarta As String
Dim aleatorio As Double
Dim a
Randomize 'Inicializa el generador de números aleatorios
Cartas = Int((Rnd * 10) + 1) 'Generar aleatorio entre 1 y 10)
aleatorio = Rnd ' Asignar valor a la variable aleatorio
If aleatorio < 0.5 Then
If Rnd < 0.5 Then
tipoCarta = "Corazones" 'rojo
Color = "Rojo"
Else
tipoCarta = "Diamantes" 'rojo
Color = "Rojo"
End If
Else
If Rnd < 0.5 Then
tipoCarta = "Tréboles" 'negro
Color = "Negro"
Else
tipoCarta = "Picas" 'negro
Color = "Negro"
End If
End If
a = MsgBox("Número: " & Cartas & vbCrLf & "Tipo de Carta: " & tipoCarta & vbCrLf & "Color: " & Color)
End Sub
Franklin Paredes Trejo
Asignación de la profesora:
Maria Camila Rodriguez Moreno
La sintaxis básica de la instrucción If-Then en VBA es la siguiente:
If condición Then ' Código a ejecutar si la condición es verdadera End If
Por ejemplo:
If valor = 10 Then MsgBox "El valor es diez" End If
Además, puedes usar ElseIf y Else para manejar múltiples condiciones:
If condición1 Then ' Código para condición1 ElseIf condición2 Then ' Código para condición2 Else ' Código si ninguna condición se cumple End If
Este enfoque es útil para tomar decisiones en tu programación.
Btw, Si se sienten más cómodos usando las funciones que ya conocían en excel, pueden usarlo mediante la siguiente sintaxis:
Application.WorksheetFunction.<excel_function>
Ejemplo para obtener un valor entre 1 y 6
Mas practico
Public Function dado() As String Dim VD As Integer Dim a VD = Int((Rnd * 6) + 1) If (VD Mod 2) = 0 Then dado = "Par" Else: dado = "Impar" End If a = MsgBox(VD) End Function
Public Function cartas() As String Dim color As String Dim tipo As String Dim numero As Integer Dim randColor As Integer Dim randTipo As Integer 'color rojo 1 'color negro 2 'tipo corazon 1 'tipo espadas 2 'tipo trebol 3 'tipo rombo 4 randColor = Int((Rnd() * 2) + 1) randTipo = Int((Rnd() * 4) + 1) numero = Int((Rnd() * 13) + 1) Select Case randColor Case Is = 1 color = "rojo" Case Is = 2 color = "negro" End Select Select Case randTipo Case Is = 1 tipo = "corazon" Case Is = 2 tipo = "espadas" Case Is = 3 tipo = "trebol" Case Is = 4 tipo = "rombo" End Select cartas = MsgBox("Te tocó " & numero & " " & tipo & " " & color, , "Luck") End Function
Comparto mi función para identificar diagnóstico de Hipertensión con condicional IF - THEN
Function ifdx() As String ' ' Función para identificar Hipertensión con ciclo If - Then ' Se establece variable de generación aleatoria Dim TAS As Integer TAS = Int((Rnd * 205) + 1) ' If con 5 casos posibles, incluyendo: Normal, Prehipertensión, Grado I, Grado II y Urgencia If TAS < 130 Then ifdx = "Tensión arterial normal" ElseIf TAS < 140 Then ifdx = "Prehipertensión" ElseIf TAS < 160 Then ifdx = "Hipertensión Grado I" ElseIf TAS < 180 Then ifdx = "Hipertensión Grado II" Else: ifdx = "Urgencia Hipertensiva" End If Dim ms ms = MsgBox("De acuerdo con la Tensión sistólica obtenida: " & TAS & ", tu diagnóstico es: " & ifdx, , "Diagnóstico de Hipertensión") End Function ```Function ifdx() As String ' ' Función para identificar Hipertensión con ciclo If - Then ' Se establece variable de generación aleatoria   Dim TAS As Integer   TAS = Int((Rnd \* 205) + 1)     ' If con 5 casos posibles, incluyendo: Normal, Prehipertensión, Grado I, Grado II y Urgencia   If TAS < 130 Then   ifdx = "Tensión arterial normal"   ElseIf TAS < 140 Then   ifdx = "Prehipertensión"   ElseIf TAS < 160 Then   ifdx = "Hipertensión Grado I"   ElseIf TAS < 180 Then   ifdx = "Hipertensión Grado II"   Else: ifdx = "Urgencia Hipertensiva"   End If       Dim ms   ms = MsgBox("De acuerdo con la Tensión sistólica obtenida: " & TAS & ", tu diagnóstico es: " & ifdx, , "Diagnóstico de Hipertensión")     End Function