No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
6 Hrs
58 Min
56 Seg

Ciclos Do While - Loop

15/17
Recursos

Aportes 93

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Buenas! Una aclaración: al escribir la sentencia dado = WorksheetFunction.RandBetween(1, 6) fuera del while, el dado se tira una sola vez, por lo tanto la función calcula cuantas veces entra ese tiro en 100. Si deseamos que sean varios tiros aleatorios, la sentencia debe estar dentro del while!

Public Function DW() As Integer

Dim dado As Integer
Dim i As Integer
Dim s As Integer
Dim z As Integer

z = InputBox("Hasta donde quieres papi")

dado = WorksheetFunction.RandBetween(1, 6)

Do While s < z
    i = i + 1
    s = s + dado
Loop

DW = MsgBox(i)

End Function

Este ejercicio estuvo algo confuso, la profesora no inicializa al contador, no inicializa la variable “s”, en otros ejercicios si lo hace. Es algo tedioso tener que buscar las respuesta cuando se debería quedar claro en cada clase.

Aquí mi aporte:
Creé un función que le pide al usuario definir un limite de suma de los puntos obtenidos en cada tiro de dado e imprime en las 3 primeras columnas: el # de tiro, los valores obtenidos y la suma acumulada. Finalmente arroja un msgbox que indica en que número de tiro llega al limite y cual es el valor de la suma que se obtuvo con ese tiro

De hecho puede haber observaciones que se nos pase como declarar variables, como inicializar variables, inclusive comentarios en el documentos programativos , pero se trata de cumplir con los objetivos planteados por el curso, y todos hacen su mejor esfuerzo. Al observar ciertos comentarios entonces se me dio por que la salida sea del tipo string para mantener el procedimiento como función, probe como procedimiento y constate que suele a veces pasar la observacion que la formula volatil de valores aleatorios no es muy recomendable usarlo, pero tambien se uso solo una vez ya que no estaba inmerso en el do while, la complejidad depende del objetivo del USUARIO que son muy volubles acorde a la creatividad.
Muestro mi ejemplo. Saludos desde Peru

Pidiendo al usuario que ingrese el valor N de la suma

 
Notas:

  • el valor del dado va de 1 a 6 por lo que declararlo como Byte pienso que sería más correcto.
  • el usuario puede ingresar hasta 30,000
  • para más valor de suma hay que subcribirse a la versión PRO. jeje
  • el límite de 32,767 es del Integer, para usuario pudo haber sido 32,761; pero me gustó más 30,000
     
Function TirarDados() As Integer
    
    'DECLARACION DE VARIABLES
    Dim DadoValor As Byte
    Dim Counter As Integer 'contador
    Dim Accum As Integer 'acumulador
    Dim N As Integer 'Suma a la que se quiere llegar (Limite 32,767)
    
    'INICIALIZACION DE contadores y acumuladores
    'Aunque VBA les asigna 0 automáticamente
    Counter = 0
    Accum = 0
    
    'Establecer N por el usuario
    Do
        N = InputBox("Ingrese la suma límite a la que quiere llegar", "Juego de Dados")
        
        If N <= 0 Or N > 30000 Then
            MsgBox "Ingrese un número entre 1 y 30 mil", , "Juego de Dados"
        End If
        
    Loop Until (N > 0) And (N <= 30000)
    
    'LETS PLAY
    Do While Accum < N
        Counter = Counter + 1
        'Debug.Print "Contador: " & Counter
        
        DadoValor = Application.WorksheetFunction.RandBetween(1, 6)
        'Debug.Print "Valor del Dado: " & DadoValor
        
        Accum = Accum + DadoValor
        'Debug.Print "Acumulado: " & Accum
        'Debug.Print
    Loop
    
    TirarDados = Counter - 1

End Function

Mi código

¡Maravilloso curso!

