Sviluppare funzionalita su Microsoft Office con VBA Errore "loop senza do", ma do c'è ….

Login Registrati
Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
  • Autore
    Articoli
  • #51686 Score: 0 | Risposta

    Semiuccio
    Partecipante
      1 pt

      Ciao a tutti. Rieccomi qui con un altro problema strano che mi sta capitando.

      Spero non sia un abbaglio banale come l'ultima volta.

      Questa volta sto programmando un giochino per i miei nipotini. Ho un problema con il countdown, nel senso che nel codice ho un ciclo do while ... loop, ma mi dà errore " loop senza do".

      Allego il file e spero nel vostro aiuto.

      Ciao e grazie fin da ora

      Allegati:
      You must be logged in to view attached files.
      #51689 Score: 0 | Risposta

      Raffaele53
      Partecipante
        24 pts
                    If CLESSIDRA Mod 2 = 0 Then
                    With Range("G3")
                        .Interior.Color = vbYellow
                        .Font.Color = vbRed
                    End With
                    End If   <<<<<<<<<<<<<<<<<< manca
        #51691 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts
          Sub crono()
           
              Dim minuti, secondi As Integer
              Dim tempo, inizio, k, CLESSIDRA As Integer
              Dim risposta As String

          Le variabili
          "minuti", "tempo", "inizio", "k"
          non sono correttamente tipizzate a Integer,
          qualcuno sa perche'?   

          #51692 Score: 0 | Risposta

          Semiuccio
          Partecipante
            1 pt

            Raffaele53 ha scritto:

            <code class=" language-c"> If CLESSIDRA Mod 2 = 0 Then With Range("G3") .Interior.Color = vbYellow .Font.Color = vbRed End With End If <<<<<<<<<<<<<<<<<< manca

            Lo sapevo che avrei fatto una svista banale ...... grazie raffaele

            #51693 Score: 0 | Risposta

            Semiuccio
            Partecipante
              1 pt

              vecchio frac ha scritto:

              <code class=" language-c">Sub crono() Dim minuti, secondi As Integer Dim tempo, inizio, k, CLESSIDRA As Integer Dim risposta As String

              Forse perchè devono essere inizializzate come double?

              #51694 Score: 0 | Risposta

              Oscar
              Partecipante
                45 pts

                Manca Un

                End If

                prima del Loop  

                Ho visto solo adesso la correzione  di Raffaele Scusate 

                 

                Option Explicit
                
                Sub crono()
                 
                    Dim minuti, secondi As Integer
                    Dim tempo, inizio, k, CLESSIDRA As Integer
                    Dim risposta As String
                    
                    tempo = InputBox("IMPOSTARE IL TEMPO DI GIOCO?")
                    risposta = MsgBox("HAI IMPOSTATO A < " & tempo & " > MINUTI IL TEMPO" & Chr(13) & "CONFERMI?", vbOKCancel)
                    If risposta = vbCancel Then Exit Sub
                    
                    risposta = MsgBox("PRONTI .... VIA !!!!", vbYesNo)
                    If risposta = vbNo Then Exit Sub
                    
                    tempo = tempo * 60
                    minuti = Int(tempo / 60)
                    secondi = tempo - minuti * 60
                    
                    inizio = Timer
                    Do While Timer - inizio <= tempo
                        k = Timer - inizio
                        CLESSIDRA = tempo - k
                        If CLESSIDRA <= 30 Then
                            With Range("G3")
                                .Interior.Color = vbYellow
                                .Font.Color = vbRed
                            End With
                        End If
                        If CLESSIDRA <= 10 Then
                            If CLESSIDRA Mod 2 = 0 Then
                            With Range("G3")
                                .Interior.Color = vbYellow
                                .Font.Color = vbRed
                            End With
                        Else
                            With Range("G3")
                                .Interior.Color = vbRed
                                .Font.Color = vbYellow
                            End With
                          End If
                         End If
                        minuti = Int(CLESSIDRA / 60)
                        secondi = CLESSIDRA - minuti * 60
                        Range("G3").Value = minuti & ":" & secondi
                        DoEvents
                        
                    Loop
                    
                    With Range("G4")
                        .Value = "STOP"
                        .Interior.Color = vbBlue
                        .Font.Color = vbWhite
                    End With
                    
                End Sub
                #51695 Score: 0 | Risposta

                Raffaele53
                Partecipante
                  24 pts

                  >>> Dim tempo, inizio, k, CLESSIDRA As Integer
                  @vecchio frac >>>>>>>>>>qualcuno sa perche'?
                  Scrivere l'ultima "As Integer" non significa che le prime tre siano "Integer"
                  Ps. Integer inoltre si intende che il valore non superi circa 32.000 e rotti

                  "Dim tempo As Integer, inizio As Integer, k As Integer, CLESSIDRA As Integer"

                  #51696 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Raffaele53 ha scritto:

                    >>> Dim tempo, inizio, k, CLESSIDRA As Integer @vecchio frac >>>>>>>>>>qualcuno sa perche'?
                    Scrivere l'ultima "As Integer" non significa che le prime tre siano "Integer"
                    Ps. Integer inoltre si intende che il valore non superi circa 32.000 e rotti

                    #51697 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      272 pts

                      Allego un file di test per il timer realizzato con le API che permette un'interazione vera col foglio senza errori.

                      Dovrebbe funzionare su tutte le versioni di Excel.

                      Allegati:
                      You must be logged in to view attached files.
                      #51700 Score: 0 | Risposta

                      Raffaele53
                      Partecipante
                        24 pts

                        Carino l'avanzamento colorato.
                        Solo una volta andato in Debug (si è chiuso e riaperto come xlsb), riprovato e riprovato tutto regolare.

                        >>>If VBA7 And Win64 Then
                        Perché la fase 32bit è in rosso?

                        >>>Public timerID As LongPtr
                        Mi spieghi cosè " LongPtr "..........................capito causa 64bit

                        #51702 Score: 0 | Risposta

                        Semiuccio
                        Partecipante
                          1 pt

                          Grazie ragazzi per l'aiuto. Il mio timer funziona tutto ok. 

                          Vorrei ancora un altro aiuto perchè per questa cosa che vorrei fare, non so proprio da che parte iniziare. Ho provato a guardare un pò dappertutto ma non ho cavato alcunchè.

                          Vorrei inserire un file (gong.mp3) audio a tempo scaduto.

                          Se chiedo troppo non importa, ne farò a meno.

                          Ciao

                          #51703 Score: 0 | Risposta

                          Raffaele53
                          Partecipante
                            24 pts

                            1) Non saprei con MP3 solo con i WAV
                            2) Non capisco perché hai messo il codice in "QUESTA CARTELLA DI LAVORO" ???

                            Prima di End Sub scrivi…. Call Suona

                            Adesso aggiungi un MODULO1 e scrivici dentro

                            `'Presumendo che hai W10 oppure W11
                            Option Explicit
                            Public Declare PtrSafe Function sndPlaySound32 _
                                Lib "winmm.dll" _
                                Alias "sndPlaySoundA" ( _
                                    ByVal lpszSoundName As String, _
                                    ByVal uFlags As LongLong) As LongLong
                             
                            Sub Suona()
                            sndPlaySound32 "C:\Windows\Media\Alarm08.wav", 0& 'da modificare
                            End Sub`
                            #51704 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              272 pts

                              Semiuccio ha scritto:

                              Vorrei inserire un file (gong.mp3) audio a tempo scaduto.

                              Guarda anche qui se può interessarti:

                              Come riprodurre effetti e suoni midi con le API sonore

                              Raffaele53 ha scritto:

                              Perché la fase 32bit è in rosso?

                              Perchè per un sistema a 64 bit ci vuole la direttiva PtrSafe altrimenti le API non vengono eseguite e il compilatore segnala errore.

                              #51706 Score: 0 | Risposta

                              Oscar
                              Partecipante
                                45 pts

                                Semiuccio ha scritto:

                                Grazie ragazzi per l'aiuto. Il mio timer funziona tutto ok. 

                                Vorrei ancora un altro aiuto perchè per questa cosa che vorrei fare, non so proprio da che parte iniziare. Ho provato a guardare un pò dappertutto ma non ho cavato alcunchè.

                                Vorrei inserire un file (gong.mp3) audio a tempo scaduto.

                                Se chiedo troppo non importa, ne farò a meno.

                                Ciao

                                Non ho capito cosa significa a tempo scaduto 

                                Comunque per aprie File MP3  la soluzione migliore è convertire OnLine il File mp3 in Wav  lo puoi fare gratuitamente 

                                Oppure inserisci il lettore multimediale che te li apre anche in formato mp3

                                #51710 Score: 0 | Risposta

                                Semiuccio
                                Partecipante
                                  1 pt

                                  Raffaele53 ha scritto:

                                  'Presumendo che hai W10 oppure W11Option ExplicitPublic Declare PtrSafe Function sndPlaySound32 _ Lib "winmm.dll" _ Alias "sndPlaySoundA" ( _ ByVal lpszSoundName As String, _ ByVal uFlags As LongLong) As LongLong Sub Suona()sndPlaySound32 "C:\Windows\Media\Alarm08.wav", 0& 'da modificareEnd Sub`

                                  Grazie infinite. Funziona ok. Ho scaricato un gong in mp3, l'ho convertito in wav e va tutto ok.

                                  grazie a te e a tutti. Ciao

                                  #51711 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    272 pts

                                    Oscar ha scritto:

                                    Non ho capito cosa significa a tempo scaduto

                                    Guarda il codice: dopo il Loop, che e' impostato sui secondi definiti dall'utente.

                                    #51715 Score: 1 | Risposta

                                    Oscar
                                    Partecipante
                                      45 pts

                                      vecchio frac ha scritto:

                                      Guarda il codice: dopo il Loop, che e' impostato sui secondi definiti dall'utente.

                                      Ha era quello che intendeva dire quando finiva il tempo adesso si che ho capito , meglio tardi che mai !

                                    Login Registrati
                                    Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
                                    Rispondi a: Errore "loop senza do", ma do c'è ….
                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                    Le tue informazioni: