Excel puede ser tu nuevo entrenador deportivo porque Excel puede hablar 😀😊
#yomequedoencasa
Con la crisis del coronavirus, como todo el mundo, me quedo en casa. Pero después de un par de semanas, ver la tele es una pérdida de tiempo. Además, mi báscula ⚖️ me dice que necesito hacer ejercicio. Pero, ¿qué puedo hacer en mi habitación? 🤨
Entonces, recordé que una característica de Excel te permite Para hacer que la aplicación hable 😮Y tuve la idea Utilizar Excel como entrenador deportivo 😉. Esto es lo que os voy a mostrar en este artículo.
Vídeo para utilizar Excel como coach
El objetivo del ejercicio es de gran utilidad para jugadores de tenis 🥎 o jugadores de ping-pong 🏓 . Tienes que tocar el número del cristal cuando la computadora dice el número.
¿Cómo puede ayudar Excel?
Para utilizar Excel como entrenador deportivo, necesito escribir un programa (una macro) que indique aleatoriamente un número entre 1 y 4. Para cada valor, Excel dirá el número. El programa se basa en solo 4 conceptos.
- Crea un número aleatorio entre 1 y 4
- Convierte este número en una cadena
- Pídele a Excel que pronuncie esta palabra
- Repetir la secuencia X veces.
Administrar un número aleatorio
El Rnd La instrucción (para aleatorio) creará un número aleatorio entre 0 y 1 (1 excluido). Ahora, multiplicando el resultado de Rnd por 4, tendremos un número entre 0 y 3.99999
Luego, con el Int. instrucción (para Integer), solo mantendremos la parte entera del número aleatorio. Entonces devolvemos 0, 1, 2 o 3. Y si suma el valor 1 al resultado obtenido, luego le devolvemos un valor entre 1 4 y .
RndNumber = Int (Rnd () * 4) + 1
Especificidad de números aleatorios en VBA
Sin embargo, la instrucción Rnd No es suficiente. En VBA, debe "forzar" que se recalcule la instrucción aleatoria. De lo contrario, habrá un gran cambio al reproducir la misma secuencia muchas veces.
Para evitar esto, debes agregar el Randomize instrucción en su código.
Convertir números en cadenas
Ahora es importante convertir el número en una cadena porque el comando que hace hablar a Excel debe tener como argumento una cadena y no un número.
Para hacer esto, usaremos la función ELEGIR de Excel en el programa VBA así
Application.WorksheetFunction.Choose ( RndNumber , "one", "two", "three", "four")
La función evaluará el número aleatorio y luego devolverá la cadena de acuerdo con el valor del número.
Ahora, Excel debe hablar 🔊
El método para pronunciar una oración es
Application.Speech.Speak "your text"
Introducir un retraso de tiempo
Para poder hacer el ejercicio, es importante introducir un retraso de 1 segundo para dar tiempo a alcanzar el vaso 😉 En VBA, esto se puede hacer con las siguientes instrucciones.
Application.Wait (Now + TimeValue ("00:00:01"))
Repita la secuencia varias veces.
Debemos insertar estas líneas de comando en un Para...Siguiente bucle para repetir la secuencia de comandos.
Copia el código completo
Aquí está el código completo del programa.
Sub Sport()
Dim i As Long
Dim RndNumber As Long
Dim TextNumber As String
Dim NbTime As Long
NbTime = 10 'Change the number of loops
Application.Speech.Speak "Ready?"
Application.Wait (Now + TimeValue("00:00:02"))
Application.Speech.Speak "Go"
For i = 1 To NbTime
Randomize
If i = NbTime Then
Application.Speech.Speak "Last One"
End If
RndNumber = Int(Rnd() * 4) + 1
TextNumber = Application.WorksheetFunction.Choose(RndNumber, "one", "two", "three", "four")
Application.Speech.Speak TextNumber
Application.Wait (Now + TimeValue("00:00:01"))
Next
End Sub
¿Cómo utilizar el código en Excel?
Para que este código sea utilizable, debe copiarlo en el Editor de Visual Basic.
- Abrir un nuevo libro de Excel
- Abra el editor visual basic con el atajos de teclado Alt + F11
- Agregar un nuevo módulo

- Pega el código en el módulo.

- Cierra el editor de Visual Basic
Ejecuta la macro
- Desde Excel, presione el Alt + F8 claves
- Pulse el botón Ejecutar .

Evite 2 veces el mismo número
Si no queremos tener 2 veces seguidas el mismo número, debemos introducir allí otro para comprobar el valor actual y el anterior. Aquí está el código
Sub Sport()
Dim i As Long
Dim RndNumber As Long
Dim TextNumber As String
Dim NbTime As Long
Dim PreviousValue As Long
NbTime = 10 'Change the number of loops
Application.Speech.Speak "Ready?"
Application.Wait (Now + TimeValue("00:00:02"))
Application.Speech.Speak "Go"
For i = 1 To NbTime
Randomize
Do
RndNumber = Int(Rnd() * 4) + 1
Loop While PreviousValue = RndNumber
PreviousValue = RndNumber
TextNumber = Application.WorksheetFunction.Choose(RndNumber, "one", "two", "three", "four")
Application.Speech.Speak TextNumber
Application.Wait (Now + TimeValue("00:00:01"))
Next
End Sub
