Funzione di calcolo



  • Funzione di calcolo di Ottomila (utente non iscritto) data: 10/10/2013 16:16:50

    Ciao ragazzi, mi rivolgo ancora alle Vostre menti perché ho un problema con delle attribuzioni in una funzione. Vi allego sia il codice VBA (sbagliato) che il file in cui c'è scritto tutto. Ciao
     
    Option Explicit
    
    Function taratura(Q, Dpcir As Variant, diamval As String)
    Dim giri, Ddiff, Dp As Long
    Dim Dp_terra, Dp_primo As Range
    Dim Dpmax As Variant
    Set Dp_terra = Worksheets(1).Range("F4:F9")
    Set Dp_primo = Worksheets(1).Range("F11:F18")
    'If IsEmpty(Range(Dp_terra)) Or IsEmpty(Range(Dp_primo)) Then:
    'Exit Function
    Dpmax = WorksheetFunction.Max(Dp_terra)
    If Dpmax = WorksheetFunction.Max(Dp_terra) Then
          Ddiff = Dpmax - Dpcir
          If diamval = "3/8''" And Ddiff <= Dpmax Then
          Dp = 3.4826 * Q ^ 1.909
                If Dp <= Ddiff Then
                giri = "¾": GoTo ok
                End If
          Dp = 2.418 * Q ^ 1.7925
               If Dp <= Ddiff Then
                giri = "1": GoTo ok
                End If
          Dp = 0.8027 * Q ^ 1.7982
                If Dp <= Ddiff Then
                giri = "1 ½": GoTo ok
                End If
          Dp = 0.1222 * Q ^ 1.908
                If Dp <= Ddiff Then
                giri = "2": GoTo ok
                End If
          Dp = 0.0166 * Q ^ 1.9727
                If Dp <= Ddiff Then
                giri = "2 ½": GoTo ok
                End If
          Dp = 0.0035 * Q ^ 2.0706
                If Dp <= Ddiff Then
                giri = "3": GoTo ok
                End If
          Dp = 0.0016 * Q ^ 2.0403
                If Dp <= Ddiff Then
                 giri = "4": GoTo ok
                End If
          Dp = 0.0007 * Q ^ 2.1117
                If Dp <= Ddiff Then
               giri = "A": GoTo ok
                Else
                giri = "Ap"
                End If
    End If
     If diamval = "1/2''" And Ddiff <= Dpmax Then
          Dp = 3.205 * Q ^ 1.6734
                If Dp <= Ddiff Then
                giri = "½": GoTo ok
                End If
          Dp = 1.072 * Q ^ 1.67
               If Dp <= Ddiff Then
                giri = "¾": GoTo ok
                End If
          Dp = 0.4727 * Q ^ 1.6783
                If Dp <= Ddiff Then
                giri = "1": GoTo ok
                End If
          Dp = 0.216 * Q ^ 1.7158
                If Dp <= Ddiff Then
                giri = "1 ½": GoTo ok
                End If
          Dp = 0.1533 * Q ^ 1.7264
                If Dp <= Ddiff Then
                giri = "2": GoTo ok
                End If
          Dp = 0.0984 * Q ^ 1.7527
                If Dp <= Ddiff Then
                giri = "3": GoTo ok
                End If
          Dp = 0.0442 * Q ^ 1.842
                If Dp <= Ddiff Then
                 giri = "4": GoTo ok
                End If
          Dp = 0.0167 * Q ^ 1.9003
                If Dp <= Ddiff Then
                 giri = "4 ½": GoTo ok
                End If
          Dp = 0.0066 * Q ^ 1.9063
                If Dp <= Ddiff Then
                 giri = "5": GoTo ok
                End If
          Dp = 0.0025 * Q ^ 1.8928
                If Dp <= Ddiff Then
               giri = "A": GoTo ok
                Else
                giri = "Ap"
                End If
          End If
    If Dpmax = WorksheetFunction.Max(Dp_primo) Then
          Ddiff = Dpmax - Dpcir
       If diamval = "3/8''" And Ddiff <= Dpmax Then
          Dp = 3.4826 * Q ^ 1.909
                If Dp <= Ddiff Then
                giri = "¾": GoTo ok
                End If
          Dp = 2.418 * Q ^ 1.7925
               If Dp <= Ddiff Then
                giri = "1": GoTo ok
                End If
          Dp = 0.8027 * Q ^ 1.7982
                If Dp <= Ddiff Then
                giri = "1 ½": GoTo ok
                End If
          Dp = 0.1222 * Q ^ 1.908
                If Dp <= Ddiff Then
                giri = "2": GoTo ok
                End If
          Dp = 0.0166 * Q ^ 1.9727
                If Dp <= Ddiff Then
                giri = "2 ½": GoTo ok
                End If
          Dp = 0.0035 * Q ^ 2.0706
                If Dp <= Ddiff Then
                giri = "3": GoTo ok
                End If
          Dp = 0.0016 * Q ^ 2.0403
                If Dp <= Ddiff Then
                 giri = "4": GoTo ok
                End If
          Dp = 0.0007 * Q ^ 2.1117
                If Dp <= Ddiff Then
               giri = "A": GoTo ok
                Else
                giri = "Ap"
                End If
    End If
     If diamval = "1/2''" And Ddiff <= Dpmax Then
          Dp = 3.205 * Q ^ 1.6734
                If Dp <= Ddiff Then
                giri = "½": GoTo ok
                End If
          Dp = 1.072 * Q ^ 1.67
               If Dp <= Ddiff Then
                giri = "¾": GoTo ok
                End If
          Dp = 0.4727 * Q ^ 1.6783
                If Dp <= Ddiff Then
                giri = "1": GoTo ok
                End If
          Dp = 0.216 * Q ^ 1.7158
                If Dp <= Ddiff Then
                giri = "1 ½": GoTo ok
                End If
          Dp = 0.1533 * Q ^ 1.7264
                If Dp <= Ddiff Then
                giri = "2": GoTo ok
                End If
          Dp = 0.0984 * Q ^ 1.7527
                If Dp <= Ddiff Then
                giri = "3": GoTo ok
                End If
          Dp = 0.0442 * Q ^ 1.842
                If Dp <= Ddiff Then
                 giri = "4": GoTo ok
                End If
          Dp = 0.0167 * Q ^ 1.9003
                If Dp <= Ddiff Then
                 giri = "4 ½": GoTo ok
                End If
          Dp = 0.0066 * Q ^ 1.9063
                If Dp <= Ddiff Then
                 giri = "5": GoTo ok
                End If
          Dp = 0.0025 * Q ^ 1.8928
                If Dp <= Ddiff Then
               giri = "A": GoTo ok
                Else
                giri = "Ap"
                End If
          End If
    End If
    End If
    ok: taratura = giri
    End Function