Thread: Type mismatch
View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
David David is offline
external usenet poster
 
Posts: 1,560
Default Type mismatch

Dave,

Thank you. This did it and I did gain some understanding. I was not in
another app, just Excel.

Thanks Again,
David

"Dave Peterson" wrote:

Are you controling excel from a different application (MSWord for example)?

If yes, then make sure you're using an excel range--and not an MSWord Range

Dim ThisSheet As Excel.Worksheet
Dim CopyFrom1 As Excel.Range

Set ThisSheet = ActiveSheet 'no need using worksheets(activesheet.name)
Set CopyFrom1 = ThisSheet.Range("B2:B8")

Or just:
set copyfrom1 = activesheet.range("B2:B8")

If you're running this code from an excel workbook's project, then you don't
need those "Excel." qualifiers (but they won't hurt).

And are you sure that the activesheet is a worksheet--not a chartsheet or a
macro sheet or a dialog sheet or ...





David wrote:

Hi Barb,

I am failing to see what I am doing wrong.

Dim ThisSheet As Excel.Worksheet
Set ThisSheet = Worksheets(ActiveSheet.Name)
(Idea is that no matter what sheet I am on it will get the right name)

Dim CopyFrom1 As Range
Set CopyFrom1 = ThisSheet.Name.Range("B2:B8")
(Invalid qualifier)

Dim CopyFrom1 As Range
Set CopyFrom1 = ThisSheet.Range("B2:B8")
(Type Mismatch)

I need to capture the sheet name, as this will run on many different sheets,
as desired. The ending row 8 will change and I am trying to capture the row
as Activcell.Row, so this is simplied.

Thanks,
David

"Barb Reinhardt" wrote:

Do you have a worksheet named "ThisSheet"? I think I'd do this

Dim myWS as Excel.Worksheet
Dim CopyFrom1 As Range

on error resume next
Set myWS = Worksheets("ThisSheet")
on error goto 0

if not myWS is nothing then
Set CopyFrom1 = myWS.Range("B2:B8")
end if

If it's the ActiveSheet, just use that.

HTH,
Barb Reinhardt


"David" wrote:

Hi Group,

Everyone having a good day? I am getting a type mismatch and can not figure
out why?

Dim CopyFrom1 As Range
Set CopyFrom1 = Worksheets(ThisSheet).Range("B2:B8")

Thanks for your help.

David


--

Dave Peterson