Area Piramide



  • Area Piramide
    di Pistolero (utente non iscritto) data: 16/09/2013 12:11:02

    Buongiorno a tutti_

    Ho bisogno di scrivere in VBA il codice per il calcolo del volume di una piramide a base quadrata di cui si conosce base e altezza_
    Volume = area base * altezza tutto diviso 3
    con le formule è semplice... ma con il codice non altrettanto...
    Ho provato con il registratore di macro ma non funziona...




  • FILTRI SU LISTBOX
    di salvewa (utente non iscritto) data: 16/09/2013 12:15:31

    Ciao carissimi come state?
    Sono di nuovo qui x risolvere, spero e grazie a voi, un errore sul file che allego.

    Tengo subito a precisare, per correttezza, che il lavoro che vedrete non è opera mia. Ho solo adattato nel codice alcune piccole cose per quello che mi serviva fare.
    Riscontro il seguente problema che non riesco a risolvere:
    una volta caricata la Form e scelgo ad es. un dato dalla combob nr. 2 avrò probabilmente il seguente messaggio:
    Err run-time 1004
    Err definito dall'applicazione o dall'oggetto
    e premuto Debug, la riga incriminata è:
    aCombo = .Index(rngDb.Columns.EntireColumn, .Transpose(aRows), Array(i))

    Scrivo su ""..avrò probabilmente il seguente mess.." perchè questo errore lo fa o subito, già scegliendo il primo dato dalla combob 2, o comunque la farà al secondo o al terzo tentativo di scelta dato.
    Cosa non va e cosa bisogna modificare?

    In attesa di un vostro, come sempre, preziosissimo aiuto, vi abbraccio e vi ringrazio a prescindere.
    salvewa


  • FILTRI SU LISTBOX
    di salvewa (utente non iscritto) data: 16/09/2013 12:16:38

    Ciao carissimi come state?
    Sono di nuovo qui x risolvere, spero e grazie a voi, un errore sul file che allego.

    Tengo subito a precisare, per correttezza, che il lavoro che vedrete non è opera mia. Ho solo adattato nel codice alcune piccole cose per quello che mi serviva fare.
    Riscontro il seguente problema che non riesco a risolvere:
    una volta caricata la Form e scelgo ad es. un dato dalla combob nr. 2 avrò probabilmente il seguente messaggio:
    Err run-time 1004
    Err definito dall'applicazione o dall'oggetto
    e premuto Debug, la riga incriminata è:
    aCombo = .Index(rngDb.Columns.EntireColumn, .Transpose(aRows), Array(i))

    Scrivo su ""..avrò probabilmente il seguente mess.." perchè questo errore lo fa o subito, già scegliendo il primo dato dalla combob 2, o comunque la farà al secondo o al terzo tentativo di scelta dato.
    Cosa non va e cosa bisogna modificare?

    In attesa di un vostro, come sempre, preziosissimo aiuto, vi abbraccio e vi ringrazio a prescindere.
    salvewa



  • di Grograman data: 16/09/2013 12:24:03


     
    Option Explicit
    Sub Egitto()
      Dim Base As Double, Altezza As Double, Volume As Double
      Base = 10
      Altezza = 10
      Volume = (Base ^ 2 * Altezza) / 3
    End Sub



  • di totygno71 (utente non iscritto) data: 16/09/2013 12:48:25

    Prova anche questo
     
    Option Explicit
    Sub piramide()
    Dim a As Variant, h As Variant, vol As Single
    Application.ScreenUpdating = False
    
    1:
    a = InputBox("Inserisci lunghezza base della piramide")
    If Not IsNumeric(a) Then
    MsgBox "Inserire un numero"
    GoTo 1:
    End If
    2:
    h = InputBox("Ora inserisci anche l'altezza")
    If Not IsNumeric(h) Then
    MsgBox "Inserire un numero"
    GoTo 2:
    End If
    
    vol = Val(a) * Val(h) / 3
    
    MsgBox " il volume della tua piramide è di " & vol & " !!!"
    
    
    End Sub
    



  • di Pistolero (utente non iscritto) data: 16/09/2013 13:26:34

    grazie ad entrambi..

    grograman quandolancio la tua macro non succede nulla..
    Totygno71 la tua invece non mi da il risultato giusto sai dirmi come mai?



  • di totygno71 (utente non iscritto) data: 16/09/2013 13:32:41

    hai ragione...


     
    'Sostituisci:
    
       vol = Val(a) * Val(h) / 3
    
    con
    
       vol = Val(a^2) * Val(h) / 3



  • di Grograman data: 16/09/2013 13:38:21


     
    Option Explicit
    
    Sub Egitto()
      Dim Base As Double, Altezza As Double, Volume As Double
      Base = Application.InputBox("Base", Type:=1)
      Altezza = Application.InputBox("Altezza", Type:=1)
      Volume = MsgBox("Volume: " & (Base ^ 2 * Altezza) / 3)
    End Sub
    



  • di Pistolero (utente non iscritto) data: 16/09/2013 14:33:08


    Ottimo! Grazie Grograman



  • di Grograman (utente non iscritto) data: 16/09/2013 14:43:45

    Precisazione,

    Volume = MsgBox("Volume: " & (Base ^ 2 * Altezza) / 3)


    Sarebbe

    MsgBox("Volume: " & (Base ^ 2 * Altezza) / 3)

    e "Volume" non serve più



  • di Pistolero (utente non iscritto) data: 16/09/2013 14:50:35