Como seria la macro para que ejecute 7 sonidos particulares según números del 1 al 7.

Quisiera saber si se puede hacer una macro que ejecute un sonido diferente (por ejemplo una nota musical) por cada numero que hay en una columna. Los números son del 1 al 7 y están de manera aleatoria (al azar).

La macro seria de gran utilidad, si al iniciarla pueda ingresar desde que celda empieza a ejecutarse hasta que celda termina.

Por ejemplo:

Inicio: A3

Final: A15

1 Respuesta

Respuesta

Prueba con el siguiente Sub, que (en teoría) debería "tocar" la nota asociada al número (del 1 al 7, siendo 1 la nota Do y 7 la nota Si) de todo el rango que esté seleccionado en el momento de ejecutarlo:

Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub prueba()
    Dim rngR As Range, rngC As Range
    Dim vFrecuencias() As Variant, iCaracteres As Integer
    vFrecuencias = Array(261.63, 293.66, 329.63, 349.23, 392, 440, 493.88)
    Set rngR = Range(Selection.Address)
    For Each rngC In rngR
        For iCaracteres = 1 To Len(rngC.Value)
            If IsNumeric(Mid(rngC.Value, iCaracteres, 1)) Then Beep vFrecuencias(CInt(Mid(rngC.Value, iCaracteres, 1)) - 1), 500
        Next iCaracteres
    Next rngC
    Set rngR = Nothing
    Set rngC = Nothing
End Sub

Saludos_

Si se quiere que haya un silencio de la misma duración de los "beeps" entre cada celda:

Sub prueba()
    Dim rngR As Range, rngC As Range
    Dim vFrecuencias() As Variant, iCaracteres As Integer
    vFrecuencias = Array(261.63, 293.66, 329.63, 349.23, 392, 440, 493.88)
    Set rngR = Range(Selection.Address)
    For Each rngC In rngR
        For iCaracteres = 1 To Len(rngC.Value)
            If IsNumeric(Mid(rngC.Value, iCaracteres, 1)) Then Beep vFrecuencias(CInt(Mid(rngC.Value, iCaracteres, 1)) - 1), 500
        Next iCaracteres
        Beep 0, 500
    Next rngC
    Set rngR = Nothing
    Set rngC = Nothing
End Sub

Saludos_

Muchas gracias por su respuesta, me podría indicar como hago para que funcione copie todo en una macro y le di ejecutar.

En la hoja de excel coloque los números en la columna A y van hacia abajo así

6

1

3

6

2

6

2

1

Cuando le di ejecutar solo dio un sonido.

Gracias por su ayuda

Si fuera posible quisiera que la macro toque porciones de la columna es decir que se le pueda indicar tocar una zona, por ejemplo desde A20 a A200, Gracias por su respuesta.

En principio el código debería "tocar" todos los números del rango que este seleccionado en el momento de ejecutarlo. Es decir, que por ejemplo para que "toque" el rango A20:A200 habría que seleccionar dicho rango y luego ejecutar el código.

Saludos_

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas