View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Bernie Deitrick Bernie Deitrick is offline
external usenet poster
 
Posts: 5,441
Default transferring code from VBA to a VB dll

PM,

I expect that you need to be more specific with your cells object, since
your VBA depends on defaults. Cells defaults to the cells collection of the
activesheet, but more specific would be:
VBA:
Old: ActiveSheet.Range(Cells(l1, 1), Cells(l2, 2)).Select

New: ActiveSheet.Range(ActiveSheet.Cells(l1, 1), ActiveSheet.Cells(l2,
2)).Select

So try:

With mySheet
.Range(.Cells(l1, 1), .Cells(l2, 2)).copy

HTH,
Bernie
MS Excel MVP

"PM" wrote in message
...
Greetings and reverence to all gurus ! (with a special notice for Stephen
Bullen ;-))


Nothing more simple than copy a range ? This code works normally in VBA:

Sheets(1).Select
ActiveSheet.Range(Cells(l1, 1), Cells(l2, 2)).Select
Selection.Copy
Sheets(2).Select
Cells(2, 1).Select
Sheets(2).Paste

In fact, this code is generated by the macro recorder.

The following is the translation in my VB dll :

Set mySheet = XLS.Sheets(1) 'XLS represents my Workbook
mySheet.Activate 'this line is correctly
implemented
With mySheet
.Range(Cells(l1, 1), Cells(l2, 2)).copy

This last line fails. It is Range that fails :
set r = .Range(Cells(l1, 1), Cells(l2, 2)) also fails (method '~'
failed)

Anyone know why ? And how to get around this ?