View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Dave Peterson Dave Peterson is offline
external usenet poster
 
Posts: 35,218
Default Type Mismatch error

Change
Dim rowFound As Integer
to
Dim rowFound As Variant 'could be an error.

Then check for that error:

rowFound = Application.Match(valueToFind, wrksB.Columns("A:A"), 0)
if iserror(rowfound) then
msgbox "Not found!"
else
' MsgBox rowFound
wrksB.Range("u" & rowFound) = playUpValue
' Range("v" & rowFound) = playUpValue
...
end if

======
Ps. I never use "As Integer". "As Long" handles bigger numbers and from what
I've read Long's are faster than integers.

I never use "As Single" either. I'll use "as double".

(In this case, you still want "As Variant" because of the possibility of no
match found.

JohnM wrote:

Again, I have to say thanks in advance!

In this code, which is below: rowFound = Application.Match(valueToFind,
wrksB.Columns("A:A"), 0)

I get a Type Mismatch error. It worked at one time, then stopped. I am sure
it just needs some adjustment to the code, I am a beginner at this.

Sub FindPlayUpPlayerReplaceAgeGroup()

MsgBox "Change age group on players listed on PlayUpList", vbOKCancel

Dim wrksA As Worksheet
Dim valueToFind As Range
Dim rowNum As Long
Dim wrksB As Worksheet
Dim rowFound As Integer
Dim playUpValue As Range

Set wrksA = Worksheets("PlayUpList")
Set wrksB = Worksheets("PlDetails")
wrksA.Select
rowNum = 2
For rowNum = 2 To wrksA.Cells(Rows.Count, "B").End(xlUp).Row
If Trim(wrksA.Range("b" & rowNum)) < "" And Trim(wrksA.Range("v" &
rowNum)) < "" Then
Range("B" & rowNum).Select
Set valueToFind = Selection
' MsgBox valueToFind
Range("a" & rowNum).Select
Set playUpValue = Selection
' MsgBox playUpValue
rowFound = Application.Match(valueToFind, wrksB.Columns("A:A"),
0) ' <= displays error
' MsgBox rowFound
wrksB.Range("u" & rowFound) = playUpValue
' Range("v" & rowFound) = playUpValue
End If
Next

MsgBox "All players playing up have been modified."

End Sub

--
JohnM


--

Dave Peterson