انظر الى هذا الكود
Sub ترحيل_بيانات()
LR = [C8].End(xlDown).Row
If LR > 28 Then MsgBox "لا يوجد أصناف ، لن يتم أي ترحيل": Exit Sub
dt = [b8]: clnt = [D6]: inv_N = [I5]
If dt < 36666 Then MsgBox "التاريخ خطأ ، لن يتم أي ترحيل": Exit Sub
If Len(clnt) < 2 Then MsgBox "لا يوجد عميل ، لن يتم أي ترحيل": Exit Sub
If inv_N < 1 Then MsgBox "لا يوجد رقم فاتورة ، لن يتم أي ترحيل": Exit Sub
For R = 9 To LR
With Sheet2
nR = .[B9999].End(xlUp).Row + 1
If nR < 9 Then nR = 9
.Cells(nR, 9) = Cells(R, 10)
.Cells(nR, 1) = dt
.Cells(nR, 2) = clnt
.Cells(nR, 3) = Cells(R, 3)
.Cells(nR, 4) = Cells(R, 4)
.Cells(nR, 5) = Cells(R, 5)
.Cells(nR, 6) = Cells(R, 6)
.Cells(nR, 7) = inv_N
End With
Next R
a = MsgBox("هل تريد مسح بيانات الفاتورة؟", vbYesNo + vbQuestion, "مسح بيانات")
If a = vbYes Then Range("C9:D" & LR).ClearContents: Range("F9:F" & LR).ClearContents
[I5] = inv_N + 1
End Sub
Sub recall()
'On Error Resume Next
With Sheet2
.[P9:P9999].ClearContents
R = .[O9999].End(xlUp).Row
.Range("H7:O" & R).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.[P7:Q7], Unique:=True
R = .[P10000].End(xlUp).Row
Names("Inv_N").RefersToR1C1 = "=المحل!R9C16:R" & R & "C16"
Names("Clnt_N").RefersToR1C1 = "=المحل!R9C17:R" & R & "C17"
UserForm1.ListBox1.RowSource = "Inv_N"
UserForm1.ListBox2.RowSource = "Clnt_N"
End W