برنامج كاشير Excel :دليل شامل لتطبيق أكواد VBA في Excel لإدارة المبيعات والمشتريات بشكل احترافي
إذا كنت تعمل في مجال الإدارة المالية أو المحاسبة، فمن المؤكد أنك قد صادفت تحديات تتطلب تنظيمًا أفضل للبيانات. يُعتبر Excel أداة قوية ومرنة، ولكن مع استخدام أكواد VBA (Visual Basic for Applications)، يمكنك الانتقال بمهاراتك إلى مستوى احترافي يتيح لك أتمتة العمليات وتوفير الوقت.
في هذا المقال، سنشرح برنامج كاشير Excel ومجموعة من الأكواد التي تتيح لك إدارة بيانات المبيعات والمشتريات بسهولة وسلاسة، مع توضيح كل كود خطوة بخطوة. هذه الأكواد مصممة لإنشاء نموذج (UserForm) يتيح إدخال البيانات وتحليلها وترحيلها إلى أوراق العمل تلقائيًا.
كود ComboBox1_Change: عرض سعر المنتج تلقائيًا عند اختياره
يُستخدم هذا الكود لجعل النموذج أكثر تفاعلية. عند اختيار منتج معين من قائمة منسدلة (ComboBox)، يتم عرض سعر البيع الخاص به في ملصق (Label).
Private Sub ComboBox1_Change()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“المشتريات”)
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, 1).Value = ComboBox1.Text Then
Label19.Caption = ws.Cells(i, 5).Value ‘ سعر البيع
Exit For
End If
Next i
End Sub
شرح الكود:
تعريف الورقة: يبدأ الكود بتحديد ورقة العمل “المشتريات” التي تحتوي على بيانات المنتجات.
البحث عن المنتج: يتم البحث في العمود الأول عن اسم المنتج المختار.
عرض السعر: إذا تطابق اسم المنتج، يتم عرض سعر البيع في Label19.
استخدام عملي:
يساعد هذا الكود في تسهيل عملية اختيار المنتج وعرض سعره تلقائيًا دون الحاجة إلى إدخال السعر يدويًا، مما يقلل من الأخطاء.
كود CommandButton1_Click: إضافة البيانات إلى ListBox
هذا الكود هو جوهر واجهة المستخدم. عند النقر على زر “إضافة”، يتم جمع البيانات المدخلة وإضافتها إلى ListBox بشكل منظم.
Private Sub CommandButton1_Click()
On Error GoTo ErrorHandler
Dim product As String
Dim quantity As Double
Dim price As Double
Dim total As Double
Dim rowData(1 To 4) As String
product = ComboBox1.Value
quantity = Val(TextBox3.Text)
price = Val(Label19.Caption)
If quantity <= 0 Then
MsgBox “يرجى إدخال كمية صحيحة.”, vbExclamation, “تحذير”
Exit Sub
End If
total = quantity * price
rowData(1) = product
rowData(2) = quantity
rowData(3) = price
rowData(4) = total
ListBox1.AddItem
For i = 1 To 4
ListBox1.List(ListBox1.ListCount – 1, i – 1) = rowData(i)
Next i
Exit Sub
ErrorHandler:
MsgBox “حدث خطأ أثناء إضافة المنتج: ” & Err.Description, vbExclamation, “خطأ”
End Sub
شرح الكود:
- جلب البيانات: يتم جلب اسم المنتج، الكمية، وسعر الوحدة من الحقول المخصصة.
- حساب الإجمالي: يتم ضرب الكمية في السعر للحصول على إجمالي التكلفة.
- إضافة إلى ListBox: يتم إدخال البيانات كصف جديد في ListBox.
استخدام عملي:
يوفر هذا الكود طريقة سهلة لعرض البيانات المدخلة في برنامج كاشير Excel على شكل جدول مصغر داخل النموذج.
كود CommandButton2_Click: ترحيل البيانات إلى ورقة العمل
عند اكتمال إدخال البيانات في النموذج، يتيح هذا الكود نقلها إلى ورقة العمل “المبيعات” بشكل منظم مع حساب الإجمالي الكلي.
Private Sub CommandButton2_Click()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Integer
Set ws = ThisWorkbook.Sheets(“المبيعات”)
lastRow = ws.Cells(ws.Rows.Count, 4).End(xlUp).Row + 1
ws.Cells(lastRow, 1).Value = Label7.Caption
ws.Cells(lastRow, 2).Value = Label11.Caption
ws.Cells(lastRow, 3).Value = TextBox4.Value
For i = 0 To ListBox1.ListCount – 2
ws.Cells(lastRow, 4).Value = ListBox1.List(i, 0)
ws.Cells(lastRow, 5).Value = ListBox1.List(i, 2)
ws.Cells(lastRow, 6).Value = ListBox1.List(i, 1)
ws.Cells(lastRow, 7).Value = ListBox1.List(i, 3)
lastRow = lastRow + 1
Next i
lastRow = ws.Cells(ws.Rows.Count, 4).End(xlUp).Row + 1
ws.Cells(lastRow, 4).Value = “الإجمالي الكلي”
ws.Cells(lastRow, 7).Value = ListBox1.List(ListBox1.ListCount – 1, 3)
MsgBox “تم ترحيل الفاتورة بنجاح!”, vbInformation
ListBox1.Clear
End Sub
شرح الكود:
تحديد الورقة: الورقة المستهدفة هي “المبيعات”.
ترحيل البيانات: يتم نقل كل صف من ListBox إلى الورقة مع الترتيب.
حساب الإجمالي الكلي: يضيف الكود صفًا جديدًا يعرض الإجمالي الكلي أسفل البيانات.
استخدام عملي:
هذا الكود يتيح توثيق البيانات المدخلة في ورقة العمل، مما يجعلها جاهزة للطباعة أو المراجعة.
كود UserForm_Initialize: إعداد النموذج عند تشغيله
هذا الكود يقوم بتهيئة النموذج عند فتحه لتحميل البيانات وضبط واجهة المستخدم.
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“المشتريات”)
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ComboBox1.Clear
For i = 2 To lastRow
ComboBox1.AddItem ws.Cells(i, 1).Value
Next i
Label11.Caption = Format(Date, “yyyy-mm-dd”)
Label7.Caption = Application.WorksheetFunction.Max(ThisWorkbook.Sheets(“المبيعات”).Range(“A:A”)) + 1
End Sub
شرح الكود:
تحميل المنتجات: يتم تعبئة ComboBox1 بأسماء المنتجات الموجودة في ورقة “المشتريات”.
عرض المعلومات الأساسية: يعرض رقم الفاتورة والتاريخ الحالي تلقائيًا.
استخدام عملي:
يقلل هذا الكود من الجهد اللازم لإعداد النموذج يدويًا عند كل مرة يتم فيها تشغيله.
كود CommandButton3_Click: حذف صف محدد من ListBox
في حال أدخلت بيانات بالخطأ في ListBox، يمكنك استخدام هذا الكود لحذف الصف المحدد بسهولة.
Private Sub CommandButton3_Click()
On Error Resume Next
If ListBox1.ListIndex = -1 Then
MsgBox “يرجى تحديد الصف المراد حذفه.”, vbExclamation, “تحذير”
Exit Sub
End If
ListBox1.RemoveItem ListBox1.ListIndex
MsgBox “تم حذف الصف بنجاح.”, vbInformation, “تنبيه”
End Sub
شرح الكود:
التحقق من الاختيار: إذا لم يتم تحديد صف في ListBox، يظهر رسالة تنبيه.
إزالة الصف: يتم حذف الصف المحدد باستخدام خاصية RemoveItem.
استخدام عملي:
يساعد في تصحيح الأخطاء وحذف البيانات غير الصحيحة بسرعة.
كود TextBox3_Change: التحقق من صحة الكمية المدخلة
لتجنب إدخال كميات غير صحيحة، يمكن استخدام هذا الكود للتحقق من إدخال أرقام فقط في TextBox الخاص بالكمية داخل برنامج كاشير Excel.
Private Sub TextBox3_Change()
If Not IsNumeric(TextBox3.Text) And TextBox3.Text <> “” Then
MsgBox “يرجى إدخال رقم صحيح.”, vbExclamation, “تنبيه”
TextBox3.Text = “”
End If
End Sub
شرح الكود:
التحقق الفوري: يتم التحقق من أن القيمة المدخلة رقمية.
تنبيه المستخدم: في حال إدخال قيمة غير رقمية، يتم تنبيه المستخدم وتفريغ الحقل.
استخدام عملي:
يحافظ هذا الكود على دقة البيانات المدخلة ويمنع الأخطاء الشائعة.
كود CommandButton4_Click: تفريغ النموذج بالكامل
عند الحاجة لإعادة ضبط النموذج وإزالة كل البيانات، يمكن استخدام هذا الكود.
Private Sub CommandButton4_Click()
Dim response As VbMsgBoxResult
response = MsgBox(“هل تريد تفريغ جميع البيانات؟”, vbQuestion + vbYesNo, “تأكيد”)
If response = vbYes Then
ComboBox1.Value = “”
TextBox3.Text = “”
Label19.Caption = “”
ListBox1.Clear
MsgBox “تم تفريغ البيانات بنجاح.”, vbInformation, “تنبيه”
End If
End Sub
شرح الكود:
تأكيد الإجراء: يظهر مربع حوار للتأكد من رغبة المستخدم في تفريغ البيانات.
إعادة ضبط الحقول: يتم مسح جميع الحقول وقائمة ListBox.
استخدام عملي:
يتيح هذا الكود تنظيف النموذج بسرعة وإعداده لإدخالات جديدة.
كود إغلاق النموذج CommandButton5_Click
لإغلاق النموذج بطريقة سلسة دون التأثير على باقي البرنامج.
Private Sub CommandButton5_Click()
Unload Me
End Sub
شرح الكود:
إغلاق النموذج: يتم تنفيذ الأمر Unload Me لإغلاق نافذة النموذج.
استخدام عملي:
يُستخدم هذا الكود لإنهاء عمل النموذج عند الانتهاء من إدخال البيانات.
كود إنشاء تقرير إجمالي المبيعات
لإنشاء تقرير إجمالي المبيعات وعرضه في ورقة عمل مخصصة، يمكن استخدام هذا الكود.
Sub GenerateSalesReport()
Dim ws As Worksheet
Dim reportWs As Worksheet
Dim lastRow As Long
Dim totalSales As Double
Set ws = ThisWorkbook.Sheets(“المبيعات”)
On Error Resume Next
Set reportWs = ThisWorkbook.Sheets(“تقرير المبيعات”)
If reportWs Is Nothing Then
Set reportWs = ThisWorkbook.Sheets.Add
reportWs.Name = “تقرير المبيعات”
End If
On Error GoTo 0
reportWs.Cells.Clear
reportWs.Cells(1, 1).Value = “تقرير المبيعات”
reportWs.Cells(2, 1).Value = “التاريخ”
reportWs.Cells(2, 2).Value = “الإجمالي الكلي”
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
totalSales = WorksheetFunction.Sum(ws.Range(“G2:G” & lastRow))
reportWs.Cells(3, 1).Value = Format(Date, “yyyy-mm-dd”)
reportWs.Cells(3, 2).Value = totalSales
MsgBox “تم إنشاء التقرير بنجاح.”, vbInformation, “تنبيه”
End Sub
شرح الكود:
إعداد التقرير: يتم إنشاء ورقة عمل جديدة أو إعادة استخدام الورقة “تقرير المبيعات”.
حساب الإجمالي: يتم جمع جميع القيم في عمود الإجمالي الكلي من ورقة “المبيعات”.
عرض التقرير: يتم عرض التاريخ والإجمالي الكلي.
استخدام عملي:
يوفر هذا الكود طريقة مباشرة لتحليل المبيعات اليومية أو الشهرية.
بهذه الأكواد، يمكنك إنشاء برنامج كامل واحترافي لإدارة المبيعات والمشتريات. إذا كنت بحاجة إلى مزيد من التخصيص، لا تتردد في السؤال! 🎯
الخاتمة
تقدم أكواد VBA حلولاً مذهلة لتحسين الإنتاجية ودقة العمل. باستخدام الأمثلة المذكورة أعلاه، يمكنك إنشاء نظام متكامل لإدارة المبيعات والمشتريات، مما يسهل العمليات اليومية ويوفر الوقت. إذا كنت مبتدئًا، فإن فهم هذه الأكواد خطوة بخطوة سيُثري مهاراتك بشكل كبير، أما إذا كنت محترفًا، فستجد فيها إضافات قيمة لعملك.
شاهد فيديوهات الشرح
الجزء الأول : برنامج كاشير مبسط على اكسل VBA |الجزء الأول | دليلك لإنشاء برنامجك الخاص
الجزء الثاني: شرح الأكواد من برنامج الكاشير المبسط على الاكسل
باقي الأجزاء متتالية في قائمة داخل أي جزء منهم