و زيادة لما قدمه الاساتذة الكرام
و لتعميم الفائدة و تعدد الحلول هذه طريقة أخر عسى ان يستفيد بها احد و استفيد انا من دعائه
Sub MoveData()
Dim EndRow As Long, Ary1 As Variant, Ary2 As Variant, i As Byte, ii As Byte, li As Worksheet, inv As Worksheet
Set li = ThisWorkbook.Sheets("List")
Set inv = ThisWorkbook.Sheets("Invoice")
'-----------------------------------------------------------------------
Ary1 = Array("B3", "D3", "A5", "D6", "B8", "D8")
Ary2 = Array("B", "C", "D", "E", "F", "G")
'-----------------------------------------------------------------------
For i = 0 To UBound(Ary1)
If inv.Range(Ary1(i)) = "" Then
MsgBox "رحاءا تأكد من إدخال البيانات", vbExclamation, "خطأ"
Exit Sub
End If
Next
'-----------------------------------------------------------------------
EndRow = li.Range("A1").CurrentRegion.Rows.Count + 1
For ii = 0 To UBound(Ary1)
li.Range(Ary2(ii) & EndRow).Value = inv.Range(Ary1(ii)).Value
li.Range("A" & EndRow) = EndRow - 1
inv.Range(Ary1(ii)) = ""
Next
MsgBox "تم ترحيل البيانات بنجاح", vbInformation, "رسالة تأكيد"
End Sub