Skip to content

برنامج كاشير 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 |الجزء الأول | دليلك لإنشاء برنامجك الخاص

الجزء الثاني: شرح الأكواد من برنامج الكاشير المبسط على الاكسل

باقي الأجزاء متتالية في قائمة داخل أي جزء منهم