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

المراد جعل الماكرو يعمل بطريقة LOOP


salman a

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

السلام عليكم

إخواني الكود يعمل كلما تم التغير في الخلية E2

المطلوب أنه كلما حدث تغير في الخلية E2 أو E3 أو 3 E حتى E15

يتم عمل الكود عند أي تغير في أرقام أحد الخلايا من E2 حتي E15

تحياتي

>>><<<<

LOOP.zip

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

  • 1 month later...

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

أخي العزيز Nse أعجبتني فكرة عمل الكود ، وسبق لي طرح موضوع مماثل لهذا الموضوع ولكن لي عليه ملاحظات بخصوص عدم إحصائه التغيرات الغير مباشرة أو الناجمة عن تغير ذاتي كاتاريخ مثلا ، يعني لا أريده فقط يحصي التغير الناتج عن التغيير اليدوي ثم ضغط زر الإدخال enter ، المطلوب أن يكون شاملا لكل تغير مع غض النظر عن مصدرذلك التغير،.........

أرجو من جنابك الكريم زيارة الرابط التالي :

http://www.officena.net/ib/index.php?s=&am...ost&p=59305

تحياتي

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

الأخوان halwim و Nse و Salman a .. إذا سمحتوا لي:

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

Private Sub Worksheet_Change(ByVal Target As Range)

TA = Target.Address

If TA = "$E$2" Then [C2] = [C2] + [A2]
If TA = "$E$3" Then [C3] = [C3] + [A3]
If TA = "$E$4" Then [C4] = [C4] + [A4]
If TA = "$E$5" Then [C5] = [C5] + [A5]
If TA = "$E$6" Then [C6] = [C6] + [A6]
If TA = "$E$7" Then [C7] = [C7] + [A7]
If TA = "$E$8" Then [C8] = [C8] + [A8]
If TA = "$E$9" Then [C9] = [C9] + [A9]
If TA = "$E$10" Then [C10] = [C10] + [A10]
If TA = "$E$11" Then [C11] = [C11] + [A11]
If TA = "$E$12" Then [C12] = [C12] + [A12]
If TA = "$E$13" Then [C13] = [C13] + [A13]
If TA = "$E$14" Then [C14] = [C14] + [A14]
If TA = "$E$15" Then [C15] = [C15] + [A15]

End Sub
وبإمكاننا أيضاً إختصار الكود السابق بشكل أكبر ليصبح هكذا:
Private Sub Worksheet_Change(ByVal Target As Range)

TR = Target.Row
TC = Target.Column

If TC = 5 And TR > 1 And TR <= 15 Then _
Range("C" & TR) = Range("C" & TR) + Range("A" & TR)

End Sub

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

LOOP.rar

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

السلام عليكم

أستاذ علي السحيب .... شكرا كثيرا لك

أرجو التعديل على الملف المرفق ؛ وحتى لوأجريتم التعديل على الكود الذي أرفقه الأخ Nse فلامانع، ...... المهم مراعاة الملاحظات التي رصدتها في المرفق التالي :

تحياتي

RE_counter.rar

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

تم عمل جميع التعديلات المطلوبة على الملف المرفق،

فأصبح الكود الخاص بالصفحة هو:

Private Sub Worksheet_Change(ByVal Target As Range)

TC = Target.Column
TR = Target.Row

If TR = 4 Or TR = 10 Then Exit Sub
If TC = 1 And TR > 1 And TR <= 10 Then Cells(TR, 2) = Cells(TR, 2) + 1
If TC = 10 And TR > 1 And TR < 30 Then [B10] = [B10] + 1

End Sub
وتم إضافة كود آخر يعمل عند فتح الملف .. وهو يعمل على إدخال التاريخ في الخية A4 .. وزيادة العدد في الخلية B4 إذا كان التاريخ المُدخل يختلف عن الموجود مسبقاً.
Private Sub Workbook_Open()

