Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Try this (untested)
Option Explicit 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") 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 Set valueToFind = wrksA.Range("B" & rowNum) ' MsgBox valueToFind Set playUpValue = wrksA.Range("A" & rowNum) ' MsgBox playUpValue rowFound = 0 On Error Resume Next rowFound = Application.Match( _ valueToFind.Text, _ wrksB.Columns("A:A"), _ 0) ' <= displays error On Error GoTo 0 If rowFound = 0 Then MsgBox ("Didn't find row") Else wrksB.Range("u" & rowFound) = playUpValue End If End If Next MsgBox "All players playing up have been modified." End Sub "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 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I believe that if you change this:
Set valueToFind = Selection To this: valueToFind = Selection.Value then in might work. The problem is caused by delclaring rowFound as an integer and then trying to match it to valueToFind which was Set as an object variable range. If the Selection value is an integer then the Match function should work after you make the change. "JohnM" wrote in message ... 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 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Barb, thanks for the code. With it I figured out it wasn't really a Type
Mismatch, my data was wrong, so the error test is what lead me to my problem and it makes the program much better. Thanks again, -- JohnM "Barb Reinhardt" wrote: Try this (untested) Option Explicit 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") 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 Set valueToFind = wrksA.Range("B" & rowNum) ' MsgBox valueToFind Set playUpValue = wrksA.Range("A" & rowNum) ' MsgBox playUpValue rowFound = 0 On Error Resume Next rowFound = Application.Match( _ valueToFind.Text, _ wrksB.Columns("A:A"), _ 0) ' <= displays error On Error GoTo 0 If rowFound = 0 Then MsgBox ("Didn't find row") Else wrksB.Range("u" & rowFound) = playUpValue End If End If Next MsgBox "All players playing up have been modified." End Sub "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 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Visual Basic Error Run Time Error, Type Mismatch | Excel Discussion (Misc queries) | |||
runtime error 13 - type mismatch error in Excel 97 on Citrix | Excel Programming | |||
Conditional Formatting - Run Time Error '13' Type Mismatch Error | Excel Programming | |||
Help: Compile error: type mismatch: array or user defined type expected | Excel Programming | |||
Befuddled with For Next Loop ------ Run - Time Error '13' Type Mismatch Error | Excel Programming |