اذهب الي المحتوي
أوفيسنا

شرح كتابة معادلة الإكسيل داخل كود فيجوال بيسك - فديو تعليمي


الردود الموصى بها

  • 3 months later...

السلام عليكم

ما شاء الله اخي كيماس

اكثر من رائع ... وموضوع مميز ومفيد

بارك الله فيك وادامك الله عونا للجميع

وزادك الله من علمه

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله

الاستاذ الفاضل عبدالفتاح (ابوعمر)

موضوع جميل :fff::fff: وشرح اجمل :clapping::clapping:

لاثراء الموضوع في المرفقات شرح بدون صوت لطريقة عمل المعادلة (نفس الفكرة بتاعتك) ولكن ليس بكتابة الميكرو وانما بتسجيل الميكر للاستفادة من هذه الخاصية

اخوك ابواحمد

الشرح.rar

رابط هذا التعليق
شارك

  • 1 month later...

شرح جميل ورائع أخونا الغالى

عندى سؤالين صغيرين

1. فى حالة تشغيل الكود بأمر رن

هل الكود سيعمل أوتوماتيكياً كلما فتحت الملف أم لابد من الدخول على رن كلما أردنا تنفيذ الكود ؟؟

2. هل فى جميع المعادلات المراد تحويلها إلى أكواد يتم تغيير ( ; ) إلى ( , ) أم فى حالات معينة فقط ؟؟

الف شكر

تم تعديل بواسطه يوسف عطا
رابط هذا التعليق
شارك

عندى سؤال صغير

فى حالة تشغيل الكود بأمر رن

هل الكود سيعمل أوتوماتيكياً كلما فتحت الملف أم لابد من الدخول على رن كلما أردنا تنفيذ الكود ؟؟

الف شكر

اخي يوسف

لتنفيذ الميكرو هخناك عدة طرق منها اليدوي ومنها الاوتوماتيكيا بمجرد فتح الملف

الطريقة اليدوية

1. يمكنك عمل اختصار لتنفيذ الكود بمجر الضغط على ازرار الاختصار يتم تنفيذ الكود ((المرفق للتوضيح)) والاختصار هو : Ctrl+Shift+A

2. يمكنك انشاء زر ووضع الميكرو في حدث ضغط الزر حتى يتم تنفيذه ((موجودفي ملف الاستاذ كيماس))

الطريقة الاوتوماتيكية

يمكنك وضع الكود في حدث ورقة العمل ليتم تنفيذه تفعيل ورقة العمل ((في المرفق امسح ناتج الجمع ثم اذهب الى الورقة 2 وبعدها اذهب الى الورقة 1 ولاحظ انه تم تنفيذ الميكرو ))

ان شاء الله وضحت الصورة

ابواحمد

المرفق 1.rar

رابط هذا التعليق
شارك

عندى سؤال صغير

فى حالة تشغيل الكود بأمر رن

هل الكود سيعمل أوتوماتيكياً كلما فتحت الملف أم لابد من الدخول على رن كلما أردنا تنفيذ الكود ؟؟

الف شكر

اخي يوسف

لتنفيذ الميكرو هخناك عدة طرق منها اليدوي ومنها الاوتوماتيكيا بمجرد فتح الملف

الطريقة اليدوية

1. يمكنك عمل اختصار لتنفيذ الكود بمجر الضغط على ازرار الاختصار يتم تنفيذ الكود ((المرفق للتوضيح)) والاختصار هو : Ctrl+Shift+A

2. يمكنك انشاء زر ووضع الميكرو في حدث ضغط الزر حتى يتم تنفيذه ((موجودفي ملف الاستاذ كيماس))

الطريقة الاوتوماتيكية

يمكنك وضع الكود في حدث ورقة العمل ليتم تنفيذه تفعيل ورقة العمل ((في المرفق امسح ناتج الجمع ثم اذهب الى الورقة 2 وبعدها اذهب الى الورقة 1 ولاحظ انه تم تنفيذ الميكرو ))

ان شاء الله وضحت الصورة

ابواحمد

الف شكر عزيزى الغالى أبو أحمد

لا حرمنا الله من علمك

بالنسبة لإستفسارى الثانى بخصوص علامة ; و تغييرها لعلامة , هل يتم ذلك فى جميع المعادلات المراد تحويلها إلى أكواد أم فى حالات معينة فقط ؟؟

لأنى عندما حاولت تطبيق الفكرة وتحويل معادلة إلى كود ظهر لى خطا ولم أعرف معناه أو طريقة حله

والمعادلة المراد تحويلها إلى كود هى