Dim DiffDays As Long

OldDate = [A4]
[A4] = Date
DiffDays = DateDiff("d", OldDate, [A4])

[B4] = [B4] + DiffDays

End Sub

_______________________.rar

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

بسم الله الرحمن الرحيم

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

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

ثانيا : بالنسبة لعداد التاريخ الموجود في الخلية (B4) اكتشفت أنه لايعتمد على تغيرات الدالة NOW() وعندما حاولت إدراجها في الخلية (A4) أو إدراج دالة تاريخية أخرى لا يقبل ذلك ،فإنه إذا حفظت الملف وخرجت ثم فتحت الملف من جديد أرى أن مفعول الدالة ينتهي ولا وجود لها في شريط الصيغة.

ثالثا : وهو الأهم ، بالنسبة لعداد المبالغ الموجود في الخلية (B10) اكتشفت أنه لا يعتمد على تغيرات خلية مجموع المبالغ وهي (A10) وعندما أزلت معادلة sum الموجودة بداخلها، لا يزال العداد رغم ذلك يعمل فبعد ادخال مبلغ جديد في العامود (J) يزداد العداد وهذا يعني أن التغير المحتسب في العداد ليس مصدره التغير الغير مباشر في (A10) والمطلوب هواحتساب التغيرات الغير مباشرة في (A10) كما إذا تغيرت بسبب زيادة مجموع المبالغ، وليس بسبب إدخال المبلغ في العمود (J) أتقد وضحت الفكرة ؟

في انتظار التعديل على هاتين الملا حظتين ........ وشكرا

تحياتي

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

بالنسبة لعداد التاريخ الموجود في الخلية (B4) اكتشفت أنه لايعتمد على تغيرات الدالة NOW() وعندما حاولت إدراجها في الخلية (A4) أو إدراج دالة تاريخية أخرى لا يقبل ذلك ،فإنه إذا حفظت الملف وخرجت ثم فتحت الملف من جديد أرى أن مفعول الدالة ينتهي ولا وجود لها في شريط الصيغة.

أود أولاً أن أعطيك معلومة صغيرة .. وهي أن الكود يعمل فقط عندما يكون التغيير يدوياً وليس عن طريق الدوال كالدالة Now وغيرها من الدوال التي تتحدث بشكل يومي .. وهذا ما أضطرني إلى إضافة كود آخر إلى الكود الأساسي .. فإني جعلت إدراج التاريخ في الخلية A4 .. يتم عن طريق الكود أثناء فتح الملف .. وهو يعمل بشكل أفضل من الدالة NOW.. مثلاً لو أغلقت يوم الأربعاء بتاريخ 04/11/2006 وعدد مرات التغيير في الخلية B4 هو 11 .. ولم تفتح الملف إلا يوم السبت القادم .. فستجد أن التاريخ الموجود في الخلية B4 هو تاريخ يوم السبت وهو 07/11/2006 .. وعدد مرات التغيير هو 14 .. أي أنه قام بإحتساب عدد الأيام التي لم تفتح فيها الملف (2) واليوم الذي فتحت الملف فيه (1) .. وأضاف الثلاثة أيام إلى 11 فأصبحت 14 .. أليس هذا هو ماتريد؟؟

بالنسبة لعداد المبالغ الموجود في الخلية (B10) اكتشفت أنه لا يعتمد على تغيرات خلية مجموع المبالغ وهي (A10) وعندما أزلت معادلة sum الموجودة بداخلها، لا يزال العداد رغم ذلك يعمل فبعد ادخال مبلغ جديد في العامود (J) يزداد العداد وهذا يعني أن التغير المحتسب في العداد ليس مصدره التغير الغير مباشر في (A10) والمطلوب هواحتساب التغيرات الغير مباشرة في (A10) كما إذا تغيرت بسبب زيادة مجموع المبالغ، وليس بسبب إدخال المبلغ في العمود (J) أعتقد وضحت الفكرة ؟

نفس الجواب بالنسبة لطريقة عمل الدوال مع الأكواد المشروح في الإجابة الأولى .. ينطبق على هذه الحالة أيضاً

ولتوضيح الفكرة أكثير .. وأود أن أسألك بعض الأسئلة

أليس التغير في الخلية A10 .. يعتمد على التغير في مجموع خلايا العمود J؟؟

أيضاً أليس تغير العدد في الخلية B10 .. يعتمد على التغير في الخلية A10 .. ؟؟

إذاً خلايا العمود J والخلية A10 والخلية B10 .. مرتبطين ببعضهم البعض .. أليس كذلك؟؟

وبما أن التغيير لن يتم إلا على خلايا العمود J .. فإني جعلت التغير في الخلية B10 .. يعتمد على أي تغير في خلايا العمود J.

أتمنى أن تكون إجابتي واضحة ومفهومة ..

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

السلام عليكم

شكرا على توضيحاتكم الشافية..

أليس التغير في الخلية A10 .. يعتمد على التغير في مجموع خلايا العمود J؟؟

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

أيضاً أليس تغير العدد في الخلية B10 .. يعتمد على التغير في الخلية A10 .. ؟؟

أعتقد أن الإشكال السابق يشمل هذه الحالة أيضا .

وبما أن التغيير لن يتم إلا على خلايا العمود J .. فإني جعلت التغير في الخلية B10 .. يعتمد على أي تغير في خلايا العمود J.

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

أود أولاً أن أعطيك معلومة صغيرة .. وهي أن الكود يعمل فقط عندما يكون التغيير يدوياً وليس عن طريق الدوال كالدالة Now وغيرها من الدوال التي تتحدث بشكل يومي

بعد معرفتي لهذه المعلومة حصلت لي قناعة عن بعض الأمور المستعصية من قبل .

شكرا كثيرا لك

تحياتي

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

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

ولي طلب ، الغرض منه مراقبة الموظف المكلف بهذ الملف ، وذلك بمعرفة عدد مرات فتحه للملف مع غض النظر عن التاريخ ، فمثلا لو كان الرقم (1) في الخلية B5 (وهي خلية العداد) وقد فتح الموظف الملف عشر مرات سواء في يوم واحد أو حتى في ساعة واحدة أو خلال خمسة أيام، المهم يخرج عدد مرات فتح الملف في خلية العداد (B5) لكي يصبح الرقم فيها (11) نظرا لفتح الملف عشر مرات + واحد الموجود من البداية. أو يصبح الرقم في العداد (10) في حال تم تصفير العداد قبل استخدام الموظف .

أتمنى أن ترفقون هذه الإضافة مع مرفقكم الأخير.

أخيرا اسمحوا لي على الإطالة ودمتم .

تحياتي

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

أستاذنا الفاضل ،،،، أباحسين

شكرا شكرا شكرا ، أدعوا لك من الأعماق بالتوفيق والسعادة .

أستذ علي لدي سؤال وأحس اني أتعبتكم كثير .....

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

1 - تاريخ الإنشاء

2 - تاريخ التعديل

3 - تاريخ الوصول

المطلوب وضع هذه المعلومات في ملف إكسل وليكن مكان ذلك الخلية A6 و A7 و A8 من المرفق مثلا

وأهم شيء هو تاريخ آخر استخدام أو آخر حفظ أوآخر فتح للمف ، يعني التاريخ المطلوب هوتاريخ آخر فتح للملف وليس آخر استخدام لخلية معينة .

هل يمكن ذلك ؟

تحياتي و شكرا

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

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

شكرا لك أستاذي الفاضل .... أباحسين

المرفق الأخير روعة يلبي كثير مما أنشده ولكن لي عليه بعض الملاحظات كما يلي :

