Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,071
Default CountIf in VBA

Excel XP & Win XP
I have a range, TheRng, of cells all formatted as text. The user enters
numbers into those cells. I want to trap the instance of him entering a
number that has already been entered somewhere else in TheRng. I am trying
to use the CountIf worksheet function in a Worksheet_Change macro as
follows:
If Application.CountIf(TheRng, Target.Value) 1 Then....
Or
If Application.CountIf(TheRng, CStr(Target.Value)) 1 Then....
Or
If Application.CountIf(TheRng.Address, CStr(Target.Value)) 1 Then....
Each try has produced a "Type Mismatch" error.
How can I get this to work? Thanks for your time. Otto


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 703
Default CountIf in VBA

On 26 Maj, 23:43, "Otto Moehrbach"
wrote:
Excel XP & Win XP
I have a range, TheRng, of cells all formatted as text. *The user enters
numbers into those cells. *I want to trap the instance of him entering a
number that has already been entered somewhere else in TheRng. *I am trying
to use the CountIf worksheet function in a Worksheet_Change macro as
follows:
If Application.CountIf(TheRng, Target.Value) 1 Then....
Or
If Application.CountIf(TheRng, CStr(Target.Value)) 1 Then....
Or
If Application.CountIf(TheRng.Address, CStr(Target.Value)) 1 Then....
Each try has produced a "Type Mismatch" error.
How can I get this to work? Thanks for your time. *Otto


Hi Otto

As it's a worksheetfunction you are trying to use in VBA, it should
look like this:

If Application.WorksheetFunction.CountIf(TheRng, Target.Value)) 1
then..

Regards,
Per
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 533
Default CountIf in VBA

This variation on what you're doing works okay for me:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TheRng As Range
Set TheRng = Range("A1:A10")
With Application
If .CountIf(TheRng, Target.Value) 1 Then
.EnableEvents = False
.Undo
.EnableEvents = True
End If
End With
End Sub


--
Jim
"Otto Moehrbach" wrote in message
...
Excel XP & Win XP
I have a range, TheRng, of cells all formatted as text. The user enters
numbers into those cells. I want to trap the instance of him entering a
number that has already been entered somewhere else in TheRng. I am
trying to use the CountIf worksheet function in a Worksheet_Change macro
as follows:
If Application.CountIf(TheRng, Target.Value) 1 Then....
Or
If Application.CountIf(TheRng, CStr(Target.Value)) 1 Then....
Or
If Application.CountIf(TheRng.Address, CStr(Target.Value)) 1 Then....
Each try has produced a "Type Mismatch" error.
How can I get this to work? Thanks for your time. Otto



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,071
Default CountIf in VBA

Jim
Thanks for that. That appears to be just like what I have. The only
difference that I see is that my range is non-contiguous. My range is:
Set TheRng = Range("D1,F1,H1,J1,L1,N1")
Would that cause the "Type Mismatch" error?
If so I could just loop through the range and count the number of
Target.Value
I just changed my range to a contiguous range and it worked, so that answers
my question.
Thanks for your time. Otto
"Jim Rech" wrote in message
...
This variation on what you're doing works okay for me:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TheRng As Range
Set TheRng = Range("A1:A10")
With Application
If .CountIf(TheRng, Target.Value) 1 Then
.EnableEvents = False
.Undo
.EnableEvents = True
End If
End With
End Sub


--
Jim
"Otto Moehrbach" wrote in message
...
Excel XP & Win XP
I have a range, TheRng, of cells all formatted as text. The user enters
numbers into those cells. I want to trap the instance of him entering a
number that has already been entered somewhere else in TheRng. I am
trying to use the CountIf worksheet function in a Worksheet_Change macro
as follows:
If Application.CountIf(TheRng, Target.Value) 1 Then....
Or
If Application.CountIf(TheRng, CStr(Target.Value)) 1 Then....
Or
If Application.CountIf(TheRng.Address, CStr(Target.Value)) 1 Then....
Each try has produced a "Type Mismatch" error.
How can I get this to work? Thanks for your time. Otto





  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,718
Default CountIf in VBA

I just changed my range to a contiguous range and it worked, so that
answers

my question.

Yeah, Countif accepts only one area. "Type mismatch" isn't very helpful but
I guess VB doesn't really know why the function failed.

--
Jim
"Otto Moehrbach" wrote in message
...
| Jim
| Thanks for that. That appears to be just like what I have. The only
| difference that I see is that my range is non-contiguous. My range is:
| Set TheRng = Range("D1,F1,H1,J1,L1,N1")
| Would that cause the "Type Mismatch" error?
| If so I could just loop through the range and count the number of
| Target.Value
| I just changed my range to a contiguous range and it worked, so that
answers
| my question.
| Thanks for your time. Otto
| "Jim Rech" wrote in message
| ...
| This variation on what you're doing works okay for me:
|
| Private Sub Worksheet_Change(ByVal Target As Range)
| Dim TheRng As Range
| Set TheRng = Range("A1:A10")
| With Application
| If .CountIf(TheRng, Target.Value) 1 Then
| .EnableEvents = False
| .Undo
| .EnableEvents = True
| End If
| End With
| End Sub
|
|
| --
| Jim
| "Otto Moehrbach" wrote in message
| ...
| Excel XP & Win XP
| I have a range, TheRng, of cells all formatted as text. The user
enters
| numbers into those cells. I want to trap the instance of him entering
a
| number that has already been entered somewhere else in TheRng. I am
| trying to use the CountIf worksheet function in a Worksheet_Change
macro
| as follows:
| If Application.CountIf(TheRng, Target.Value) 1 Then....
| Or
| If Application.CountIf(TheRng, CStr(Target.Value)) 1 Then....
| Or
| If Application.CountIf(TheRng.Address, CStr(Target.Value)) 1 Then....
| Each try has produced a "Type Mismatch" error.
| How can I get this to work? Thanks for your time. Otto
|
|
|
|
|


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Countif help paul/bones[_2_] Excel Discussion (Misc queries) 3 March 22nd 07 05:25 PM
How do I use a countif function according to two other countif fu. Kirsty Excel Worksheet Functions 2 February 20th 06 11:44 AM
edit this =COUNTIF(A1:F16,"*1-2*")+COUNTIF(A1:F16,"*2-1*") sctroy Excel Discussion (Misc queries) 2 September 25th 05 04:13 AM
COUNTIF or not to COUNTIF on a range in another sheet Ellie Excel Worksheet Functions 4 September 15th 05 10:06 PM
COUNTIF in one colum then COUNTIF in another...??? JonnieP Excel Worksheet Functions 3 February 22nd 05 02:55 PM


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

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"