=IF(AND(M3="غ";N3="غ";O3="غ";P3="غ";Q3="غ";R3="غ";S3="غ";T3="غ";U3="غ";V3="غ";W3="غ";X3="غ";Y3="غ";Z3="غ";AA3="غ";AB3="غ";AC3="غ";AD3="غ";AE3="غ";AF3="غ";AG3="غ";AH3="غ";AI3="غ";AJ3="غ";AK3="غ";AM3="غ";AN3="غ";AO3="غ";AR3="غ";AS3="غ");"غ";SUM(N3;P3;R3;T3;V3;Y3;AB3;AD3;AG3;AI3;AK3))

والمدى المطلوب أن تطبق فيه من AL3 إلى AL1400

ومفروض أن يتم تنفيذ الكود تلقائياً

رابط هذا التعليق
شارك

اخى الكريم كيماس

جزاك الله كل خير علي ما تقدمه من خير ومنفعة للناس

جعلة الله في ميزان حسناتك ان شاء الله

ولي سؤال

هل هدة الفكرة لو طبقت علي ملف به دوال كثيرة للجمع تخفف من حجم الملف وتجعل الملف يعمل بشكل اسرع ؟ام لا يفيد؟

رابط هذا التعليق
شارك

الأخ المحترم جلال

الكود أيضا يضع المعادلة فى الخلايا ولا يحذفها

فالنتيجة واحدة

لكن هناك وظائف تؤدى نفس مهمة المعادلة و لا تترك معادلة بالخلية

و هى ما يسمى بوظائف الشيت

وتعمل من داخل الكود

مثلا

application.worksheetfunction.counta

فهذه بديل لدالة counta

التى تستخدم فى الخلية

لكنها تقوم بالحساب بدون ترك معادلة

لأنها وظيفة مبيتة فى تطبيق إكسل

لكن هذه الوظائف محدودة قليلا إذا قورنت بالدوال العادية التى نستخدمها مباشرة فى الشيت

رابط هذا التعليق
شارك

اخى الفاضل كيماس

شكرا علي التوضيح

بصراحة انا من فترة ابحث عن كود للجمع بديل لدالة الجمع وذلك لتخفيف وتسريع الملف

فاعجبتنى فكرة حضرتك .. فهل من تعديل لها كما ذكرت بحيث لا تكون الداله في الخلية

وجزاكم الله خيرا علي هذا المجهود العظيم

رابط هذا التعليق
شارك

أهلا و سهلا أخى جلال

أعددت لك مثالا

بفرض أننا نريد جمع a2 - b2

a3-b3

a4-b4

ونريد الجمع فى c2-c4

المعادلة بالكود تصير هكذا

Range("c2:c4").Formula = "=sum(a2,b2)"

و هنا تظهر المعادلة فى خلايا الجمع مع اختلاف الفاصلة و الفاصلة المنقوطة أما باستخدام الوظيفة المبيتة فيكون الكود
Sub زر2_انقر()

Dim myrng As Range, myc As Range

Set myrng = Sheets(1).Range("c2:c4")

myrng.ClearContents

For Each myc In myrng

myc = Application.WorksheetFunction.Sum(Range("a" & myc.Row, Range("b" & myc.Row)))

Next myc



End Sub

و هنا لا تظهر للمعادلة أثر و يظهر حاصل الجمع فقط

جرب الزرين بالمثال

ولاحظ الفرق

موفق إن شاء الله

الجمع بكود المعادلة أو كود الوظيفة.rar

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

ستكون هكذا