أولا : لم أرى مكان في عمود B لتاريخ إنشاء الملف، كما في خصائص وندوز .

ثانيا : ما المقصو بعدد مرات التحديث في A3 لم أرى تغير في العداد بالخلية C3 ؟

ثالثا : هل بمقدوركم جعل التواريخ في عمود c بحيث يخرج مع التاريخ الوقت ؛ الساعة والدقيقة والثانية نظرا لكون التغيرات تحدث خلال 24 ساعة .

رابعا : بالنسبة للعمود B أرجو ملاحظ مايلي : هل هناك فرق بين تاريخ B4 و B7

خامسا : بالنسبة للعدادات في عمود C أرجو ملاحظة مايلي :

أعتقد أن جميع العدادات المتعلقة بالتواريخ في عمود c متشابهه وتعمل بطريقة واحدة إلا العداد الموجود في c4 أليس كذلك ؟

حيث لم ألمس فرقا بين عداد c6 و c7 و c8 مع أن المفروض أن يتم تحديث عداد c7 بمجرد الوصول وإن لم يتم تحديث للصفحة.

ثم مالفرق بين عداد الخليتين c2 و c9

أخيرا أرجو السماح والمعذرة على التطويل .

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

أولا : لم أرى مكان في عمود B لتاريخ إنشاء الملف، كما في خصائص وندوز .

تم الإضافة،

ثانيا : ما المقصو بعدد مرات التحديث في A3 لم أرى تغير في العداد بالخلية C3 ؟

أي أنك عندما تذهب لصفحة أخرى وترجع للصفحة الأولى سوف يتم زيادة العدد الموجود في C3 بمقدار 1 .. (يحسب عدد مرات وقوفك على هذه الصفحة) .. ولذلك قمت بإضافة صفحة جديدة لتجربة ذلك.

هل بمقدوركم جعل التواريخ في عمود c بحيث يخرج مع التاريخ الوقت ؛ الساعة والدقيقة والثانية نظرا لكون التغيرات تحدث خلال 24 ساعة .

تم عمل ذلك،

رابعا : بالنسبة للعمود B أرجو ملاحظ مايلي : هل هناك فرق بين تاريخ B4 و B7

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

خامسا : بالنسبة للعدادات في عمود C أرجو ملاحظة مايلي :

أعتقد أن جميع العدادات المتعلقة بالتواريخ في عمود c متشابهه وتعمل بطريقة واحدة إلا العداد الموجود في c4 أليس كذلك ؟

حيث لم ألمس فرقا بين عداد c6 و c7 و c8 مع أن المفروض أن يتم تحديث عداد c7 بمجرد الوصول وإن لم يتم تحديث للصفحة.

- العداد الخاص بعدد مرات تحديث الصفحة يتحدث بمجرد الإنتقال إلى صفحة أخرى والرجوع إلى نفس الصفحة.

- العداد الخاص بعدد مرات فتح الملف وتاريخ آخر وصول .. يتحدثان مباشرة عند فتح الملف.

- العداد الخاص بتاريخ آخر تعديل .. يتحدث عند حفظ الملف.

ثم مالفرق بين عداد الخليتين c2 و c9

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

_______________________.rar

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

المرفق يحتوي على كود يقوم بإخراج المعلومات الخاصة بالملف:

1- إسم الملف.

2- مساره.

3- إسم منشئه.

4- تاريخ ووقت إنشاءه.

5- تاريخ ووقت آخر وصول للملف.

6- تاريخ ووقت آخر تعديل على الملف.

7- إسم المستخدم الذي أدخل تعديلات على الملف.

8- إسم الشخص الذي تم آخر وصول من خلاله.

أتمنى أن يحوز على إستحسانكم,

Show_File_Access_Information.rar

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

بسم الله الرحمن الرحيم

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

أخي العزيز أستاذ علي السحيب ، كلمات الشكر قليلة في حقك لأنك تبذل أكثر مما نطلب جزاك الله خير الجزاء

