I am having trouble assigning values from one workbook range to a range in my current workbook. When I assign my range using Range("A1:C1") this code works fine, however when my range is defined using Range(Cells(1,1),Cells(1,3)) the function fails:
Sub CopyRange()
Dim inputExcel As Excel.Application, BookA As Workbook
Path_A = ThisWorkbook.Path & "\Book_A.xlsx"
Set inputExcel = New Excel.Application
Set BookA = inputExcel.Workbooks.Open(Path_A, ReadOnly:=True)
'THIS WORKS:
ThisWorkbook.Sheets(1).Range("A1:C1").Value = _
BookA.Sheets(1).Range("A1:C1").Value
'THIS DOESN'T WORK:
ThisWorkbook.Sheets(1).Range(Cells(1, 1), Cells(1, 3)).Value = _
BookA.Sheets(1).Range(Cells(1, 1), Cells(1, 3)).Value
End Sub
I know this must be a simple syntax issue but I haven't been able to figure it out. How can I get the Range assignments using "Cells" to work?
you've gotta qualify the Cells calls with a worksheet object too:
for contiguous ranges like that you can also use Resize:
I think ultimately you are going about this in not the best way to solve the problem. You have
object.object.object.object
notation in your code, which is cumbersome and hard to interpret and fix.If you define some more variables, the code will be easier to troubleshoot and solve your problem: