Calcolo dimensioni con Macro



  • Calcolo dimensioni con Macro
    di Guybrush (utente non iscritto) data: 28/12/2015 16:39:22

    Salve a tutti,
    ho un dilemma che mi attanaglia. Per farla breve, se la cella corrispondente in colonna G è uguale a "19" deve fare determinati calcoli, trai quali quello dei metri quadrati.

    Nello specifico ho una sola riga con "19", e long e lato corrispondono entrambi a 300mm.

    Di conseguenza questa operazione:

    totmqint = (lung / 1000 * lato / 1000)

    Se la matematica non ci inganna deve venire 0,09 mq

    Potete ora spiegarmi, essendoci solamente una riga da calcolare, perchè questa operazione:

    totmq = totmq + totmqint

    Mi da come risultato totmq = 0,18?

    Grazie a tutti in anticipo.
    Saluti



     
    totmq = 0
    totmqint = 0
    
    For I = 1 To URO
    
    Range("G" & 1 + I).Select
    spess = ActiveCell.Text
    
    If spess <> "19" Then
    Range("G" & 1 + I).Select
    
    Else
    
    ActiveCell.Offset(0, -2).Select
    lung = ActiveCell.Value
    ActiveCell.Offset(0, 4).Select
    nr = ActiveCell.Value
    ActiveCell.Offset(0, -3).Select
    lato = ActiveCell.Value
    
    calcint = ((1.5 + lung / 1000) / tempomin) * nr
    totmqint = (lung / 1000 * lato / 1000)
    
    End If
    
    calclungunoint = calclungunoint + calcint
    totmq = totmq + totmqint
    
    Next I



  • di Marius44 data: 28/12/2015 19:22:34

    Ciao Guybrush
    ti suggerisco di allegare il file. Nello spezzone di codice che hai allegato mancano alcuni valori; URO, nr, tempomin

    Ciao,
    Mario



  • di Guybrush (utente non iscritto) data: 30/12/2015 08:47:35

    Grazie della risposta Mario. Mi dispiace ma non posso perchè è materiale aziendale. Comunque:

    URO: ultima riga occupata
    nr: numero colli
    tempomin: velocità al minuto



  • di patel data: 30/12/2015 09:15:13

    puoi sempre allegare un file di esempio costruito da te che non sia quello aziendale in modo da poter testare la macro.





  • di Mister_x (utente non iscritto) data: 30/12/2015 10:17:37

    ciao

    a quardare dalla sub proposta non mi sembra un file cosi' importante
    comunque partiamo da quel accendere e spegnere Celle inutilmente
    usa cells() e non Range() per selezionare i dati

    altra cosa il calcolo lo devi esequire tutto nel ciclo di controllo IF end

    quindi se la sub lavessi scritta io l'avrei tagliata tutta buttando il superfluo

    ciao
     
    Dopo i vari tagli
    
    For I = 2 To URO  ''perche' 1 ?? quando parti da due
              ''Range("G" & 1 + I).Select  '' I+1 = 2
              ''spess = ActiveCell.Text
    spess = Cells(I, 7).Text
    If spess = "19" Then  '' esgui solamente se il valore e' 19 tutto il resto salta
               '''Range("G" & 1 + I).Select
                ''Else
                ''ActiveCell.Offset(0, -2).Select
                ''lung = ActiveCell.Value
                ''ActiveCell.Offset(0, 4).Select
                ''nr = ActiveCell.Value
                ''ActiveCell.Offset(0, -3).Select
                ''lato = ActiveCell.Value
      lung = Cells(I, 5)
      nr = Cells(I, 11)
      lato = Cells(I, 4)
      calcint = ((1.5 + lung / 1000) / tempomin) * nr
      totmqint = (lung / 1000 * lato / 1000)
         calclungunoint = calclungunoint + calcint
         totmq = totmq + totmqint
    End If
                           ''calclungunoint = calclungunoint + calcint
                           ''totmq = totmq + totmqint
    
    Next I
    






  • di Guybrush (utente non iscritto) data: 31/12/2015 11:15:45

    Perfetto, grazie a tutti per l'aiuto e per i consigli