البرمجة

تسريع تحديث بيانات الإدخال في Excel

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

لتسريع الرمز، يمكنك اتباع بعض الإجراءات. أولاً وقبل كل شيء، يمكنك تعطيل تحديث الشاشة وتمكين الأحداث في التطبيق باستخدام Application.ScreenUpdating = False و Application.EnableEvents = False. يمكن أن يساعد هذا في تقليل الإجهاد على النظام أثناء تنفيذ الرمز.

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

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

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

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

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

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

فيما يلي نموذج لتحسين الرمز باستخدام مصفوفة:

vba
Sub UpdateLogWorksheet1() Application.ScreenUpdating = False Application.EnableEvents = False Dim historyWks As Worksheet Dim inputWks As Worksheet Dim nextRow As Long Dim oCol As Long Dim myData As Variant Dim i As Long ActiveSheet.Unprotect "sallygary" ' تعيين الورقة المستهدفة Set inputWks = Worksheets("Dept 1 Input") Set historyWks = Worksheets("1_Data") ' تحديد الصف القادم With historyWks nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row End With ' تعريف مصفوفة لتخزين القيم myData = inputWks.Range("E4,G26,G16,G12,G18,G20,G22,G24").Value ' تحديد الصف القادم With historyWks .Cells(nextRow, "A").Value = Now() .Cells(nextRow, "B").Value = Application.UserName .Cells(nextRow, "A").NumberFormat = "mm/dd/yyyy" ' نسخ البيانات من المصفوفة إلى الورقة oCol = 3 For i = LBound(myData, 2) To UBound(myData, 2) .Cells(nextRow, oCol).Value = myData(1, i) oCol = oCol + 1 Next i End With ' إعادة تفعيل الحماية ActiveSheet.Protect "sallygary" ' تمكين تحديث الشاشة والأحداث Application.ScreenUpdating = True Application.EnableEvents = True End Sub

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

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

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

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

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