Selection.FormulaR1C1 = _

        "=IF(ISERROR(VLOOKUP(R1C2,RNG,8,0)),"""",VLOOKUP(R1C2,RNG,8,0))"

مع تغيير selection إلى عنوان الخلية التى ستوضع بها المعادلة

رابط هذا التعليق
شارك

أستاذ كيماس

بعد التحية والسلام

هل يمكن وضع هذه المعادلة فى كود فى شيت ويكون الحدث سيليكشن تشانج ومكان الناتج فى الخلايا من AL3 إلى AL1400

=IF(AND(M3="غ";N3="غ";O3="غ";P3="غ";Q3="غ";R3="غ";S3="غ";T3="غ";U3="غ";V3="غ";W3="غ";X3="غ";Y3="غ";Z3="غ";AA3="غ";AB3="غ";AC3="غ";AD3="غ";AE3="غ";AF3="غ";AG3="غ";AH3="غ";AI3="غ";AJ3="غ";AK3="غ";AM3="غ";AN3="غ";AO3="غ";AP3="غ";AQ3="غ";AR3="غ";AS3="غ");"غ";SUM(N3;P3;R3;T3;V3;Y3;AB3;AD3;AG3;AI3;AK3))

أو

=IF(AND(M3="غ";N3="غ";O3="غ";P3="غ";Q3="غ";R3="غ";S3="غ";T3="غ";U3="غ";V3="غ";W3="غ";X3="غ";Y3="غ";Z3="غ";AA3="غ";AB3="غ";AC3="غ";AD3="غ";AE3="غ";AF3="غ";AG3="غ";AH3="غ";AI3="غ";AJ3="غ";AK3="غ";AM3="غ";AN3="غ";AO3="غ";AP3="غ";AQ3="غ";AR3="غ";AS3="غ");"غ";SUM(N3;P3;R3;T3;V3;Y3;AB3;AD3;AG3;AI3;AK3))

ألف شكر

رابط هذا التعليق
شارك

اخى الكريم كيماس

جزاك الله كل خير

فعلا هذا ماكنت ابحث عنه

وطمعا منى ارجو ان تعطينى مثال لجمع اكثر من نطاق . وجمع الخلايا المتفرقه . كما في المثال المرفق

ولك جزيل الشكر

الجمع بكود المعادلة أو كود الوظيفة.rar

رابط هذا التعليق
شارك

أخى يوسف

المعادلة الأولى ستكون

Range("al3:al1400").FormulaR1C1 = _

        "=IF(AND(RC[-25]=""Û"",RC[-24]=""Û"",RC[-23]=""Û"",RC[-22]=""Û"",RC[-21]=""Û"",RC[-20]=""Û"",RC[-19]=""Û"",RC[-18]=""Û"",RC[-17]=""Û"",RC[-16]=""Û"",RC[-15]=""Û"",RC[-14]=""Û"",RC[-13]=""Û"",RC[-12]=""Û"",RC[-11]=""Û"",RC[-10]=""Û"",RC[-9]=""Û"",RC[-8]=""Û"",RC[-7]=""Û"",RC[-6]=""Û"",RC[-5]=""Û"",RC[-4]=""Û"",RC[-3]=""Û"",RC[-2]=""Û"",RC[-1]=""Û"",RC[1]=""Û"",RC[2]=""Û"",RC[3]=""Û"",RC[4]=""Û"",RC[5]=""Û"",RC[6]=""Û"",RC[7]=""Û""),""Û"",SUM(RC[-24],RC[-22],RC[-20],RC[-18],RC[-16],RC[-13],RC[-10],RC[-8],RC[-5],RC[-3],RC[-1]))"

ضعها فى الحدث الذى تريده

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

شوف أخ جلال

عملنا وظيفة للجمع

Private Function DoIt(mycola As Integer, mycolb As Integer, myr As String)

Dim rnga As Range

Set rnga = Range(myr)

Dim myc As Range

For Each myc In rnga

    myc = Application.WorksheetFunction.Sum(Cells(myc.Row, mycola), Cells(myc.Row, mycolb + 1))

Next myc

End Function
تحتاج لاستدعائها و عملها 1 - رقم العمود الأول 2 - رقم العمود الثانى 3 - اسم مدى العمود الناتج و لاستدعائها للعمليات الثلاثة الواردة بمثالك نكتب ما يلى
Sub sum1()

DoIt 1, 2, "rng1"

DoIt 4, 5, "rng2"

DoIt 3, 6, "rng3"

End Sub

اسم الوظيفة DoIt

رقمى عمودى الجمع

المدى الذى سنضع فيه الناتج

و هذا نطاق نسميه فى الشيت

وظيفة للجمع بدلالة عمودين و نطاق الناتج.rar

رابط هذا التعليق
شارك

أخى الغالى جربت الكود

Range("al3:al1400").FormulaR1C1 = _

        "=IF(AND(RC[-25]=""Û"",RC[-24]=""Û"",RC[-23]=""Û"",RC[-22]=""Û"",RC[-21]=""Û"",RC[-20]=""Û"",RC[-19]=""Û"",RC[-18]=""Û"",RC[-17]=""Û"",RC[-16]=""Û"",RC[-15]=""Û"",RC[-14]=""Û"",RC[-13]=""Û"",RC[-12]=""Û"",RC[-11]=""Û"",RC[-10]=""Û"",RC[-9]=""Û"",RC[-8]=""Û"",RC[-7]=""Û"",RC[-6]=""Û"",RC[-5]=""Û"",RC[-4]=""Û"",RC[-3]=""Û"",RC[-2]=""Û"",RC[-1]=""Û"",RC[1]=""Û"",RC[2]=""Û"",RC[3]=""Û"",RC[4]=""Û"",RC[5]=""Û"",RC[6]=""Û"",RC[7]=""Û""),""Û"",SUM(RC[-24],RC[-22],RC[-20],RC[-18],RC[-16],RC[-13],RC[-10],RC[-8],RC[-5],RC[-3],RC[-1]))"

ولكنه أعطانى إرور وتظليل أصفر فى صفحة محرر الفيجوال بيزك

أرجو التجربة

الف شكر

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information