وإذ يتطلب الأمر أحيانا التطويل في بعض المشاركات، يعلم الله أنه ليس بقصد إتعابكم ولكن من أجل الوصول بالفكرة

إلى مرحلة النضوج والكمال وفي نفس الوقت التعلم ..... دعائي لك ولكل من بذل العلم بالتوفيق والتسديد من الله والوصول

إلى التكامل إن شاء الله .

يوجد عدة ملاحظات على المرفقين الأخيرين تم رصدها في المرفق التالي ،

تحياتي

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

بالنسبة للملاحظات على الملف عدد مرات التغير في خلية:

1- التاريخ الذي ظهر لدي في الخصائص هو نفسه التاريخ الذي يظهر الخلية B6 .. كما في المرفق،

2- التحديث يتم بشكل طبيعي .. ولكن لا تنسى أن تقوم بحفظ الملف قبل الخروج منه لكي يتم حفظ التحديثات.

3- عند خروج الرسالة التي تحدث عنها إضغط على Debug .. وإنسخ السطر المضلل باللون الأصفر وضعه هنا لكي يتم التعرف على السبب.

أرجوا من الأخوان الذي أطلعوا على المرفقات أن يبدوا رأيهم .. لكي يتبين الخلل بالضبط إن وجد.

بالنسبة للملاحظات على الملف Show File Access Information:

1- جميع التواريخ تعمل معي بشكل طبيعي وممتاز وبدون إختلاف عن المعلومات الموجودة في نافذة الخصائي .. كما هو واضح في المرفق.

2- بالنسبة للزر الأول والثاني فإنهما يعملان بشكل طبيعي وممتاز .. وأرجوا ممن حمل المرفق أن يذكر لنا إذا كانت الأزرار تعمل معه أم لا .. أما بالنسبة للزر الثالث (معلومات ملف آخر على الجهاز) .. فلتشغيله يلزمك إنشاء ملف نص على القرص D .. بإسم New Text Document .. أو أي ملف آخر مع مراعاة تغيير مساره داخل الكود.

3- لا أعتقد ذلك .. أرجوا من الأخوان إبداء رأيهم.

4- يتم تحديث آخر وصول وآخر تعديل عند حفظ الملف .. ولكي ترى أن هناك فرق لاحظ تاريخ التعديل بعد فتح الملف مباشرة.

5- نفس الإجابة بالنسبة للملف الأول.

__________________.rar

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

بسم الله الرحمن الرحيم

تحياتى للجميع

الاستاذ علي السحيب

تحياتى لك

بالنسبة لرسالة الخطأ

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

بالنسبة للملف السابق معلوماتة مطابقة تماما كما هو موضح بالصور

post-10711-1160593187_thumb.jpg

وارجو ان تقبلوا اسهاما صغيرا منى بخصوص هذا الموضوع

وهو عدد مرات فتح الملف ( الكود بالمرفقات )

تحياتى للجميع

__________________.rar

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

بسم الله الرحمن الرحيم

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

شكرا لكم جميعا ، وشكر خاص للأستاذ تامر على المشاركة

الأخ العزيز أستاذ علي السحيب ، استكمالا للموضوع .... أرجو الإطلاع على مايلي ،

ولعل بعض ملاحظاتي السابقة مرتبطة بالخلل الذي تشير إليه الرسالة على العموم ،

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

هذا هو السطر المضلل باللون الأصفر :

Set f = fs.GetFile(fn)

وهو نفسه يخرج عند فتح المفين المرفقين في المشاركتين رقم 18 و 19

تحياتي

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

لم يخرج معي أي خلل في الكود .. ربما المشكلة تكمن في نسخة الأوفيس أو الويندوز التي لديك..

على كل حال .. الرجاء من الأعضاء الكرام إبداء ملاحظاتهم حول هذا الخلل.

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

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

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

Important Information