Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [VBA/Excel] Ciclo Do

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92

    [VBA/Excel] Ciclo Do

    Ciao a tutti, ho il seguente codice:

    codice:
    Sub Ammortamento_Francese()    Dim Capitale As Single
        Dim Rate As Single
        Dim Interesse As Single
        Dim Domanda(3) As String
        Dim Dati(3) As Single
        Dim I As Integer
        
        Domanda(1) = "Inserisci Capitale"
        Domanda(2) = "Inserisci Rate"
        Domanda(3) = "Inserisci Tasso Interesse"
    
    
        I = 0
        
        Do
            I = I + 1
            Dati(I) = InputBox(Domanda(I))
            
            If Dati(I) = "" Then
                MsgBox "Devi inserire un numero"
            ElseIf IsNumeric(Dati(I)) = False Then
                MsgBox "Il valore inserito non è un numero"
            Else
                Cells(3 + I, 2).Value = Dati(I)
            End If
        Loop Until I = 3
        
    End Sub
    In pratica se inserisco un valore che non è un numero o una stringa vuota non mi da le msgbox che ho specificato nell'if, ma mi da un errore. Come mai?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92
    Mi sono reso conto che la variabile che identifica InputBox e cioé Dati() deve essere dichiarata come String.
    Mi va bene lasciarla come String, ma avrei preferito fare una conversione. Ho provato a fare:
    codice:
    Dati(I)= CSng(InputBox(Domanda(I)))
    
    ma mi da errore.

  3. #3
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,288
    E certo che ti da errore...
    Dati() è un array di valori single e quindi può contenere solo valori single (numeri con la virgola)

    Dovresti salvarti il valore inserito dall'utente in una variabile string, verificare se è un numero, fare il cast della string in una variabile single e POI procedere con il calcolo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92
    In questo modo?

    codice:
        Dim Capitale As Single    Dim NRate As Integer
        Dim Rata As Single
        Dim Interesse As Single
        Dim Figurato As Single
        Dim Domanda(3) As String
        Dim Dati(3) As String
        Dim I As Integer
        
        Domanda(1) = "Inserisci Capitale"
        Domanda(2) = "Inserisci Rate"
        Domanda(3) = "Inserisci Tasso Interesse"
        
        I = 0
    
    
        Do
            I = I + 1
            Dati(I) = InputBox(Domanda(I))
            
            If Dati(I) = "" Then
                MsgBox "Devi inserire un numero"
            ElseIf IsNumeric(Dati(I)) = False Then
                MsgBox "Il valore inserito non è un numero"
            Else
                Cells(3 + I, 2).Value = CSng(Dati(I))
            End If
        Loop Until I = 3

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quale errore ti dà ?

    Dati(I)= CSng(InputBox(Domanda(I)))

    P.S. Usi VBA per Excel?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Quale errore ti dà ?

    Dati(I)= CSng(InputBox(Domanda(I)))

    P.S. Usi VBA per Excel?
    Si uso VBA per Escel, comunque con l'ultimo codice che ho postato non mi da più errore

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.