View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
GS[_2_] GS[_2_] is offline
external usenet poster
 
Posts: 3,514
Default VBA Countif across sheets?

Hello! I'm running into a problem using the the Countif function in
a VBA code. If I type =countapples() into cell A1 of Sheet1, it
returns the expected answer. See countapples() function below:

________________________________________________
Function CountApples()

Dim TopOfRange As Double
Dim BottomOfRange As Double

TopOfRange = 4
BottomOfRange = 10

Set SearchRange = Worksheets("Sheet1").Range(Cells(TopOfRange, 1),
Cells(BottomOfRange, 100))

ReturnCount = Application.WorksheetFunction.CountIf(SearchRange,
"apple")

CountApples = ReturnCount

End Function
________________________________________________


BUT if I type =CountApples() into cell A1 of Sheet2, it returns
#VALUE!

What's the problem with this code? Can CountIf not work across
sheets?


The object ref is not fully qualified to "Sheet1" using 'Cells' as is.
Try...


Public Function CountApples#()
Dim rngSearch As Range

Const dTopRow# = 4: Const dLastRow# = 10

Application.Volatile
With Sheets("Sheet1")
Set rngSearch = .Range(.Cells(dTopRow, 1), .Cells(dLastRow, 100))
End With
CountApples = WorksheetFunction.CountIf(rngSearch, "apple")
Set rngSearch = Nothing
End Function

--
Garry

Free usenet access at http://www.eternal-september.org
Classic VB Users Regroup!
comp.lang.basic.visual.misc
microsoft.public.vb.general.discussion