Skip to content

مقدمة

 

في هذا المقال، سنتناول شرحًا تفصيليًا لكود VBA المخصص لإنشاء بوليصات شحن تلقائيًا في Excel. يهدف هذا النظام إلى أتمتة عملية توليد أرقام البوليصات، وإنشاء صفحات مستقلة لكل بوليصة بناءً على قالب جاهز، مع إدخال البيانات المطلوبة بكل سهولة.

 

إذا لم تشاهد الجزء الأول من الشرح، يمكنك متابعته من هنا:

 

 شرح الكود بالكامل

 

أولًا: توليد رقم بوليصة جديد عند فتح الفورم

UserForm_Initialize()

    Dim ws As Worksheet

    Dim newPolicyNumber As String

    Dim maxPolicyNumber As Long

    Dim sheetName As String

   

    maxPolicyNumber = 5000 ‘ بدء الرقم من EG5001

   

    ‘ البحث عن آخر رقم بوليصة في أوراق العمل

    For Each ws In ThisWorkbook.Sheets

        sheetName = ws.Name

        If sheetName Like “EG5*” Then

            If IsNumeric(Mid(sheetName, 3)) Then

                If CLng(Mid(sheetName, 3)) > maxPolicyNumber Then

                    maxPolicyNumber = CLng(Mid(sheetName, 3))

                End If

            End If

        End If

    Next ws

   

    newPolicyNumber = “EG” & maxPolicyNumber + 1

    Label14.Caption = newPolicyNumber

 

💡 كيف يعمل هذا الجزء؟

 

عند تشغيل الـ UserForm، يتم البحث عن آخر رقم بوليصة موجود في أوراق العمل.

يبدأ البحث من الرقم 5000 بحيث تكون أول بوليصة EG5001.

يتم البحث داخل كل ورقة في الملف لمعرفة أكبر رقم مستخدم، ومن ثم توليد الرقم الجديد.

أخيرًا، يتم عرض الرقم الجديد في Label14 ليكون جاهزًا للاستخدام.

 

ثانيًا: إنشاء بوليصة جديدة عند الضغط على الزر

 

CommandButton1_Click()

    Dim ws As Worksheet, newWs As Worksheet

    Dim newPolicyNumber As String

   

    Set ws = ThisWorkbook.Sheets(“pro”)

    newPolicyNumber = Label14.Caption

   

    ‘ إنشاء ورقة جديدة بنفس رقم البوليصة بناءً على ورقة “pro

    Application.ScreenUpdating = False

    ws.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

    Set newWs = ActiveSheet

    newWs.Name = newPolicyNumber

   

    ‘ ترحيل البيانات

    With newWs

Range(“B3”).Value = newPolicyNumber

Range(“E3”).Value = TextBox1.Value

Range(“B5”).Value = TextBox2.Value

Range(“B7”).Value = TextBox3.Value

Range(“B9”).Value = TextBox4.Value

Range(“B14”).Value = TextBox5.Value

Range(“E14”).Value = TextBox6.Value

Range(“B16”).Value = TextBox7.Value

Range(“E16”).Value = “رقم التتبع هنا” ‘ أدخل رقم التتبع إن وجد

Range(“B18”).Value = TextBox8.Value

Range(“E18”).Value = “قيد الشحن” ‘ الحالة الافتراضية

Range(“B23”).Value = TextBox9.Value

Range(“E23”).Value = TextBox10.Value

Range(“B26”).Value = TextBox11.Value

    End With

    ‘ تحديث رقم البوليصة للطلب الجديد

    Label14.Caption = “EG” & CLng(Mid(newPolicyNumber, 3)) + 1

    ‘ مسح الحقول

    TextBox1.Value = “”

    TextBox2.Value = “”

    TextBox3.Value = “”

    TextBox4.Value = “”

    TextBox5.Value = “”

    TextBox6.Value = “”

    TextBox7.Value = “”

    TextBox8.Value = “”

    TextBox9.Value = “”

    TextBox10.Value = “”

    TextBox11.Value = “”

    MsgBox “تم إنشاء بوليصة الشحن بنجاح!”, vbInformation

    Application.ScreenUpdating = True

 

💡 كيف يعمل هذا الجزء؟

 

نسخ قالب البوليصة:

 

يتم نسخ ورقة العمل “pro” لإنشاء ورقة جديدة بنفس التنسيق.

يتم تسمية الورقة الجديدة بنفس رقم البوليصة المعروض في Label14.

 

إدخال بيانات العميل:

 

يأخذ البيانات المدخلة في الـ TextBoxات ويضعها في أماكنها المخصصة داخل الورقة.

يقوم بتحديد “قيد الشحن” كحالة افتراضية، ويمكن تعديلها لاحقًا.

 

تحديث الرقم ومسح البيانات:

 

بعد تسجيل البيانات، يتم توليد رقم البوليصة التالية وعرضه في Label14.

يتم مسح جميع الحقول لإدخال بيانات جديدة.

 

إظهار رسالة تأكيد:

 

يتم عرض رسالة نجاح للمستخدم، تؤكد اكتمال العملية بنجاح.

 

🎯 أهم مميزات الكود:

 

تلقائية كاملة:لا حاجة لإدخال أرقام البوليصات يدويًا، فهي تُولد تلقائيًا.

سهولة الاستخدام: بضغطة زر يتم إنشاء البوليصة وترحيل البيانات تلقائيًا.

تخزين دقيق: كل بوليصة تحصل على ورقة مستقلة، مما يسهل تنظيم البيانات والبحث عنها لاحقًا.

تحسين تجربة المستخدم: يتم مسح الحقول تلقائيًا بعد كل إدخال جديد.

 

🚀 أفكار لتطوير البرنامج مستقبلًا:

 

إضافة زر طباعة: لطباعة البوليصة مباشرة بعد إنشائها.

 

إدخال قائمة من العملاء: بحيث يمكن اختيار العميل بدلاً من إدخال بياناته يدويًا.

 

إضافة إمكانية التصدير إلى PDF: لحفظ نسخة إلكترونية من كل بوليصة.

 

إرسال إشعار عبر البريد الإلكتروني: بإمكانك إرسال تأكيد للشحن إلى العميل مباشرة.

 

🎬 تابع الشرح بالفيديو

 

إذا كنت تفضل مشاهدة الشرح العملي، يمكنك متابعة الفيديو من هنا:

رابط الفيديو على يوتيوب

 لشراء الملف اضغط هنـــــــا