Question

I want to create a function that calculate cell in a determined range.

When I return the value of the calc to excel I get an #VALUE! error, which means that the variable types are different.

I tried to use Cint(var) and get the same error.

Here is the code without Cint():

Function CalcTest(Interval As Range) As Integer
    Dim x As Integer
    Dim y As Integer
    x = Interval.Offset(0, 0).Value
    y = Interval.Offset(1, 0).Value
    CalcTest = x + y
End Function

I already tried:

Function CalcTest(Intervalo As Range) As Integer
    CalcTest = Interval.Offset(0, 0).Value + Interval.Offset(1, 0).Value
End Function

And:

Function CalcTest(Interval As Range) As Integer
    Dim x As Integer
    Dim y As Integer
    x = CInt(Interval.Offset(0, 0).Value)
    y = CInt(Interval.Offset(1, 0).Value)
    CalcTest = x + y
End Function

And Without declarating de function type:

Function CalcTest(Interval As Range)
    ...
    ...
End Function

And in Excel I call the function with some range:

=CalcText(A1:A2)

What Am I doing wrong?

#

The big picture:

enter image description here

What I need to do is create a cel in any place that counts de total values of the $R col for every occurrency of a key value in $N col.

For every time I have "TH" in $N Col, I need do accumulate de $R col value of that row in a cel.

Same for many others $N Values.

In this sample the value of the accumulated cel for TH in $N is 25.

Tks for the help!!!

Was it helpful?

Solution

You are making this way hard on yourself.

Put this into a cell in row 2 and drag it down:

=SUMIF(N$2:N2,"TH",R$2:R2)

OTHER TIPS

Is this what you are trying?

Public Function CalcTest(rng1 As Range, rng2 As Range) As Variant
    On Error GoTo Whoa

    CalcTest = rng1.Value + rng2.Value

    Exit Function
Whoa:
    CalcTest = "Please check the Range Values"
End Function

In an Excel cell, put this formula =CalcText(A1,A2)

enter image description here

You should not simplify your code to something that doesn't fairly represent your question. From your comments and Question.

Function CalcTest(Interval As Range) As Integer
    Dim x As Range
    CalcTest = 0
    For Each x In Interval
        If IsNumeric(x) Then
            CalcTest = CalcTest + x.Value
        End If
    Next x
End Function

This will make sure what you are adding up is actually a number.

But as is this will not work any different then the worksheet function:

=Sum(Range)

Simply converting the values to Integer won't work if what you are converting is not converatble. If you pass a Letter to the CInt() function it will just fail.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top