Sostieni Excel VBA con una donazione! Con la tua donazione potrai contribuire al mantenimento del servizio.
Le donazioni sono eseguite con PayPal, il modo più facile, comodo e sicuro per pagare online.
Paypal accetta anche carta di credito o carte prepagate.

Errore "run-time 13'

  • FILE ALLEGATI:
  • Errore §run-time 13' di Jessa (Utente non iscritto) data: 09/01/2017 10:13:27 



    Buongiorno a tutti,
    come da titolo, si manifesta l'errore "run time 13" tipo non corrispondente.

    Introduco lo scopo del codice scritto:
    sto creando un tool su excel che permetta il calcolo di costi di installazione di reti elettriche in determinati luoghi, con diverse dimensioni delle reti, e con "approcci elettrici" diversi (AC o DC).
    Il calcolo dei costi prevede l'utilizzo di costi specifici, i quali dipendono ovviamente dalle classificazione sopra esplicitate: location, size , AC/DC.
    Questi costi specifici sono salvati all'interno del tool di excel.

    Lo scopo del codice era quello di valutare le "scelte" fatte dall'utente e selezionare questi costi specifici per poi poter calcolare i costi totali.

    Precisazione:
    Per scelte effettuate dall'utente intendo l'inserimento in determinate celle di valori selezionabili da elenco. esempio: Nella cella (8,15) è possibile selezionare solo tra: Africa o Latin america (da elenco)

    Il problema:
    Se viene selezionata nella location "Latin america" mi viene dato l'error run time 13.
    Tutti gli altri casi invece danno risultato.

    Ringrazio anticipatamente ogni aiuto
     
    Sub NPCalculation()
    'disattivare l'aggiornamento dello schermo
    Application.ScreenUpdating = False
    
    Dim CF, CFtot, CostInv, r, starty, years, pvsize, batsize, NPC, NPCmin, cOM, cinvav, cinvmax, cinvmin, cbat As Double
    
    'Inizializzazione valori
    years = Foglio8.Cells(6, 15)
    starty = Foglio8.Cells(7, 15)
    cOM = Cells(8, 5)
    cbat = Foglio7.Cells(5, 9)
    r = Cells(10, 5)
    
    'selezione coef. in base alla zona geografica
    If Foglio8.Cells(8, 15) = "Africa" Then
    'caso Africa
    
        If Foglio7.Cells(39, 3) = ">1kW" Then
        'caso >1kW
            
            If Foglio7.Cells(39, 5) = "Inverter" Then
                'caso con Inverter
                cinvmin = Foglio7.Cells(23, 4)
                cinvav = Foglio7.Cells(24, 4)
                cinvmax = Foglio7.Cells(25, 4)
            Else
                'caso senza inverter
                cinvmin = Foglio7.Cells(15, 4)
                cinvav = Foglio7.Cells(16, 4)
                cinvmax = Foglio7.Cells(17, 4)
            End If
        
        ElseIf Foglio7.Cells(39, 3) = "<1kW" Then
        'caso <1kW
            
            If Foglio7.Cells(39, 5) = "Inverter" Then
                'caso con Inverter
                cinvmin = Foglio7.Cells(19, 4)
                cinvav = Foglio7.Cells(20, 4)
                cinvmax = Foglio7.Cells(21, 4)
            Else
                'caso senza inverter
                cinvmin = Foglio7.Cells(11, 4)
                cinvav = Foglio7.Cells(12, 4)
                cinvmax = Foglio7.Cells(13, 4)
            End If
        Else 'caso Utility scale non ha distinzione inverter o no
        cinvmin = Foglio7.Cells(7, 4)
        cinvav = Foglio7.Cells(8, 4)
        cinvmax = Foglio7.Cells(9, 4)
        End If
    'caso latin america non ha alcuna distinzione, si utilizzano dei valori medi per tutti i casi
    Else
    cinvmin = Foglio7.Cells(28, 4)
    cinvav = Foglio7.Cells(29, 4)
    cinvmax = Foglio7.Cells(30, 4)
    End If
    
    'continua con i calcolo dei costi totali.....
    
    'riattivare l'aggiornamento dello schermo
    Application.ScreenUpdating = True
    End Sub
  • di patel (Utente esperto) data: 09/01/2017 14:54:39 



    allega il file
  • di Jessa (Utente) data: 09/01/2017 15:29:00 



    File allegato.
    Il codice fa riferimento al modulo "Cost".
  • di Albatros54 (Utente esperto) data: 09/01/2017 15:33:06 



    Ti da errore perche non puoi moltiplicare pvsize per una cinvav, perche cinvav contiene una STRINGA"averange"
    albatrtos54 
     
     CostInv = pvsize * cinvav + batsize * cbat
    
    Else
    cinvmin = Foglio7.Cells(28, 5)<<====4 è stato sostituito con 5
    cinvav = Foglio7.Cells(29, 5)<<====4 è stato sostituito con 5
    cinvmax = Foglio7.Cells(30, 5)<<====4 è stato sostituito con 5
    End If
    
  • di Jessa (Utente) data: 09/01/2017 15:40:00 



    Eh già!!!...Mi sento un pirla...

    Grazie mille per l'aiuto e la celerità
  • di Albatros54 (Utente esperto) data: 09/01/2017 15:45:52 



  • torna su

Sostieni Excel VBA con una donazione! Con la tua donazione potrai contribuire al mantenimento del servizio.
Le donazioni sono eseguite con PayPal, il modo più facile, comodo e sicuro per pagare online.
Paypal accetta anche carta di credito o carte prepagate.