Type Mismatch Error - Copying Data between Workbooks

  • Thread starter NumberCruncher13
  • Start date
N

NumberCruncher13

Can someone let me know why I get a type mismatch error when the
following code is ran?

Sub CopyFromLSS()

Dim MyDir As Range, lsFile As Range, csFile As Range
Dim wsTo As Worksheet, wsFrom As Worksheet


Set MyDir = Sheets("WB").Range("B2") 'C:\06\
Set csFile = Sheets("WB").Range("B3") 'CS.xls
Set lsFile = Sheets("WB").Range("B4") 'LS.xls

Set wsFrom = Workbooks(lsFile).Worksheets("Sheet1") 'Why is there
a type mismatch error?
Set wsTo = Workbooks("Copy and Paste.xls").Worksheets("Sheet2")

With wsFrom
.Range("A1:Z1057").Copy
wsTo.Range("A1").PasteSpecial Paste:=xlPasteValues
'etc
End With
Application.CutCopyMode = False

Workbooks(lsFile).Close SaveChanges:=False

End Sub
 
F

FSt1

hi
because you defined isfile as a range object. you then Set lsFile =
Sheets("WB").Range("B4") which is a range, not a value. you are looking for
a value.

defined isfile as a string i.e.
dim isfile as string
and don't set it or you'll bet an object error.
isfile = range("B4") 'should do it.
and do the above will all the other range object you declared.
remember you are not looking for a range address. you are looking for the
value in the cell which is a string.

Regards
FSt1
 
N

NumberCruncher13

hi
because you defined isfile as a range object. you then Set lsFile =
Sheets("WB").Range("B4")  which is a range, not a value. you are lookingfor
a value.

defined isfile as a string i.e.
dim isfile as string
and don't set it or you'll bet an object error.
isfile = range("B4")      'should do it.
and do the above will all the other range object you declared.
remember you are not looking for a range address. you are looking for the
value in the cell which is a string.

Regards
FSt1












- Show quoted text -

Thanks so much! That worked. I was always confused when to use the
set statement.
 
G

George Nicholson

I was always confused when to use the set statement.

Set is for objects only. Variables of other datatypes (numbers, strings,
etc.) require it. Once upon a time you had to use Let statements for
non-objects and Set for objects, but those days are behind us and Let is now
implied and no longer required (but allowed).

--
HTH,
George


hi
because you defined isfile as a range object. you then Set lsFile =
Sheets("WB").Range("B4") which is a range, not a value. you are looking
for
a value.

defined isfile as a string i.e.
dim isfile as string
and don't set it or you'll bet an object error.
isfile = range("B4") 'should do it.
and do the above will all the other range object you declared.
remember you are not looking for a range address. you are looking for the
value in the cell which is a string.

Regards
FSt1












- Show quoted text -

Thanks so much! That worked. I was always confused when to use the
set statement.
 
D

Dave Peterson

I think you left out something important <bg>.

Variables of other datatypes (numbers, strings, etc.) _do not_ require it.
 
G

George Nicholson

oops

Well, it was one missing word. and a short one at that. <sheepish grin>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top