Public Function DW() As Integer Dim dado, i, s As Integer Dim numeroObjetivo As Integer dado = WorksheetFunction.RandBetween(1, 6) numeroObjetivo = InputBox("Ingresa el numero al que quieres llegar", "Dado") Do While s < numeroObjetivo i = i + 1 s = s + dado Loop DW = msgbox("Se tiró el dado " & i & " veces") End Function
yo resolví el reto de esta manera ![](https://static.platzi.com/media/user_upload/image-ed344d30-2eeb-4c61-96a2-cad3ed6570d5.jpg)

El reto

Public Function DW() As Integer

    Dim dado As Integer
    Dim i As Integer
    Dim s As Integer
    Dim meta As Integer
    
    meta = InputBox("Cual es la meta a la que quieres llegar", "Suma de tiros")
    dado = WorksheetFunction.RandBetween(1, 6)
    
    Do While s < meta
        i = i + 1
        s = s + dado
        
    Loop
    
    DW = MsgBox(i)
    
End Function

Hola que tal.
Les paso mi versión. Yo la combine con las clases anteriores y unas cuantas cosillas mas e hice un juego. 😄
Muestro los resultados en cada vuelta y su acumulado.
Me dicen que les parece.

Public Function DoWhile()
    Dim i As Integer
    Dim Dado As Integer
    Dim Objetivo As Integer
    Dim Acumulado As Integer
    Cells(1, 1) = "Num de Vuelta"
    Cells(1, 2) = "Valor de dado"
    Cells(1, 3) = "Puntos Acumulados"
    Range("A2:C100").Clear
    Objetivo = InputBox("¿En cuantas vueltas llegarás a 100?", "Vueltas de Dado")
    MsgBox ("Dijiste que " & Objetivo & " vueltas. Veamos")
    
    Do While Acumulado <= 100
        i = i + 1
        Dado = WorksheetFunction.RandBetween(1, 6)
        Acumulado = Dado + Acumulado
        Cells(i + 1, 1) = i
        Cells(i + 1, 2) = Dado
        Cells(i + 1, 3) = Acumulado
    Loop
    
    DoWhile = MsgBox("El final se necesitaron " & i & " vueltas. Y se acumuló un total de " & Acumulado & " Puntos.")
    
    If Objetivo > i Then
        MsgBox ("Perdiste! :( Te pasaste por muy poco. Te Volvamos a intentarlo")
    ElseIf Objetivo = i Then
        MsgBox ("Ganaste! :D Felicidades!")
    Else
        MsgBox ("Perdiste! :( Te Falto muy poco. Volvamos a intentarlo")
    End If
    
End Function

Comparto Visualización de Macro para sorteo de Dado, dando un valor , aplicado un Ciclo Do While - Loop.

Buenas, creo que ahi me quedo bien! Consulta que sumatoria maxima queremos y muestra el numero de tiradas.

Public Function Dados() As Integer
Dim suma As Integer
Dim suma1 As Integer
Dim dado As Integer
Dim i As Integer

suma = InputBox("Introducir numero maximo de sumatoria", "Sumatoria")
i = 1
suma1 = 0

Do While suma1 < suma
    dado = WorksheetFunction.RandBetween(1, 6)
    i = i + 1
    suma1 = suma1 + dado
Loop

Cartel = MsgBox("Cantidad de tiradas" & i)

End Function

Comparto mi función SAD…para terminar el curso…pensé que feliz pero…😭

Hola, comparto el desarrollo del reto. ![](https://static.platzi.com/media/user_upload/DWL-56c3322b-7f57-4b97-9abb-1e30ce25226c.jpg) Prueba: ![](https://static.platzi.com/media/user_upload/DWL_prueba1-c4139d83-2581-4cb7-aafc-4edeb9d74121.jpg) ![](https://static.platzi.com/media/user_upload/DWL_resultado_prueba1-5e530562-bf5a-47c1-80e1-4f562d083824.jpg)
El contador "i" es innecesario, no se usa para nada. El dado se debería lanzar dentro del loop
Dejo mi ejercicio donde se le solicita al usuario indicar a que número desea llegar, las variables declaradas las cambie todas de un entero a un entero de gran longitud para que el usuario pueda ingresar un número tan grande como desee, adicionalmente mediante un msgbox se le comunicara cuantos tiros del dado tomo llegar al número indicado ![](https://static.platzi.com/media/user_upload/image-68c90f72-3e20-4c4c-9373-f6b12ed34f4c.jpg)
Creo que hay un error en el código de la maestra, la llamada a la función RandBetween debería estar al interior del ciclo do while, porque de la manera en como ella lo está realizando, solo estaría tirando el dado una sola vez.
![](https://static.platzi.com/media/user_upload/image-72505692-ed08-4ff1-9b6d-76849fcdc5dc.jpg)Ejemplo del codigo con ingreso por parte del usuario de la sumatoria a la que quiere llegar
Dejo el ejercicio con el inputbox para pedir la suma y aparte le agregue un messagebox para que muestre el resultado. ![](https://static.platzi.com/media/user_upload/Do%20While-0f96da7a-ba87-4ae8-8bf0-3defae210f33.jpg) ![](https://static.platzi.com/media/user_upload/Do%20While%20Inputbox-4a99667a-677e-4b78-8777-34ef95c18a06.jpg) ![](https://static.platzi.com/media/user_upload/Do%20While%20Resultado-02c290dd-a9b2-44cf-8e74-079195b455c2.jpg)
![](https://static.platzi.com/media/user_upload/Ejercicio7_DoWhile-Loop-4337e5f6-46f7-4c22-b5f2-27e152f4c457.jpg)
![](https://static.platzi.com/media/user_upload/DO%20WHILE%20-%20LOOP-ce95d92c-7cc8-4e13-9b51-28fd5eb31c55.jpg) Quedo atento
![](https://static.platzi.com/media/user_upload/DO%20WHILE%20-%20LOOP-8254892e-65f1-41e2-8308-042af108a847.jpg) Quedo atento
![](https://static.platzi.com/media/user_upload/image-7c7fa3bd-e2c7-49db-a457-abf81cbee4b7.jpg)
Aquí está mi solución para cuando el usuario ingresa el límite de la suma: ![](https://static.platzi.com/media/user_upload/image-c661269d-8874-4f35-b691-012b7c58a025.jpg) Cada vez que coloque =DW() saldrá una ventana solicitando el valor máximo: ![](https://static.platzi.com/media/user_upload/image-24ad2baf-0402-4a68-a8c1-9614daf0b1bd.jpg)
Mi codigo con rango a seleccionar es:```js Public Function DW() As Integer Dim dado As Integer Dim suma As Integer Dim contador As Integer Dim rango As Integer rango = InputBox("Defina el rango", "Rango") dado = WorksheetFunction.RandBetween(1, 6) Do While suma < rango suma = suma + dado i = i + 1 Loop DW = i End Function ```Public Function DW() As Integer Dim dado As Integer Dim suma As Integer Dim contador As Integer Dim rango As Integer rango = InputBox("Defina el rango", "Rango") dado = WorksheetFunction.RandBetween(1, 6) Do While suma < rango suma = suma + dado i = i + 1 Loop DW = i End Function
![](https://static.platzi.com/media/user_upload/imagen-92263d34-e815-4770-a95e-0f5784a2650f.jpg)![](https://static.platzi.com/media/user_upload/imagen-7727843d-35f9-4c49-88f2-893486ecc9e0.jpg)![](https://static.platzi.com/media/user_upload/imagen-5be1ff4c-77a8-4fed-a786-951f2ba6c3a7.jpg)
Este fue el resultado del reto: ```js Public Function DW() Dim dado As Integer Dim n As Integer Dim i As Integer Dim intentos As Integer n = InputBox("Indique la suma a la que quiere llegar", "Suma final") i = 0 intentos = 0 Do While i < n dado = WorksheetFunction.RandBetween(1, 6) intentos = intentos + 1 i = i + dado Loop DW = MsgBox("Se requierieron " & intentos & " intentos tiros para llegar a la suma especificada") End Function ```Public Function DW() Dim dado As Integer Dim n As Integer Dim i As Integer Dim intentos As Integer n = InputBox("Indique la suma a la que quiere llegar", "Suma final") i = 0 intentos = 0 Do While i < n dado = WorksheetFunction.RandBetween(1, 6) intentos = intentos + 1 i = i + dado Loop DW = MsgBox("Se requierieron " & intentos & " intentos tiros para llegar a la suma especificada") End Function
![](https://static.platzi.com/media/user_upload/image-c955a0ce-6506-421f-9ca2-3cbf58b04a86.jpg)
```js Public Function doWhile() As Integer Dim dado As Integer Dim i As Integer Dim s As Integer Dim sumToReach As Integer sumToReach = InputBox("Until what sum do you want to reach?") dado = WorksheetFunction.RandBetween(1, 6) Do While s < sumToReach i = i + 1 s = s + dado Loop doWhile = i End Function ```
Dato interesante: Despues de utilizar la función 7746 veces, el promedio es igual a 40,74, lo que quiere decir, que en teoría se necesita en promedio tirar un dado de 6 caras alrededor de 41 veces para que la suma de las tiradas sobrepase el valor de 100, lo que corresponde

Con la función de lanzamiento de dado aleatorio dentro del ciclo Do While

Do While donde el usuario ingresa hasta donde detener el ciclo:

ejercicio ![](https://static.platzi.com/media/user_upload/image-2dac3d26-d5e5-405b-a319-f0a48852bf1a.jpg)
![](https://static.platzi.com/media/user_upload/image-b612d2ad-b175-44cb-9669-31cc7d1ca004.jpg)

Este ejerció un poco difícil para las personas que recen empezamos a utilizar a fondo excel.

este es mi código ```js Public Function DW() As Integer Dim dado As Integer Dim i As Integer Dim a As Integer Dim b As Integer b = InputBox("ingresa el numero hasta donde llegar") dado = WorksheetFunction.RandBetween(1, 6) Do While s < b i = i + 1 s = s + dado Loop DW = i End Function ```Public Function DW() As Integer Dim dado As Integer Dim i As Integer Dim a As Integer Dim b As Integer b = InputBox("ingresa el numero hasta donde llegar") dado = WorksheetFunction.RandBetween(1, 6) Do While s < b i = i + 1 s = s + dado Loop DW = i End Function
tire el dado 154 veces y este fue el resultado jeje![](https://static.platzi.com/media/user_upload/image-0c653ac1-25a4-4fff-985e-b93b441d6a60.jpg)

Genial clase…!

'Do while - loop loops

Public Function DW() As Integer

    Dim dice As Integer
    Dim i As Integer
    Dim sum As Integer
    
    s = 0
    i = 0
        
    Do While s <= 100
        dice = WorksheetFunction.RandBetween(1, 6)
        i = i + 1
        s = s + dice
        
        If s > 80 And s <= 100 Then
            MsgBox (dice & " and " & s)
        End If
        
    Loop
    
    DW = i

Ingresando hasta que suma se queore llegar

Public Function DW() As Integer

Dim dado As Integer
Dim i As Integer
Dim s As Integer
Dim n As Integer

n = InputBox("Hasta que suma quiere llegar?")

dado = WorksheetFunction.RandBetween(1, 6)

Do While s <= n
    i = i + 1
    s = s + dado
Loop

DW = i

End Function

Buen dia,

adjunto mi aporte

Public Function DW() As Integer
    Dim dado As Integer
    Dim i As Integer
    Dim s As Integer
    Dim response As VbMsgBoxResult

    Do While s < 100
        ' Roll the die
        dado = WorksheetFunction.RandBetween(1, 6)
        
        ' Increment the roll count and update the sum
        i = i + 1
        s = s + dado
        
        ' Inform the user about the result of the roll and the current total
        response = MsgBox("Roll #" & i & ": You rolled a " & dado & "." & vbCrLf & _
                          "Total so far: " & s, vbOKCancel + vbInformation, "Dice Game")

        ' If the user clicks "Cancel", exit the game
        If response = vbCancel Then Exit Do
    Loop
    
    ' Return the number of rolls it took to exceed or reach 100
    DW = i
End Function

Se me ocurre que podría usarla para que vaya eliminando filas mientras el valor de una columna sea blanco o vacío

Les dejo mi codigo de la solucion del reto, Espero les sirva de ayuda

Public Function DW()
'Aprendiendo de ciclos Do While - Loop'
    Dim dado As Integer
    Dim i As Integer
    Dim s As Integer
    Dim e As Integer
'El valor del dado ahora es con funcion del libro de excel'
    e = InputBox("¿Hasta que número deseas llegar?", "Numero deseado")
       
    Do While s < e
        dado = WorksheetFunction.RandBetween(1, 6)
        i = i + 1
        s = s + dado
    Loop
    DW = i

Reto cumplido!

<code> 

Public Function DADODW() As Integer 'Cuantas veces debo tirar el dado para que me sume 100
Dim DADO As Integer 'LADOS DEL 1 AL 6
Dim I As Integer 'CONTADOR
Dim S As Integer 'SUMA
Dim L As Integer

DADO = WorksheetFunction.RandBetween(1, 6)
L = InputBox("HASTA QUE NUMERO QUIERES SUMAR", "SUMA  DADO")
Do While S < L

I = I + 1
S = S + DADO

Loop
DADODW = I

End Function

![](

Muy funcional, puede ser util para hacer conteos, para llenar celdas con valores que podemos calcular al interior del loop y muchas otras funcionalidades y aplicaicones en el trabajo del dia a dia

Yo lo haria asi:

Public Function DW() As Integer

    Dim dado As Integer
    Dim i As Integer
    Dim s As Integer
    
    dado = WorksheetFunction.RandBetween(1, 6)
    suma = InputBox("Hasta donde debe ir la suma?")
    
    Do While s < suma
        i = i + 1
        s = s + dado
    Loop
    
    DW = i
           

Hola a todos, comparto algunas cosas que añadí.
Se imprime resultados de los lanzamientos en hoja de excel! y un Do While por si ingresan un valor fuera del rango.

Public Function DW() As Integer
Dim dado As Integer
Dim i As Integer 'contador
Dim Suma As Integer 'suma de valores del dado
Dim ALCANCE As Integer
Dim m
Dim m2

Suma = 0
i = 0

'Mensaje para que vuelva ingrese un valor
ALCANCE = InputBox("¿Hasta dónde quieres ir? Elige un número mayor al 1 y menor o igual a 100", "El cielo es el límite")

        'Ciclo por si se recibe un valor fuera de rango
        Do While ALCANCE <= 1 Or ALCANCE > 100
            'Mensaje de error y mensaje para que vuelva a ingresar un valor
            m = MsgBox("Ingrese un número mayor a 1 o menor o igual a 100", , "ERROR")
            ALCANCE = InputBox("Hasta dónde quieres ir, del 1 al 100", "El cielo es el límite")
        Loop
    
        'Ciclo para lanzar el dado y acumular su valoro
        Do While Suma < ALCANCE
            'Aleatorio entre 1 y 6
            dado = WorksheetFunction.RandBetween(1, 6)
            'Cantidad de veces que tiramos el dado
            i = i + 1
            'Acumulado del valor del dado
            Suma = Suma + dado
            'Mensaje con información de cada lanzamiento
            m = MsgBox("En el lanzamiento No. " & i & " el valor acumulado de suma es: " & Suma & " y el valor de dado es: " & dado, , "Lanzamientos")
            'Pegar información del lanzamiento en excel
            Cells(2 + i, 8) = i
            Cells(2 + i, 9) = dado
            Cells(2 + i, 10) = Suma
        Loop
    
    'Guardar cantidad de lanzamientos
    DW = i
    'Mensaje con información de los lanzamientos
    m = "Esta vez el dado se lanzó " & DW & " veces para  llegar a sumar " & Suma & "."
    m2 = MsgBox(m, , "Resultado")
    'Pegar información de los lanzamientos en la hoja de cálculo
    Cells(4 + i, 8) = m
End Function 

Ciclos Do While - Loop:

Una recomendacion que creo es muy importante y así lo manifiesta lo comunidad en programacion, es que cuando se crean variables no se usen mayúsculas y menos que empiecen con números. Esto hace parte de las buenas practicas en programamación.

Con este código se podra hacer seguimiento a los valores que van tomando el contador, la suma acumulada y el lanzamiento. Para que el valor aleatorio del lanzamiento del dado cambie en cad iteracion del contador, esta instrucción debe estar dentro del ciclo Do While - Loop

'Usando el ciclo Do While Loop. Usando la funcion dado anteriormente creada vamos a contar las veces que se lanza un dato para que sume 100

Public Function dw() As Integer

    Dim dado As Integer
    Dim i As Integer
    Dim suma As Integer
    Dim m
    Dim m2
    Dim m3
    Dim m4
    
    m = MsgBox("El valor de i es: " & i & " y el valor de suma es: " & suma)
    
    Do While suma < 100
    
        dado = WorksheetFunction.RandBetween(1, 6)
        i = i + 1
        suma = suma + dado
        
        m2 = MsgBox("El valor de dado es: " & dado)
        m3 = MsgBox("En el ciclo No. " & i & " el valor de suma es: " & suma & " y el valor de dado es: " & dado)
        
    Loop
    
    dw = i
    m4 = MsgBox("La cantidad de lanzamientos para llegar a 100 o más fué de: " & dw)

End Function

Pueden poner los mensajes m, m2 y m3 como comentario y dejar solamente el m4 para obtener la respuesta por ventana.

Buena clase.

Qué bien se sintió hacer el ejercicio solita

Public Function DW1() As Integer

Dim DADO As Integer
Dim i As Integer
Dim SUMA As Integer
Dim n As Integer

DADO = WorksheetFunction.RandBetween(1, 6)
n = InputBox("cifra deseada", "sumatoria")

Do While SUMA < n
    i = i + 1
    SUMA = SUMA + DADO
Loop

DW1 = i

End Function

Buena tarde para todos, este es mi reto:

Public Function DW() As String

Dim dado As Integer
Dim s As Integer
Dim z As Integer
Dim e

z = InputBox("¿Cuántas veces quieres sumar cada lanzamiento de los dados?")

If z < 1 Then

 e = MsgBox("Debes ingresar al menos una vez. Ud. ingresó " & z & " veces")

Else
s = 0
i = 1
Do While i <= z
dado = WorksheetFunction.RandBetween(1, 6)
s = s + dado
i = i + 1
Loop

DW = MsgBox("Ud. pidió sumar " & z & " veces. " & " La Suma de los dados es " & s)

End If

End Function

DO WHILE -LOOP
Divirtiendome un poco con el ejercicio de la clase antes que la docente muestre su solución.

Public Function DW() As Integer
    Dim t As Integer 'tiro aleatorio
    Dim st As Integer 'suma del valor de los tiros
    Dim a
    DW = 0
    st = 0
    Do While st <> 7
        
        t = Application.WorksheetFunction.RandBetween(1, 6)
        If st > 7 Then
        st = st - t
        Else:
            st = st + t
              
        End If
        
        DW = DW + 1 'CUENTA LA CANTIDAD DE TIROS HASTA OBTENER LA SUMA DE 7
        Sheets("Hoja2").Select
        Cells(DW + 1, 3) = DW 'Imprime el número de tiros
        Cells(DW + 1, 4) = t  'imprime el valor del tiro
        Cells(DW + 1, 5) = st 'imprime la suma si es menor o resta si es mayor a 7 del valor de los tiros aleatorio
    Loop
    
    a = MsgBox("El número de tiros para obtener: " & st & "es: " & DW, vbInformation)
End Function

A continuación el desarrollo de la actividad propuesta:

Public Function DW() As Integer
    Dim dado As Integer
    Dim i As Integer
    Dim s As Integer
    Dim suma As Integer
    suma = InputBox("Ingresa un resultado a sumar", "Suma Dados")
    Dim r As Integer
    
    dado = WorksheetFunction.RandBetween(1, 6)
    
    Do While s < suma
        i = i + 1
        s = s + dado
    Loop
    
    DW = i
    r = MsgBox("El dado se lanzó las siguientes veces: " & i, , "Suma dado")
    
End Function
Public Function DoWhile() As Integer
    Dim dado As Integer
    Dim contador As Integer
    Dim sumas As Integer
    
    Dim veces As Integer
    
    veces = InputBox("ingrese hasta que numero debemos lanzar el dado", "Repeticiones")
    
    dado = WorksheetFunction.RandBetween(1, 6)
    
    Do While sumas < veces
    contador = contador + 1
    sumas = sumas + dado
    Loop
    
    DoWhile = MsgBox(contador)
    
End Function

¿Para qué nos sirven los ciclos Do While - Loop?

Public Function dw() As Integer

    Dim dado As Integer
    Dim i As Integer
    Dim s As Integer
    Dim usuario As Integer
    
    ''initializer
    i = 0
    s = 0
    ''user request
    usuario = InputBox("Hasta que numero quieres llegar", "Suma dados")
    
    Do While s < usuario
        'la funcion random debe se estar en el ciclo
        ''si no es como si no lanzara los dados varias veces
        dado = WorksheetFunction.RandBetween(1, 6)
        i = i + 1
        s = s + dado
    Loop
    
    dw = i

End Function

Public Function DW() As Integer
Dim dado As Integer
Dim numerodado As Integer
Dim i As Integer
Dim s As Integer

Z = InputBox("Numero a llegar")
s = 0
i = 0

Do While s < numerodado
    dado = WorksheetFunction.RandBetween(1, 6)
    i = i + 1
    s = s + dado
Loop

DW = i

End Function

Le puse que se impriman los resultados en las celdas para ver que estaba haciendo la funcion en cada ciclo. Entonces veo que el dado es lanzado una sola vez y ese resultado es sumado en cada iteracion hasta el maximo de suma que le ingresamos.

Function DW() As Integer

	Dim dado As Integer
Dim contador As Integer
Dim suma As Integer
Dim cantidad As Integer

    dado = WorksheetFunction.RandBetween(1, 6)

    cantidad = InputBox("Cula es la suma a la que deseas llegar?", "Suma deseada")

Do While suma < cantidad
    contador = contador + 1
    Cells(contador, 2) = contador
                    
    suma = suma + dado
    Cells(contador, 3) = suma
Loop

DW = contador


End Function

calidad?

Solución al reto

Public Function DW() As Integer
Dim dado As Integer
Dim i As Integer
Dim s As Integer
Dim limit As Integer

limit = InputBox("Ingresa el límite de la suma ")


Do While s < limit
dado = WorksheetFunction.RandBetween(1, 6)
i = i + 1
s = s + dado
Loop

DW = i

End Function

Fórmula de Clase

'Función que cuenta cuantos lanzamientos de un dado de la cantidad de lados que el usuario necesita para llegar al valor indicado por el usuario.

Public Function cuenta_dados() As Integer
    Dim dado As Integer
    Dim i As Integer
    Dim suma As Integer
    suma = 0
    i = 0
    Dim numero_meta As Integer
    numero_meta = InputBox("Ingresa el número al que quieres llegar")
    cantidad_lados = InputBox("Ingresa la cantidad de lados del dado")
    Do While suma < numero_meta
'Crea un número aleatorio de 6 lados
        dado = WorksheetFunction.RandBetween(1, cantidad_lados)
        i = i + 1
        suma = suma + dado
'Cierra el ciclo y vuelve a ejecutar lo que esté dentro del ciclo
    Loop
'Devuelve el valor de contador para saber cuantas veces se ha lanzado el dado
    cuenta_dados = i
End Function

'Función que cuenta cuantos lanzamientos de un dado de 6 lados necesito para llegar al valor indicado por el usuario.

Public Function cuenta_dados() As Integer
    Dim dado As Integer
    Dim i As Integer
    Dim suma As Integer
    suma = 0
    i = 0
    Dim numero_meta As Integer
    numero_meta = InputBox("Ingresa el número al que quieres llegar")
    Do While suma < numero_meta
        dado = WorksheetFunction.RandBetween(1, 6)
        i = i + 1
        suma = suma + dado
'Cierra el ciclo y vuelve a ejecutar lo que esté dentro del ciclo
    Loop
'Devuelve el valor de contador para saber cuantas veces seha lanzado el dado
    cuenta_dados = i
End Function

Aquí está mi ejercicio

a diferencia del ejemplo de la profesora yo decidí que cada vez que se ejecute el ciclo se tenga que lanzar el dado

Acá va un pequeño ajuste para que el usuario pueda indicar la fila y columna donde desea que empiece la sucesión:
(

Public Function DW() As Integer
    Dim dado As Integer
    Dim c As Integer
    Dim sum As Integer
    Dim a As Integer
    a = InputBox("Limite de la suma que desea llegar", "Limite")
    dado = WorksheetFunction.RandBetween(1, 6)
    
    Do While sum < a
        c = c + 1
        sum = sum + dado
    
    Loop
    
    DW = c

End Function

Mi resultado 👇:

Do while lo que hace es que ejecutamos primero todo el bloque de instrucciones, y al final siempre comprobaremos la condición para salir.

lo que se pidio que el usuario pusiera un numero aleatorio y luego lo muestre

Do while.
aprendido

Public Function DW() As Integer
Dim dado As Integer
Dim i As Integer
Dim suma As Integer
Dim numero_user As Integer

numero_user = InputBox("Ingrese número de la suma", "Dado")

dado = WorksheetFunction.RandBetween(1, 6)

Do While s < numero_user
    i = i + 1
    s = s + dado
Loop
DW = i

End Function