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

محمد حجازي

المشرفين السابقين
  • Posts

    771
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    2

كل منشورات العضو محمد حجازي

  1. السلام عليكم ... هذا مثال عن وقت متغير اقتبسته من المشاركة التالية للأخوة حسام نور ومحمد طاهر : http://www.officena.net/ib/index.php?showtopic=5121 ChangeTime.zip
  2. السلام عليكم ... يمكنك ذلك عن طريق تغيير إعدادات الويندوز ، فقط اتبعي الخطوات التالية : Control Panel < Regional and Language Options في علامة التبويب Regional Options اضغطي على الزر Customize ليظهر لك فورم جديد : تحت علامة التبويب Numbers : غيري الخيار Standard digits إلى الأرقام العربية غيري الخيار Digit substitution إلى National كما يمكنك بنفس الطريقة تغيير الفاصلة المستخدمة في الاكسل من فاصلة عادية ( , ) إلى فاصلة عشرية ( ; ) الحديث السابق كان في ويندوز XP
  3. السلام عليكم ... شكراً للأخ محمد طاهر على إضافة قسم التحميل المؤقت للأعضاء ، وهذه أول ثمار هذه الميزة على قسم الاكسل ، وإن شاء الله إلى الأمام دوماً .
  4. السلام عليكم... شكراً لك يا أخي محمد طاهر على هذا الدرس الجميل حقاً بالنسبة لي فإنني لم استخدم نظام الترميز R1C1 مطلقاً في أكواد الـ VBA وكنت استعيض عنه بدمج التعليمتين Range و Cells ، ولكن وبعد هذا الدرس الجميل بدأت التفكير بصورة جدية في استخدامه في أكواد الفيجوال لأنه بحق يسهل علي الكثير من الأعمال في الروابط التالية بعض المعلومات عن نظام الترميز R1C1 : http://www.c4arab.com/showlesson.php?lesid=2109 http://www.c4arab.com/showlesson.php?lesid=2110
  5. السلام عليكم ... شكراً لك يا أخي محمد على هذا الكود وبصراحة فأنا كنت استغرب من النصائح التي أقرأها عن استخدام نمط الترميز R1C1 في أكواد الـ VBA ، ولكن الصورة اتضحت لي بعد اطلاعي على أكوادك و أكواد الأخ أبو هادي
  6. السلام عليكم ... سألني أحد الأخوة عن نمط الترميز R1C1 ، وأجبته بأن نسبة استخدام هذا النمط منخفضة جداً لدى مستخدمي الاكسل ، وذلك للأسباب التالية: - كونه ليس النمط الـ default في البرنامج. - صعوبته مقارنة بالنمط A1. - الإرباك و المشاكل التي تحصل عند الانتقال من نمط إلى آخر ، وذلك لأن الاكسل لا يسمح باستخدام النمطين A1 وR1C1 معاً. وقد فكرت في عمل تصويت لمعرفة هذه النسبة ، وتحديد ما إذا كانت هناك ضرورة لتقديم أمثلة عن هذا النمط
  7. السلام عليكم ... التعليمة MOD تقوم بإعطاء باقي قسمة عدد على عدد آخر : فمثلاً عندما نريد قسمة العدد 113 على 100 فإن النتيجة ستكون 1 وباقي قسمة 13 وهكذا لبقية الأعداد ، وما دمت تقسم على 100 فإن آحاد وعشرات أي عدد ستكون ضمن باقي القسمة ؛ ولكن عندما نقوم بقسمة العدد 200 على 100 فإن النتيجة ستكون 2 وباقي قسمة 0 ولذلك قمت بإدراج الشرط IF. ويجب الانتباه إلى أن الصيغة تبقى صحيحة ما دامت الأعداد في العامود B موجبة
  8. السلام عليكم ... يمكنك ذلك عن طريق فرز مخصص (أظن أنك تعرف الطريقة) أو من خلال الأسلوب الموجود في المثال المرفق : STUDENT.zip
  9. السلام عليكم ... إذا كانت الأعداد في العامود B موجبة وتنتهي بالرقم 999 فقط فإن الصيغة التالية قد تفيدك في الحل : =IF(MOD(B1;100)=0;100;MOD(B1;100))
  10. السلام عليكم ... هذا شرح سريع : الكود هو التالي: Sub mah() Application.ScreenUpdating = False Worksheets("VBA").Range("A2:D65536").Clear Worksheets("VBA").Range("A2").Value = "=البيانات!A2" Worksheets("VBA").Range("B2").Value = "=البيانات!B2" Worksheets("VBA").Range("C2").Value = "=H$4*B2" Worksheets("VBA").Range("D2").Value = "=B2+C2" EndRow = Worksheets("VBA").Range("H2").Value + 1 If EndRow <= 2 Then GoTo 1 Else For NumberColumn = 1 To 4 Worksheets("VBA").Range(Cells(2, NumberColumn), Cells(EndRow, NumberColumn)).FillDown Next NumberColumn End If 1 Worksheets("VBA").Range("H2").Copy Worksheets("VBA").Range(Cells(2, 1), Cells(EndRow, 4)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Worksheets("VBA").Range("H2").Select Application.ScreenUpdating = True End Sub لنترك أول سطرين إلا مابعد ونبدأ بباقي الأسطر: Worksheets("VBA").Range("A2").Value = "=البيانات!A2" Worksheets("VBA").Range("B2").Value = "=البيانات!B2" Worksheets("VBA").Range("C2").Value = "=H$4*B2" Worksheets("VBA").Range("D2").Value = "=B2+C2" في الأسطر السابقة قمنا بإدراج الصيغ المناسبة في الخلايا EndRow = Worksheets("VBA").Range("H2").Value + 1 في السطر السابق قمنا بإسناد عدد الاسطر الظاهرة (القيمة H2+1) إلى المتغير EndRow If EndRow <= 2 Then GoTo 1 Else في الكود السابق شرط ، وهو إذا كان قيمة المتغير إقل أو تساوي 2 فننتقل للسطر 1 وإلا فنتابع الكود For NumberColumn = 1 To 4 Worksheets("VBA").Range(Cells(2, NumberColumn), Cells(EndRow, NumberColumn)).FillDown Next NumberColumn هذه حلقة تكرارية تنفذ الكود الموجود بداخلها أربع مرات ، وفي كل دورة تسند قيمة مختلفة (من1 إلى 4 بزيادة 1 في كل دورة) إلى المتغير NumberColumn و الهدف منها هو عدم تكرار الكود ، ونلاحظ أنها تنتهي بـ4 لأنه عدد الأعمدة في الجدول Worksheets("VBA").Range(Cells(2, NumberColumn), Cells(EndRow, NumberColumn)).FillDown في السطر السابق تناغم جميل بين تعليمتي Range و Cells وهو يعني أنه يتم تعبئة المجال المحدد بالإعتماد على خلية الرأس فيه (و الموجود بداخلها الصيغة) ، والمجال محصور بين خليتين : الأولى تقع في السطر الثاني و العامود NumberColumn و الثانية تقع في السطر EndRow و العامود NumberColumn Worksheets("VBA").Range("H2").Copy Worksheets("VBA").Range(Cells(2, 1), Cells(EndRow, 4)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False الكود السابق ينسخ التنسيق من الخلية H2 ويلصقه في الجدول Worksheets("VBA").Range("H2").Select وهنا نقوم بتحديد الخلية H2 في نهاية العمل و الآن لنشرح أول سطرين في الكود : Worksheets("VBA").Range("A2:D65536").Clear في السطر السابق قمنا بمسح الخلايا الموجودة تحت السطر الأول ، والهدف من ذلك هو تفادي وجود خلايا زائدة عندما نريد تضيق الجدول Application.ScreenUpdating = False Application.ScreenUpdating = True السطرين السابقين هما أكثر شيئ أستعمله في أكوادي ، و الهدف من تعليمة ScreenUpdating هو إغلاق وفتح شاشة تحديث التطبيق Application فعندما نكتب أكواداً تسبب تغيراً في المظهر الخارجي للبرنامج و عندما يكون عدد الأهداف المراد تغييرها كبيراً فإن ذلك سيسبب بطئ في الجهاز ، هذا فضلاً عن أن مظهر التغيرات قد يكون غير محبذ ، ولذلك نقوم بإغلاق تحديث الشاشة بالقيمة المنطقية False , وفتح تحديث الشاشة بعد إنتهاء العمل بالقيمة المنطقية True جرب هذه التعليمة ولاحظ النتائج المبهرة لها (في السرعة و المظهر) أرجو أن أكون قد وفقت في الشرح :pp:
  11. السلام عليكم ... يمكنك ذلك عن طريق التنسيق الشرطي بأن تجعل السطر الزائد يختفي و في هذه الحالة يجب أن يكون التوسيع في حدود الجدول القديم (وهنا عدنا لنفس المشكلة) ، ولحل هذه المشكلة تستطيع استخدام كود الـ VBA انظر المرفق : ExtendRang.zip
  12. السلام عليكم ... جرب المرفق : FontFormat.zip
  13. السلام عليكم .... فقط يجب الإشارة إلى أن هذه الميزة متوفرة فقط في إصدار 2003
  14. السلام عليكم ... بمجرد قيامك بحماية الورقة فإن خاصية إظهار الخلايا المخفية تصبح غير مفعلة
  15. السلام عليكم ... حسب خبرتي المتواضعة في الاكسل : - يمكنكم الكتابة في عدة أسطر في الخلية الواحدة بالضغط على Alt+Enter - المحاذاة لا يمكن أن تطبق إلا على الخلية بأكملها ، وخيار موزع لايستخدم الكشيدة (ـــ) كما في الورد - بالنسبة لحجم ونوع وتنسيق الخط يمكن ذلك على نصوص مختلفة في نفس الخلية ، فقط علم النص المطلوب واضغط كليك يمين عليه واختار الخيار تنسيق خلايا Format Cells
  16. السلام عليكم ... هذه طريقة يمكن أن تكون نافعة لك إذهب إلى الصفحة التي لا ترغب بطباعتها وحدد ناحية الطباعة بخلية واحدة فارغة ، وعند اختار الأمر طباعة سوف تخرج الورقة من الطابعة بيضاء بدون أن تعلق فيها أي نقطة حبر
  17. السلام عليكم ... مكنك ذلك عن طريق معالج استيراد البيانات : الخيار Import Data من القائمة Data القائمة الفرعية Import External Data فقط حدد ملف قاعدة البيانات واتبع الخطوات وستستورد البيانات الموجودة في هذه القاعدة الفائدة هي امكانية معالجة هذه البيانات بطرق احترافية عبر الاكسل و الاستفادة من قوته في معالجة البيانات و استخلاص التقارير ، وخاصة إذا عرفت أنه يمكنك تحديث هذه البيانات كلما حدث تعديل في المصدر الأصلي ( فقط انقر كليك يمين على أحد خلايا البيانات و اختار Refresh Data)
  18. السلام عليكم ... جرب هذا الموضوع
  19. السلام عليكم ... جرب الصيغة التالية : =DATE(YEAR($A$1);MONTH($A$1)+6;DAY($A$1))
  20. السلام عليكم ... أخي ممكن توضح شوي ، هل تريد الانتقال لورقة أخرى في المصنف أم تريد فتح مصنف جديد؟
  21. السلام عليكم ... آسف أخي على عدم الرد ولكنني لم أجد دالة بهذه الوظيفة !!! على كل حال يمكنك إنشاء دوال خاصة بك ، فمثلاً إذا كنا نريد إيجاد قيمة الحد N لمتوالية أساسها Basic و الحد الأول فيها OneLimit فإن هذا ممكن في الأكواد التالية : بالنسبة للمتواليات الحسابية : Function NS(N As Long, Basic As Double, OneLimit As Double) NS = OneLimit + (N - 1) * Basic End Function بالنسبة للمتواليات الهندسية: Function GS(N As Long, Basic As Double, OneLimit As Double) GS = OneLimit * Basic ^ (N - 1) End Function ويمكنك إنشاء دوال أخرى بالاعتماد على بقية قوانين المتواليات ....
  22. السلام عليكم ... الأخ أبو هادي ، جزاك الله خيراً بما أفدتنا ، الكود يعمل بشكل جيد في الاكسل . يعطيك العافية
  23. السلام عليكم ... سلمت يداك أخي محمد طاهر أكثر شيء أعجبني في البرنامج هذه الأسطر : Application.StatusBar = "Parsing / deleting ...." & _ Format(i / origraw, "0.0%") & " Please Wait......."
×
×
  • اضف...

Important Information