ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to write a range function? (https://www.excelbanter.com/excel-programming/361449-how-write-range-function.html)

[email protected]

How to write a range function?
 
Hi,

How can I write a function (such as sum) which could be called on the
result of range operation such as A1:A10/A1:A10.

In other words, I want to call function in the following way:

mysum(A1:A10/A1:A10) Ctrl-Shift-Enter

The following does not work:

Function mysum(r As Range) As Double
Dim i As Integer
pgSum = 0
For i = 1 To r.Rows.Count
pgSum = pgSum + r(i)
Next i
End Function

Many thanks in advance!

Aaron Fude


Norman Jones

How to write a range function?
 
Hi Aaron,

Try:

'=============
Public Function mySum(r As Range) As Double
Dim i As Integer

For i = 1 To r.Rows.Count
If IsNumeric(r(i)) Then
mySum = mySum + r(i)
End If
Next i
End Function
'<<=============


---
Regards,
Norman



wrote in message
ups.com...
Hi,

How can I write a function (such as sum) which could be called on the
result of range operation such as A1:A10/A1:A10.

In other words, I want to call function in the following way:

mysum(A1:A10/A1:A10) Ctrl-Shift-Enter

The following does not work:

Function mysum(r As Range) As Double
Dim i As Integer
pgSum = 0
For i = 1 To r.Rows.Count
pgSum = pgSum + r(i)
Next i
End Function

Many thanks in advance!

Aaron Fude




Norman Jones

How to write a range function?
 
Hi Aaron,

I would additionally suggest that you change:

Dim i As Integer


to

Dim i As Long


---
Regards,
Norman



kounoike[_2_]

How to write a range function?
 
Try:

Function mysum(ByVal r As Variant) As Variant
Dim tmp As Variant
Dim i As Long, j As Long
Dim pgsum As Variant
tmp = r
For i = LBound(tmp, 1) To UBound(tmp, 1)
For j = LBound(tmp, 2) To UBound(tmp, 2)
pgsum = pgsum + tmp(i, j)
Next
Next
mysum = pgsum
End Function

keizi

wrote in message
ups.com...
Hi,

How can I write a function (such as sum) which could be called on the
result of range operation such as A1:A10/A1:A10.

In other words, I want to call function in the following way:

mysum(A1:A10/A1:A10) Ctrl-Shift-Enter

The following does not work:

Function mysum(r As Range) As Double
Dim i As Integer
pgSum = 0
For i = 1 To r.Rows.Count
pgSum = pgSum + r(i)
Next i
End Function

Many thanks in advance!

Aaron Fude




All times are GMT +1. The time now is 05:44 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com