البرمجة

تنفيذ تسلسل تلقائي للأرقام في Excel

بالتأكيد، فهمك للعملية المطلوبة مهم لضمان تنفيذها بنجاح. لديك نموذج مستخدم (UserForm) يُستخدم لإدخال البيانات، وتحتاج إلى إضافة رقم تسلسلي تلقائي في العمود A عند إدخال البيانات في الأعمدة B إلى M. لتحقيق هذا، يمكنك استخدام رمز VBA (Visual Basic for Applications) في نموذج المصنف (Worksheet) أو في النموذج المستخدم (UserForm) نفسه.

إليك فكرة بسيطة لتنفيذ هذه العملية:

في نموذج المصنف (Worksheet)، يمكنك استخدام الحدث Worksheet_Change لتنفيذ الرمز عندما يتم تغيير خلية محددة في النموذج. وفي هذا الحدث، يمكنك فحص إذا كانت الخلية التي تم تغييرها تقع ضمن الأعمدة B إلى M، وإذا كان الشرط متحققًا، يتم إضافة الرقم التسلسلي في العمود A.

في نموذج المستخدم (UserForm)، يمكنك استخدام حدث AfterUpdate أو Exit لتنفيذ الرمز عند الانتهاء من إدخال البيانات والانتقال إلى خلية أخرى. ومن خلال هذا الحدث، يمكنك تفعيل الرمز لإضافة الرقم التسلسلي في العمود A.

يُظهر الكود التالي كيفية تنفيذ هذه الفكرة في نموذج المصنف:

vba
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Dim cell As Range ' تحقق مما إذا كان التغيير في أعمدة B إلى M Set rng = Intersect(Target, Me.Range("B:M")) If Not rng Is Nothing Then Application.EnableEvents = False ' تعطيل حدث التغيير لتجنب حدوث حلقة لانهائية ' تكرار عبر الخلايا المعنية For Each cell In rng ' التحقق مما إذا كانت الخلية الأولى في الصف If cell.Row = 1 Then ' إذا كانت الخلية الأولى، قم بتسلسل "RD 00001" Me.Cells(cell.Row, "A").Value = "RD 00001" Else ' إذا كانت ليست الخلية الأولى، قم بتسلسل بناءً على الصف السابق Me.Cells(cell.Row, "A").Value = "RD " & Format(cell.Offset(-1, 0).Value + 1, "00000") End If Next cell Application.EnableEvents = True ' إعادة تمكين حدث التغيير End If End Sub

يرجى وضع هذا الكود في قسم الكود لنموذج المصنف (Worksheet) الذي يرتبط بالورقة التي تستخدمها. سيتم تنفيذ الكود عندما يتم تغيير الخلايا في الأعمدة B إلى M، وسيقوم بإضافة الرقم التسلسلي في العمود A بناءً على القيم الموجودة في الصفوف السابقة.

يرجى ملاحظة أنه يمكن تكييف هذا الكود حسب احتياجاتك الخاصة، مثل تحديد المجالات الدقيقة التي ترغب في رصدها للتغييرات، أو تنسيق الرقم التسلسلي بشكل مختلف.

المزيد من المعلومات

بالطبع، سأكمل المقال بإضافة تفاصيل إضافية وشرح لكيفية تنفيذ الكود في نموذج المستخدم (UserForm) أيضًا.

في نموذج المستخدم (UserForm)، يمكننا استخدام حدث AfterUpdate للعنصر الأخير الذي تم تحديثه في النموذج. هذا الحدث سيتم تنفيذه بمجرد اكتمال إدخال البيانات والانتقال إلى عنصر آخر. سنقوم بتنفيذ نفس الفكرة التي استخدمناها في نموذج المصنف (Worksheet) لتسلسل الرقم التسلسلي في العمود A.

الكود التالي يوضح كيفية تنفيذ ذلك في نموذج المستخدم:

vba
Private Sub TextBox1_AfterUpdate() Dim lastRow As Long ' العثور على الصف الأخير المستخدم فيه lastRow = Sheets("اسم الورقة").Cells(Sheets("اسم الورقة").Rows.Count, "B").End(xlUp).Row ' إضافة الرقم التسلسلي في العمود A If lastRow = 1 Then ' إذا كان الصف الأخير فارغ، قم بتسلسل "RD 00001" Sheets("اسم الورقة").Cells(lastRow, "A").Value = "RD 00001" Else ' إذا كان هناك بيانات في الصفوف السابقة، قم بتسلسل بناءً على القيمة السابقة Sheets("اسم الورقة").Cells(lastRow, "A").Value = "RD " & Format(Sheets("اسم الورقة").Cells(lastRow - 1, "A").Value + 1, "00000") End If End Sub

يجب استبدال “اسم الورقة” بالاسم الفعلي للورقة التي تريد استخدامها.

بهذا الشكل، سيتم إضافة الرقم التسلسلي تلقائيًا في العمود A بمجرد اكتمال إدخال البيانات في الأعمدة B إلى M في نموذج المصنف أو عنصر النموذج (UserForm).

يمكنك تكييف هذه الطريقة بما يتناسب مع متطلبات مشروعك الخاص، مثل تغيير تنسيق الرقم التسلسلي أو إضافة شروط إضافية للتحقق من صحة البيانات المدخلة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر