الفارس محمد رجب قام بنشر سبتمبر 13, 2022 قام بنشر سبتمبر 13, 2022 انتبه من فضلك .. السلام عليكم ,, لابد من التحية عند بدء أى مشاركة ,,مرفق شيت اكسيل وقد قمت بعمل كود بدلا من المعادلات -- بمعنى ان معادلة قيمة المشتريات = الكمية * السعر ومعادلة ضريبة القيمة المضافة = قيمة المشتريات * نسبة الضريبة (14%) ومعادلة ضريبة الخصم =قيمة المشتريات * نسبة ضريبة الخصم فقمت بعمل كود بدلا م المعادلات وهذا هو الكود Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False Dim d As Variant Dim f As Variant Dim e As Integer e = d + f For d = 4 To 99 For f = 100 To 1000 Step 100 Cells(d, 1).Value = Val(Cells(d, 3).Value - Cells(d, 2).Value + Cells(d - 1, 1).Value) Cells(d, 12).Value = Val(Cells(d, 11).Value * Cells(d, 10).Value) Cells(d, 14).Value = Val(Cells(d, 13).Value * Cells(d, 10).Value) Cells(d, 10).Value = Val(Cells(d, 9).Value * Cells(d, 8).Value) Cells(d + f - 3, 1).Value = Val(Cells(d + f - 3, 3).Value - Cells(d + f - 3, 2).Value + Cells(d + f - 4, 1).Value) Cells(d + f - 3, 12).Value = Val(Cells(d + f - 3, 11).Value * Cells(d + f - 3, 10).Value) Cells(d + f - 3, 14).Value = Val(Cells(d + f - 3, 13).Value * Cells(d + f - 3, 10).Value) Cells(d + f - 3, 10).Value = Val(Cells(d + f - 3, 9).Value * Cells(d + f - 3, 8).Value) Next Next Application.ScreenUpdating = True End Sub ولكنه ثقيل جدا وبطيئى فهل من حل لجعل هذا الكود يعمل بشكل اسرع نموذج.xlsb
عبدالفتاح في بي اكسيل قام بنشر سبتمبر 13, 2022 قام بنشر سبتمبر 13, 2022 اعتقد من خلال نظرة سريعة على الكود تحتاج الى تخصيص اخر صف به بيانات بينما انت تقوم بحلقة تكرارية لصفوف فارغة لذلك سيكون بطيء لصفوف لا فائدة منها
الفارس محمد رجب قام بنشر سبتمبر 13, 2022 الكاتب قام بنشر سبتمبر 13, 2022 الاستاذ :عبدالفتاح في بي اكسيل شكرا لرد حضرتك 1- انا مبتدئ فى الفيجول بيسك وهذا الكود هو ما استطعت كتابته فان كان فى تعديل يساعد فى تسريعه ارجو كتابته 2-ان مش فاهم معنى هذه العبارة (عتقد من خلال نظرة سريعة على الكود تحتاج الى تخصيص اخر صف به بيانات بينما انت تقوم بحلقة تكرارية لصفوف فارغة لذلك سيكون بطيء لصفوف لا فائدة منها)
AbuuAhmed قام بنشر سبتمبر 13, 2022 قام بنشر سبتمبر 13, 2022 لا أنصح باللجوء إلى الفيجوال إلا في حالة استعصاء عمل المعادلات المعقدة في الإكسل. بدل الحدث من SelectionChange إلى حدث Change وجرب.
أفضل إجابة محمد هشام. قام بنشر سبتمبر 15, 2022 أفضل إجابة قام بنشر سبتمبر 15, 2022 السلام عليكم ورحمة الله تعالى وبركاته ..تفضل اخي جرب تم تعديل صيغة الكود Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim e As Integer Dim LastRowInSheet As Long Dim d As Variant Dim f As Variant Dim InputArray As Variant Application.ScreenUpdating = False LastRowInSheet = Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row InputArray = Range("A1:N" & LastRowInSheet) e = d + f For d = 4 To 99 For f = 100 To 1000 Step 100 InputArray(d, 1) = InputArray(d, 3) - InputArray(d, 2) + InputArray(d - 1, 1) InputArray(d, 12) = InputArray(d, 11) * InputArray(d, 10) InputArray(d, 14) = InputArray(d, 13) * InputArray(d, 10) InputArray(d, 10) = InputArray(d, 9) * InputArray(d, 8) InputArray(d + f - 3, 1) = InputArray(d + f - 3, 3) - InputArray(d + f - 3, 2) + InputArray(d + f - 4, 1) InputArray(d + f - 3, 12) = InputArray(d + f - 3, 11) * InputArray(d + f - 3, 10) InputArray(d + f - 3, 14) = InputArray(d + f - 3, 13) * InputArray(d + f - 3, 10) InputArray(d + f - 3, 10) = InputArray(d + f - 3, 9) * InputArray(d + f - 3, 8) Next Next Range("A1:N" & LastRowInSheet) = InputArray Application.ScreenUpdating = True End Sub نمودج-2.xlsb 2
AbuuAhmed قام بنشر سبتمبر 16, 2022 قام بنشر سبتمبر 16, 2022 جرب الآن وارجع لنا بالنتيجة ..مع ملاحظة أني لعبت في البيانات نمودج_02.xlsb 1
الفارس محمد رجب قام بنشر سبتمبر 17, 2022 الكاتب قام بنشر سبتمبر 17, 2022 السلام عليكم جميعا --وصباح الخير على الجميع شكرا ا/ Mohamed Hicham شكرا / AbuuAhmed الاكواد تعمل بسرعة عن الملف الاصلى ولكن ينقص شئ واحد وهو ان عمود الجانب الدائن وهو عبارة عن المستحق للمورد =( قيمة المشتريات+ ضريبة القيمة المضافة- ضريبة الخصم) كان من المفترض ان تتم هذه العملية من خلال الكود والان الكود يقوم بحساب قيمة المشتريات وقيمة ضريبة القيمة المضافة وقيمة ضريبة الخصم ولا يحسب المستحق للمورد فى عمود الجانب الدائن السابق ذكره
AbuuAhmed قام بنشر سبتمبر 17, 2022 قام بنشر سبتمبر 17, 2022 أخي تدخلي لحل مشكلة البطء ولم أتدخل في العمليات الحسابية. الحل الأخير لا يمكن مقارنته بما سبق ، فحلي كان لمشكلة تقنية تحتاج إلى انتباه وقد وجهت لكم نصيحة في مشاركة سابقة لي ولم تلتفتوا إليها وكان بها نصف الحل. المشكلة كانت اختياركم للحدث الخطأ والآخر هي مشكلة تكرار الحدث مع كل عملية تحديث للخلايا وقد تم تغيير الحدث وتم تعطيل الحدث أثناء العمليات الحسابية. أما شفرات الحسابات فهي شفرات احترافية لا شك وخصوصا تصميم حلقات التكرار ومع ذلك اختصار الشفرة وجمالها لا تصلح المشكلة فعدد العمليات هي نفسها سواءً كانت الشفرة بألف سطر أو بعشرة مع الحلقات. وأنا بالتأكيد مع الحلقات الذكية والتنظيم الجميل لها. على محترفي الإكسل والشفرات النظر للأمثلة ومقارنة أدائها واخبارنا بالتقييم الصحيح ، وشكرا للجميع. ملاحظات : - حل تكرار الحدث تمكنت من التغلب عليه في موضوع آخر "بالتحايل" ولكن في هذا الموضوع تم حله بالشكل البرمجي الصحيح بعد عمليات بحث مكثفة. - سامحني لا أتمكن من المتابعة لمشكلة العمليات الحسابية ونتائجها ، موفقين دائما. 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.