ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Need help with COUNTIF in VBA (https://www.excelbanter.com/excel-programming/396526-need-help-countif-vba.html)

Bob

Need help with COUNTIF in VBA
 
I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.


Tom Ogilvy

Need help with COUNTIF in VBA
 
x = Application.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

or use WorksheetFunction rather than Application

--
Regards,
Tom Ogilvy

"Bob" wrote:

I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.


Vergel Adriano

Need help with COUNTIF in VBA
 
Bob,

You need to qualify CountIf with "Worksheet.". Try it like this

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name).R ange("H" &
Sheet1RowPointer & ":U" & Sheet1RowPointer), "0")


--
Hope that helps.

Vergel Adriano


"Bob" wrote:

I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.


Bob

Need help with COUNTIF in VBA
 
Tom,
Thanks for your help!
Bob


"Tom Ogilvy" wrote:

x = Application.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

or use WorksheetFunction rather than Application

--
Regards,
Tom Ogilvy

"Bob" wrote:

I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.


Bob

Need help with COUNTIF in VBA
 
Vergel,
Thanks for your help!
Bob


"Vergel Adriano" wrote:

Bob,

You need to qualify CountIf with "Worksheet.". Try it like this

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name).R ange("H" &
Sheet1RowPointer & ":U" & Sheet1RowPointer), "0")


--
Hope that helps.

Vergel Adriano


"Bob" wrote:

I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.


Bob

Need help with COUNTIF in VBA
 
Tom,
One more question:

Is it possible to somehow use R1C1 nomenclature for the Range? So instead of:

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

can I do something like this:

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range(Cells(Sheet1HoursStartCol, Sheet1RowPointer) & _
":" & Cells(Sheet1HoursEndCol, Sheet1RowPointer)), "0")

Thanks again for your help.
Bob


"Tom Ogilvy" wrote:

x = Application.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

or use WorksheetFunction rather than Application

--
Regards,
Tom Ogilvy

"Bob" wrote:

I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.


Tom Ogilvy

Need help with COUNTIF in VBA
 
I would do it this way

Dim r as Range, x as Long
With Worksheets(Sheet1Name)
set r = .Range(.Cells(Sheet1HoursStartCol, Sheet1RowPointer), _
.Cells(Sheet1HoursEndCol, Sheet1RowPointer))
End with
x = WorksheetFunction.CountIf(r, "0")


but you can do it with your original
x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range(Cells(Sheet1HoursStartCol, Sheet1RowPointer).Address & _
":" & Cells(Sheet1HoursEndCol, Sheet1RowPointer).Address), "0")


--
Regards,
Tom Ogilvy


"Bob" wrote:

Tom,
One more question:

Is it possible to somehow use R1C1 nomenclature for the Range? So instead of:

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

can I do something like this:

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range(Cells(Sheet1HoursStartCol, Sheet1RowPointer) & _
":" & Cells(Sheet1HoursEndCol, Sheet1RowPointer)), "0")

Thanks again for your help.
Bob


"Tom Ogilvy" wrote:

x = Application.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

or use WorksheetFunction rather than Application

--
Regards,
Tom Ogilvy

"Bob" wrote:

I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.


Bob

Need help with COUNTIF in VBA
 
Tom,
As always, thanks for your help! I tried using my proposed formula (which I
noticed you added "Address" to):

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range(Cells(Sheet1HoursStartCol, Sheet1RowPointer).Address & _
":" & Cells(Sheet1HoursEndCol, Sheet1RowPointer).Address), "0")

but "x" yielded 0 (zero). When I reverted back to my original formula:

CellsFound = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

x yielded 2, which is the correct answer. Do you have any idea why the
first formula above is not yielding the correct answer?

Thanks again,
Bob


"Tom Ogilvy" wrote:

I would do it this way

Dim r as Range, x as Long
With Worksheets(Sheet1Name)
set r = .Range(.Cells(Sheet1HoursStartCol, Sheet1RowPointer), _
.Cells(Sheet1HoursEndCol, Sheet1RowPointer))
End with
x = WorksheetFunction.CountIf(r, "0")


but you can do it with your original
x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range(Cells(Sheet1HoursStartCol, Sheet1RowPointer).Address & _
":" & Cells(Sheet1HoursEndCol, Sheet1RowPointer).Address), "0")


--
Regards,
Tom Ogilvy


"Bob" wrote:

Tom,
One more question:

Is it possible to somehow use R1C1 nomenclature for the Range? So instead of:

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

can I do something like this:

x = WorksheetFunction.CountIf(Worksheets(Sheet1Name) _
.Range(Cells(Sheet1HoursStartCol, Sheet1RowPointer) & _
":" & Cells(Sheet1HoursEndCol, Sheet1RowPointer)), "0")

Thanks again for your help.
Bob


"Tom Ogilvy" wrote:

x = Application.CountIf(Worksheets(Sheet1Name) _
.Range("H" & Sheet1RowPointer & ":U" & _
Sheet1RowPointer), "0")

or use WorksheetFunction rather than Application

--
Regards,
Tom Ogilvy

"Bob" wrote:

I'm getting an error message when the following line attempts to execute:

x = CountIf(Worksheets(Sheet1Name).Range("H" & Sheet1RowPointer & ":U" &
Sheet1RowPointer), "0")

Sheet1Name is Dim'd as String. Sheet1RowPointer is "Dim'd as Integer.

I'm simply trying to count the number of cells that contain a value 0 for a
given row between columns H & U, inclusive, and assign the result to "x".

Can someone tell me how to fix the aforementioned line so it will work
correctly?

Thanks in advance for the help.



All times are GMT +1. The time now is 02:08 PM.

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