اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

انا جديد هنا في المنتدى وليس لدي خبرة السؤال هو على الشكل التالي : 

عندي  ثلاث خلايا   الكمية هي الخلية A1 ... السعر الإفرادي هي الخلية B1 ..... الإجمالي هي الخلية C1 

المطلوب تنفيذ ماكرو عند عمل أي تغيير على الخلية b2  ليكون ناتج الماكرو الذي هو (A1*B1)= يظهر الناتج في الخلية C1 

انا اعلم انه بكل بساطة ممكن أن اكتب معادلة =A1*B1 في الخلية C1  ولكن اريد تطبيق هذه المعادلة عن طريق ماكرو للسبب التالي اريد عمل 2 ماكرو واحد يحسبلي السعر الافرادي اذا وضعت الاجمالي والثاني يحسبلي الاجمالي اذا وضعت الافرادي لانه وهذا لا يمكن تنفيذه بكتابة المعالة 

ان شاء الله يكون الامر واضح تقبلو مروري . 

أخوكم أبو يحيى من سوريا

قام بنشر

انحل معي نصف الموضوع ولكن كيف يمكنني تطبيق الماكرو الثاني مع الاول 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("b1").Value <> "" Then
Range("c1").FormulaArray = "=(a1*b1)"
End If

End Sub

 

 
قام بنشر

أخى الفاضل

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

 

قام بنشر

الأخ الفاضل أبو يحي

أهلاً بك في المنتدى ونورت بين إخوانك

برجاء تغيير اسم الظهور للغة العربية ومراجعة موضوع التوجيهات في الموضوعات المثبتة في المنتدى لمعرفة كيفية التعامل مع المنتدى بشكل أفضل

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

تقبل تحياتي

قام بنشر

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

أولا أخي rasboten لا يتم حساب الافرادي اذا ادخلت الاجمالي فقط يحسب الاجمالي بالملف الذي أرسلته 

ثانيا ً أخي ياسر خليل أبو البراء تقبلوني فأنا جديد لا اعرف قوانين المنتدى وان شاء الله تقبلوني في اسرتكم الكريمة 

ثالثا : سأرفق لكم ما طلبتم + صورة للشرح وارجو الرد من قبلكم 

 

 

أبو يحيى_1.jpg

ملف اكسيل.rar

قام بنشر

أخي الكريم أبو يحيى

كليك يمين على اسم ورقة العمل ثم View Code ثم ضع الكود التالي في حدث ورقة العمل

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.CountLarge > 1 Then Exit Sub
    If Target.Row > 1 And Target.Column = 2 Then
        Application.EnableEvents = False
            Target.Offset(0, 1).Value = Target.Value * Target.Offset(0, -1).Value
        Application.EnableEvents = True
    End If
    If Target.Row > 1 And Target.Column = 3 Then
        Application.EnableEvents = False
            Target.Offset(0, -1).Value = Target.Value / Target.Offset(0, -2).Value
        Application.EnableEvents = True
    End If
End Sub

 

 

قام بنشر (معدل)

بارك الله فيك أخي ياسر أبو البراء ونفع بك الاسلام والمسلمين 
 هذا ما طلبته بالضبط 

ممكن شرح بسيط باللغة العربية للمفردات امام كل سطر  اذا كرمت علي لانوا شايفك وضعت  عدة شروط عند تغيير الخلية بالصفحة 
معلش تحملوني انا جديد على برمجة الفيجوال بيسك 

تم تعديل بواسطه أبو يحيى الجبلاوي
قام بنشر

أخي الكريم تفضل شرح مبسط للكود

Private Sub Worksheet_Change(ByVal Target As Range)
    'إذا كان عدد الخلايا التي سيتم فيها التغيير أكثر من خلية يتم الخروج من الإجراء الفرعي
    If Target.Cells.CountLarge > 1 Then Exit Sub
    
    'في حالة التعامل مع العمود الثاني والصف أكبر من 1 أي التعامل مع الصفوف بدايةً من الصف الثاني
    If Target.Row > 1 And Target.Column = 2 Then
        'إلغاء خاصية تمكين الحدث
        Application.EnableEvents = False
            'الخلية في العمود الثالث التالي للخلية الهدف يساوي
            'قيمة الخلية الهدف التي يتم الكتابة فيها × الخلية في العمود الاول
            Target.Offset(0, 1).Value = Target.Value * Target.Offset(0, -1).Value
        'استرجاع الخاصية مرة أخرى وتفعيلها
        Application.EnableEvents = True
    End If
    
    'في حالة التعامل مع العمود الثالث والصف أكبر من 1 أي التعامل مع الصفوف بدايةً من الصف الثاني
    If Target.Row > 1 And Target.Column = 3 Then
        Application.EnableEvents = False
            'الخلية في العمود الثاني السابقة للخلية الهدف تساوي
            'قيمة الخلية الهدف التي في العمود الثالث / الخلية في العمود الأول
            Target.Offset(0, -1).Value = Target.Value / Target.Offset(0, -2).Value
        Application.EnableEvents = True
    End If
End Sub

 

  • Like 2
قام بنشر

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

بس أخي سؤال اخبر وسامحني تقلت عليك 

بالعادة بالاكسيل لما يتحط دالة وتنسخ الأرقام نسخ لصق او بالسحب للأسفل  بيقوم يعملية الحساب ولكن بعد وضع الكود هي الخاصية التغت في حل ؟ 

قام بنشر

التعامل مع الأكواد لا يدعم التراجع ..والكود يقوم بعمل الدالة التي تقوم بإدراجها فما الداعي لإدراج المعادلة في هذين العمودين (الثاني والثالث) ..؟

قام بنشر

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

قام بنشر

بارك الله فيك أخي سليم أنت ماشاء الله عليك أنت اخي حليت الجزء الذي يخص نسخ الخلايا فعلا عند نسخ الخلايا يتم احتساب المجموع

ولكن أخي الكريم بارك الله فيك لم يعد يحسب الناتج عندي الادخال اليدوي جرب أدخل القيم يدويا لا يتم احتسابها الا اذا ضغطت على زر Del في الخلية 

:fff:

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

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information