Hi Miguel - I used your following code from one of your earlier interactions:
Sub CopyCells()
Dim rngData As Range, rngDest As Long
Dim i, j As Integer
Set rngData = Sheets("Invoice").Range("A16:g35")
Set rngDest = Sheets("InvData").Range("A1").End(xlDown).Offset(1, 0)
For i = 1 To rngData.Rows.Count
If rngData.Cells(i, 1) <> "" Then
rngDest.Offset(j, 0).Value = Sheets("Invoice").Range("b8").Value
rngDest.Offset(j, 1).Value = Sheets("Invoice").Range("b10").Value
rngDest.Offset(j, 2).Value = rngData.Cells(i, 1).Value
rngDest.Offset(j, 3).Value = rngData.Cells(i, 2).Value
rngDest.Offset(j, 4).Value = rngData.Cells(i, 3).Value
rngDest.Offset(j, 5).Value = rngData.Cells(i, 4).Value
rngDest.Offset(j, 6).Value = rngData.Cells(i, 6).Value
rngDest.Offset(j, 7).Value = Sheets("Invoice").Range("b9").Text
j = j + 1
End If
Next
End Sub
However, everytime I ran it, I kept getting an error - compile error, object required.
Am I not doing something right regarding the code? Please note that I am a newbie.
Just a couple of things. rngDest should be declared as a Range, not as Long, and the code was looking for at least two rows with headers on the InvData sheet. A fix could be something like: Sub CopyCells()
Dim rngData As Range, rngDest As Range
Dim i, j As Integer
Set rngData = Sheets("Invoice").Range("A16:g35")
Set rngDest = Sheets("InvData").Range("A1")
j = rngDest.CurrentRegion.Rows.Count
...
This will keep the functionality of appending rows, and avoid the error related to use the End property here.
Advertisement