التفوق - ورقة عمل مولد السيارات

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

  • القضية
  • حل
  • ملحوظة

القضية

لديّ كتاب يحتوي على ورقة أسماء تحتوي على جميع المعلومات التي أحتاج وضعها في بطاقة timecard وورقة رئيسية مع بطاقة التوقيت التي سيقوم الموظف بملئها. كيف يمكنني إنشاء مجموعة جديدة من بطاقات التوقيت كل أسبوع تلقائيًا؟ أحتاجها لتسمية الأوراق التي تحتوي على اسم الموظف في علامة التبويب حتى يتمكنوا من العثور على البطاقة الخاصة بهم ووضع كافة المعلومات من ورقة الاسم على البطاقة الخاصة بهم. عند إضافة أسماء جديدة أو حذفها إلى القائمة التي ستكون مرتبة أبجديًا ، ستقوم بإنشاء البطاقة الجديدة بالأسماء وستقوم بإنشاء المعلومات الصحيحة على كل بطاقة من ورقة القائمة. كيف يمكنني أن أفعل هذا؟ أنا جديد على هذا وهذا هو آخر شيء يجب القيام به.

حل

ليس لدي أي فكرة كيف يبدو اسمك والقالب

عمل نسخة احتياطية من الملف الخاص بك

قراءة الكود وإجراء التغييرات المناسبة ، لقد علقت كل شيء من أجلك.

  • اضغط ALT + F11 لفتح vbe
  • انقر فوق "إدراج" ، واختر الوحدة النمطية
  • انسخ والصق الكود أدناه:

 Sub generTimeSheets () Dim sMasterNameSheet باسم String "اسم الورقة التي تحتوي على معلومات الموظف Dim sTimeSheetTempate As String" اسم الورقة التي هي قالب timecard Dim iMaxNameCol As Integer "رقم العمود الذي يوجد به معظم الصفوف المكتوبة Dim lMaxNameRow As Integer Dim sTemp As String "متغير مؤقت" تحذير Dim vWarning As Variant "للحذف" #################################### ################### CUSTOMIZE HERE TO SUIT YED NEEDS '######################### ############################ sMasterNameSheet = "Names" "هذا هو اسم الورقة التي تحتوي على معلومات الموظف sTimeSheetTempate =" قالب الجدول الزمني "" هذا هو اسم الورقة التي هي قالب الجدول الزمني Dim iNameCol As Integer "الذي يحتوي على العقيد في ورقة معلومات الموظف ، ويحتوي على معلومات الاسم (إضافة أعمدة أخرى مماثلة) Dim sEmpName As String" اسم الموظف iMaxNameCol = 1 "هذا العمود على تحتوي ورقة الموظف على الحد الأقصى لعدد الصفوف التي تم ملؤها في iNameCol = 1 'هذا هو العمود حيث empl تم العثور على اسم oyee vWarning = MsgBox ("سيؤدي ذلك إلى حذف جميع الأوراق باستثناء" _ & sMasterNameSheet & "و" & sTimeSheetTempate _ & ". اضغط على نعم للتواصل "، vbCritical + vbDefaultButton2 + vbYesNo)" لا ترغب في المتابعة إذا كان vWarning vbYes ثم Exit Sub "لحذف الكل ما عدا الصفحتين" من خلال نقل كل الأوراق في كتاب. loop sTemp = mysheet.Name 'إذا لم يكن فحص الورقة ورقة مهمة ، فاحذفها إذا ((UCase (Trim (sTemp)) UCase (Trim (sMasterNameSheet))) و _ (UCase (Trim (sTemp)) UCase (Trim ( sTimeSheetTempate)))) ثم mysheet.Delete End If Next Sheets (sMasterNameSheet) .Select "اكتشف الحد الأقصى لعدد الصفوف lMaxNameRow = الخلايا (65536 ، iMaxNameCol) .End (xlUp) .Row sTemp = sTimeSheetTempate sEmpName = خلايا (lThisRow ، iNameCol) sEmpName = Trim (sEmpName) إذا (sEmpName "") ثم صفائح (sTimeSheetTempate). حدد الأوراق (sTimeSheetTempate) .Copy بعد: = Sheets (sTemp) ActiveSheet.Name = sEmpName هنا يجب عليك إجراء إصلاحات "في هذا النموذج عينة يقول أنه على القالب الذي تم نسخه حديثا ، في الخلية A1" وضع القيمة تم العثور على e في العمود A من أوراق أوراق الموظف (sEmpName) .Range ("A1") = أوراق (sMasterNameSheet) .Range ("A" & lThisRow) End If If nextFor: Next End Sub 
  • 4. اضغط F5 لتشغيله

ملحوظة

بفضل rizvisa1 لهذه النصيحة في المنتدى.

المقال السابق المقالة القادمة

نصائح الأعلى