بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
محمد حجازي
المشرفين السابقين-
Posts
771 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
2
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو محمد حجازي
-
السلام عليكم ... مثال يمكنكم الاستئناس به: http://www.officena.net/ib/index.php?showtopic=5496 بالتوفيق
-
السلام عليكم ... يمكنك عمل ذلك ببساطة بواسطة الصيغ !!! جرب الصيغ و إذا كنت مصمماً على كود الفيجوال فأخبرني لأريك الإضافات التي يجب عليك عملها.
-
السلام عليكم ... المسألة بسيطة جداً... تضغط Alt+F11 وتفتح الفورم الذي أنشأته. كليك يمين على الزر المطلوب و تختار Vew Code لتفتح لك صفحة الكود . تستطيع اختيار الزر المطلوب من القائمة المنسدلة اليسرى و الحدث المرتبط بهذا الزر من القائمة المنسدلة اليمنى. الآن يمكنك وضع الكود التالي للانتقال إلى ورقة (منتدى الاكسل) الموجودة في نفس مصنف العمل. Worksheets("منتدى الاكسل").Activate End ويمكنك إضافة الكود التالي للانتقال إلى ورقة (منتدى الفيجوال) الموجودة ضمن المصنف (arabteam2000-forum) الموجود في نفس مسار المصنف الرئيسي (المصنف officena الذي يحتوي على الكود). Dim MyPath As String MyPath = Workbooks("officena").Path & "\arabteam2000-forum" Set MyBook = Workbooks.Open(Filename:=MyPath) MyBook.Worksheets("منتدى الفيجوال").Activate End مرفق مثال مبسط و الكود موجود بداخل مصنف officena. أرجو أن أكون قد وفقت في إيصال المعلومة jaffjaff.zip
-
تغير قيمة خلية عند الوقوف بالماوس على خلية اخرى
محمد حجازي replied to lord's topic in منتدى الاكسيل Excel
السلام عليكم ... جرب الكود التالي: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$B$21" Or Target.Address = "$B$51" Or Target.Address = "$B$101" Then Me.Range("$B$9").Value = Me.Cells(Target.Row - 1, Target.Column) End If End Sub ألصق الكود السابق في الأوراق التي ترغب بتطبيق الإجراء عليها. ______.zip -
السلام عليكم ... راجع الروابط التالية: http://www.officena.net/ib/index.php?showtopic=4215 http://www.officena.net/ib/index.php?showtopic=3843 http://www.officena.net/ib/index.php?showtopic=5225 من ناحيتي ، لا يوجد لدي فكرة ، ولكن يمكنك تصميم فورم (يشبه إلى حد كبير نماذج الاكسس) واستخدامه لهذه الغاية. بالتوفيق
-
السلام عليكم ... يمكنك حل مشكلتك بواسطة صيغ الصفيف: الصيغة التالية تقوم بجمع الأرقام الزوجية الموجودة في المجال A1:A10 (لا تنسى الضغط على Ctrl+Shift+Enter عند إدراج الصيغة) : =SUM(IF(MOD(A1:A10;2)=0;A1:A10;"")) بصورة بسيطة فإن الصيغة السابقة تقوم باختبار قيمة كل خلية موجود في المجال A1:A10 على حدى ، وتجمع القيم الموجودة في الخلايا التي تحتوي على أعداد زوجية (القيم التي يكون باقي قسمتها على 2 مساوياً للصفر). الصيغة السابقة جيدة في حال كون قيم الخلايا كلها أعداد صحيحة ، ولكن ماذا لو حوت الخلايا على أرقام عشرية؟ ، هنا يبقى الخيار لك في الاعتماد على العدد الصحيح دون تقريب (من خلال الدالة TRUNC) أو تقريب الأعداد قبل اختبارها زوجية/فردية (باستخدام الدالة ROUND أو الدالة INT) ، لاحظ صيغ الصفيف التالية: =SUM(IF(MOD(TRUNC(A1:A10;0);2)=0;A1:A10;"")) =SUM(IF(MOD(ROUND(A1:A10;0);2)=0;A1:A10;"")) =SUM(IF(MOD(INT(A1:A10);2)=0;A1:A10;"")) .....لا تنسى دائماً الضغط على Ctrl+Shift+Enter عند إدراج الصيغة..... و بالنسبة للعدد فهذه هي صيغ الصفيف: في حال كون الأرقام كلها صحيحة: =COUNT(IF(IF(A1:A10<>"";MOD(A1:A10;2);"")=0;1;"")) في حال وجود أرقام عشرية: =COUNT(IF(IF(A1:A10<>"";MOD(TRUNC(A1:A10;0);2);"")=0;1;"")) =COUNT(IF(IF(A1:A10<>"";MOD(ROUND(A1:A10;0);2);"")=0;1;"")) =COUNT(IF(IF(A1:A10<>"";MOD(INT(A1:A10);2);"")=0;1;"")) مرفق ملف يوضح الحالات السابقة كلها. بالتوفيق SUM_COUNT_ISEVEN.zip
-
تغير قيمة خلية عند الوقوف بالماوس على خلية اخرى
محمد حجازي replied to lord's topic in منتدى الاكسيل Excel
السلام عليكم ... اعذرني يا أخي ، ام أفهم المقصود بصورة واضحة! إذا كان قصدك أنه عند تحديد/تعديل أحد الخلايا التالية B20 ، B50 ، B100 فإنه يتم إدراج قيمة الخلية التي تسبق الخلية المحددة/المعدلة ضمن الخلية B9 ، إذا كان ذلك قصدك فجرب الكود التالي: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$B$20" Or Target.Address = "$B$50" Or Target.Address = "$B$100" Then Me.Range("$B$9").Value = Me.Cells(Target.Row - 1, Target.Column) End If End Sub -
السلام عليكم ... شكراً لك أولاً على هذه القوالب. هناك دروس للأخ المتميز bodalal عن هذا البرنامج تجدها في الروابط التالية: http://www.officena.net/ib/index.php?showtopic=5342 http://www.officena.net/ib/index.php?showtopic=5392 بالتوفيق
-
السلام عليكم ... ابحث في المنتدى عن كلمة ( تفقيط ) وستجد طلبك إن شاء الله. بالتوفيق
-
السلام عليكم ... إذا كان قصد الأخ badar كما قال الأخ أبو هادي فالمشكلة بسيطة وتكمن باستخدام الدالة ROUND أو الدالة TRUNC ، ولهاتين الدالتين نفس الشكل العام : =TRUNC(number,num_digits) حيث : number يشير إلى الرقم أو مرجع الخلية التي تحتوي على الرقم num_digits يشير إلى عدد المراتب العشرية ، وفي مثالك ضع 1 أو 2 أو 3 ولكن الفرق بين الدالتين هو أن الدالة TRUNC تحول العدد بدون تدوير أما الدالة ROUND فتحول العدد مع تدويره فمثلاً إن ناتج الدالة : =ROUND(56474.546;2) هو العدد 56474.55 أما ناتج الدالة : =TRUNC(56474.546;2) فهو العدد 56474.54
-
السلام عليكم ... شكراً جزيلاً على البرامج ، وجاري التحميل و المعاينة
-
السلام عليكم ... يبدو أن مشكلتك تحتاج لكود VBA ، ولكن إذا كنت من هواة الأساليب التقليدية فإليك هذه الطريقة: 1. قم بعمل تصفية تلقائية لجدول البيانات. 2. قم بتصفية البيانات بالاعتماد على عامود التاريخ (تصفية مخصصة لكافة البيانات الموجودة داخل هذه التاريخين). بالتوفيق
-
تغير قيمة خلية عند الوقوف بالماوس على خلية اخرى
محمد حجازي replied to lord's topic in منتدى الاكسيل Excel
السلام عليكم ... هذا اقتباس من المشاركة السابقة لنرى كيف يمكننا استخدامه في كودنا الجديد: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 And Target.Row >= 2 And Target.Row <= 20 Then Target.Value = Me.Cells(Target.Row - 1, Target.Column) End If End Sub تأكد من أنك أضفت العبارة End If في نهاية الكود. بالتوفيق -
الترحيل عن طريق زر الخيار الموجود في ادوات التحكم
محمد حجازي replied to skyblue's topic in منتدى الاكسيل Excel
السلام عليكم ... الكود هو التالي: Sub MyTarhel() On Error GoTo NoName Dim EndRow As Long Dim Range1 As String Dim Range2 As String EndRow = Sheets("Sheet2").Range("B5").CurrentRegion.Rows.Count + 5 Range1 = "B" & Sheets("Sheet1").Range("A6:A5000").Find(Sheets("Sheet1").Range("A2").Value).Row & ":W" & Sheets("Sheet1").Range("A6:A5000").Find(Sheets("Sheet1").Range("A2").Value).Row Range2 = "B" & EndRow & ":W" & EndRow Worksheets("Sheet2").Range(Range2).Value = Worksheets("Sheet1").Range(Range1).Value Sheets("Sheet1").Range("A2").ClearContents Exit Sub NoName: If Err = 91 Then MsgBox "الحساب المدخل غير موجود" End If End Sub ولنبدأ بشرح الكود خطوة خطوة: On Error GoTo NoName بإضافة هذا السطر فإن الكود ينتقل لتنفيذ الإجراء الموجود تحت النقطة NoName عند حدوث أي خطأ أثناء تنفيذ الكود. Dim EndRow As Long Dim Range1 As String Dim Range2 As String هنا قمنا بتعريف المتغير EndRow على أنه عدد صحيح طويل ، و المتغيران Range1 و Range2 على أنهما متغيران نصيان. EndRow = Sheets("Sheet2").Range("B5").CurrentRegion.Rows.Count + 5 هنا قمنا بإسناد رقم الصف الذي يأتي مباشرةً بعد آخر صف من نطاق البيانات الموجودة في الورقة Sheet2 في المتغير EndRow طبعاً ، و الهدف من هذا السطر هو القدرة على نقل البيانات إلى الورقة الثانية دون أن تتأثر البيانات القديمة أو يتم التسجيل فوقها. Range1 = "B" & Sheets("Sheet1").Range("A6:A5000").Find(Sheets("Sheet1").Range("A2").Value).Row & ":W" & Sheets("Sheet1").Range("A6:A5000").Find(Sheets("Sheet1").Range("A2").Value).Row هنا استخدمنا الأسلوب Find للبحث داخل المجال A6:A5000 الموجود في الورقة Sheet1 وذلك عن القيمة الموجودة داخل الخلية A2 الموجودة في الورقة Sheet1 وإرجاع رقم صف أول خلية يتم العثور عليها ، ودمج هذا الرقم برموز الأعمدة لتشكيل مرجع واسناده في المتغير Range1. Range2 = "B" & EndRow & ":W" & EndRow هنا قمنا بدمج رقم الصف الموجود داخل المتغير EndRow مع رموز الأعمدة لتشكيل مرجع واسناده في المتغير Range2. Worksheets("Sheet2").Range(Range2).Value = Worksheets("Sheet1").Range(Range1).Value هنا قمنا بعملية المناقلة المطلوبة (و التي تمثل الهدف الرئيسي للكود). Sheets("Sheet1").Range("A2").ClearContents هنا قمنا بمسح محتويات الخلية A2 الموجودة في الورقة Sheet1 (وذلك بعد القيام بعملية المناقلة السابقة). Exit Sub هنا تمت عملية إنهاء الكود. NoName: If Err = 91 Then MsgBox "الحساب المدخل غير موجود" End If كما ذكرنا سابقاً فإنه عند حدوث خطأ أثناء تشغيل الكود فإن دفة التنفيذ تنتقل مباشرة لتنفيذ الأسطر الموجودة تحت النقطة السابقة NoName. و الهدف من هذه العملية هو أن الأسلوب Find يرجع الخطأ البرمجي 91 عندما لا يكون هنالك أي نتيجة للبحث ، وهنا وبإضافة السطر التالي في أول الكود : On Error GoTo NoName فإننا استطعنا اصطياد هذا الخطأ ومعالجته قبل أن يؤثر على سير عمل الكود. أرجو أن يكون شرحي وافياً ...... بالتوفيق -
السلام عليكم ... إذا كان قصدك رسم مخطط جانيت أو مخطط زمني للأنشطة بصورة أدق ، فتابع الرابط التالي ولاحظ التنسيق الشرطي للخلايا. ويجب التذكير بأنه يمكنك القيام بهذه العملية بشكل أكثر احترافية إذا ما قمت باستخدام برنامجي البروجكت و الفيزيو الموجودين ضمن حزمة الأوفيس. Gantt_Chart.zip
-
الترحيل عن طريق زر الخيار الموجود في ادوات التحكم
محمد حجازي replied to skyblue's topic in منتدى الاكسيل Excel
السلام عليكم ... جرب الكود التالي: Sub MyTarhel() On Error GoTo NoName Dim EndRow As Long Dim Range1 As String Dim Range2 As String EndRow = Sheets("Sheet2").Range("B5").CurrentRegion.Rows.Count + 5 Range1 = "B" & Sheets("Sheet1").Range("A6:A5000").Find(Sheets("Sheet1").Range("A2").Value).Row & ":W" & Sheets("Sheet1").Range("A6:A5000").Find(Sheets("Sheet1").Range("A2").Value).Row Range2 = "B" & EndRow & ":W" & EndRow Worksheets("Sheet2").Range(Range2).Value = Worksheets("Sheet1").Range(Range1).Value Sheets("Sheet1").Range("A2").ClearContents Exit Sub NoName: If Err = 91 Then MsgBox "الحساب المدخل غير موجود" End If End Sub مرفق ملفك معدل: Book114.zip -
تغير قيمة خلية عند الوقوف بالماوس على خلية اخرى
محمد حجازي replied to lord's topic in منتدى الاكسيل Excel
السلام عليكم ... جرب الكود التالي: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Target.Value = Me.Cells(Target.Row - 1, Target.Column) End Sub و انتبه إلى تحديد مجال عمل الكود عن طريق التعليمة IF المشروحة في الرابط التالي: http://www.officena.net/ib/index.php?showt...t=0entry32590 بالتوفيق -
السلام عليكم ... الرجاء التوضيح وماذا تقصد بـ desimal
-
تغير قيمة خلية عند الوقوف بالماوس على خلية اخرى
محمد حجازي replied to lord's topic in منتدى الاكسيل Excel
السلام عليكم ... على ما يبدو أنك تقوم بتصميم لعبة بواسطة الاكسل :d يمكنك عمل ذلك عن طريق الاستعانة بالحدث SelectionChange ، وهذا الحدث يتفجر عند تحديد خلية معينة أو تغيير محتوياتها. فقط ألصق الكود التالي في الورقة المطلوب تنفيذ الكود فيها: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$B$20" Or Target.Address = "$B$50" Or Target.Address = "$B$100" Then Me.Range("$B$9").Value = Target.Value End If End Sub -
الترحيل عن طريق زر الخيار الموجود في ادوات التحكم
محمد حجازي replied to skyblue's topic in منتدى الاكسيل Excel
السلام عليكم ... يا أخي ، لماذا الترقب و الانتظار . أظن أنك لو قرأت المواضيع الموجودة في الوصلات السابقة و الشرح الموجود فيها بتمعن لكنت وصلت للحل بدون انتظار أحد. على أية حال ، سأعطيك الطريقة وعليك تنفيذها لوحدك في الملف الموجود عندك ، لاحظ الكود التالي: Sub Tarhel7() Dim EndRow As Long Dim Range1 As String Dim Range2 As String EndRow = Sheets("Sheet2").Range("B5").CurrentRegion.Rows.Count + 5 Range1 = "B" & 7 & ":W" & 7 Range2 = "B" & EndRow & ":W" & EndRow Worksheets("Sheet2").Range(Range2).Value = Worksheets("Sheet1").Range(Range1).Value End Sub الكود السابق يقوم بنقل الحساب الموجود في الصف السابع من الورقة الأولى Sheet1 إلى الورقة الثانية Sheet2 ، وبالتالي فيمكنك ربط الكود السابق بالزر المخصص لنقل بيانات الصف السابع (لفهم الكود السابق راجع الشرح الموجود في الروابط أعلاه). الآن يجب تكرير الكود السابق لكل زر (وذلك مع تغيير رقم السطر الموجود ضمن المتغيير Range1) ، ولكن هذه الطريقة معقدة بعض الشيئ! الحل يكمن في إنشاء إجراء رئيسي MyTarhel و استخدامه في تكوين طرق متعددة Tarhel8 ، Tarhel9 ، Tarhel10 ،الخ (لكل زر أمر) ، وذلك كما في الكود التالي: Sub MyTarhel(MyRow As Integer) Dim EndRow As Long Dim Range1 As String Dim Range2 As String EndRow = Sheets("Sheet2").Range("B5").CurrentRegion.Rows.Count + 5 Range1 = "B" & MyRow & ":W" & MyRow Range2 = "B" & EndRow & ":W" & EndRow Worksheets("Sheet2").Range(Range2).Value = Worksheets("Sheet1").Range(Range1).Value End Sub Sub Tarhel8() Call MyTarhel(8) End Sub Sub Tarhel9() Call MyTarhel(9) End Sub Sub Tarhel10() Call MyTarhel(10) End Sub -
الترحيل عن طريق زر الخيار الموجود في ادوات التحكم
محمد حجازي replied to skyblue's topic in منتدى الاكسيل Excel
السلام عليكم ... راجع الروابط التالية: http://www.officena.net/ib/index.php?showtopic=5093 http://www.officena.net/ib/index.php?showtopic=5455 http://www.officena.net/ib/index.php?showtopic=5234 بالتوفيق -
كيف يمكنك جعل كود الـ VBA أكثر كفاءة
محمد حجازي replied to محمد حجازي's topic in منتدى الاكسيل Excel
4. التعامل مع الأهداف بصورة مجمعة كلما أمكن ذلك : قد نطّر في كثير من الأحيان إلى استخدام نفس الأسلوب أو الخاصية بصورة متماثلة تماماً مع أكثر من هدف ، وفي هذه الحالات فإنه يفضل القيام بالعملية المطلوبة مرة واحدة فقط وذلك عن طريق التعامل مع الأهداف بصورة مجمعة بدلاً من التعامل معها بصورة منفردة واحدة تلو الأخرى. للأسلوب السابق مزايا عديدة ، من بينها: - الاستغناء عن التكرار الغير مبرر في الكود وما ينتج عنه من توفير في حجم الكود وسهولة في العمل نتيجة عدم الحاجة لتكرير نفس العبارات أكثر من مرة في الكود الواحد. - اكتساب الكود مزيداً من السرعة وذلك لأن الكود يقوم باستدعاء الأهداف كلها (مع الأساليب و الخصائص المرتبطة بها) مرة واحدة فقط وبصورة مجتمعة بدلاً من استدعاء كل هدف بصورة منفردة. و الآن سوف نناقش سوياً في الأسطر القادمة الطرق التي نستطيع من خلالها تطبيق هذه الطريقة على نوعين من الأهداف: أولاً : التعامل مع الهدف Range: الطرق المستخدمة في التعامل مع الهدف Range تتماثل إلى حد كبير في كل من صيغ الاكسل و أكواد الفيجوال ، لا حظ الكود التالي: Sub ClearMyCells() Worksheets("Sheet1").Range("A1:A5").ClearContents Worksheets("Sheet1").Range("C4").ClearContents Worksheets("Sheet1").Range("E22:E30").ClearContents End Sub الكود السابق يقوم بحذف محتويات الخلايا الموجودة في كل من المجالات A1:A5 وC4 و E22:E30. نلاحظ من الكود السابق كيف أننا قمنا باستدعاء الأهداف الثلاثة كل واحد بمفرده هذا فضلاً عن استدعاء الأسلوب ClearContents ثلاث مرات أيضاً !!! ، وفي هذه الحالة فإنني أعتقد أنك ستكون موالياً تماماً للكود التالي (المخصور :d ): Sub ClearMyCells() Worksheets("Sheet1").Range("A1:A5,C4,E22:E30").ClearContents End Sub الطريقة السابقة لا تقتصر فقط على تعليمة Range وإنما يمكن استخدامها أيضاً مع تعليمة Cells أيضاً ، لا حظ الكود التالي : Sub ClearMyCells() NumberRow = Application.InputBox(prompt:="أدخل رقم الصف", Title:="رقم الصف", Type:=1) Sheets("Sheet1").Cells(NumberRow, 1).ClearContents Sheets("Sheet1").Cells(NumberRow, 2).ClearContents Sheets("Sheet1").Cells(NumberRow, 3).ClearContents End Sub الكود السابق يقوم بمسح محتويات الخلايا الموجودة في الأعمدة A و B و C و الصف المدخل من قبل المستخدم. يمكننا دمج الأهداف الثلاثة السابقة عن طريق التناغم الذي يوفره لنا الاكسل بين التعليمتين Range و Cells ، لاحظ الكود: Sub ClearMyCells() NumberRow = Application.InputBox(prompt:="أدخل رقم الصف", Title:="رقم الصف", Type:=1) Sheets("Sheet1").Range(Cells(NumberRow, 1), Cells(NumberRow, 3)).ClearContents End Sub هناك أيضاً التعليمة Union التي يمكنها ربط مجموعة من النطاقات بهدف Range واحد ، وميزة هذه التعليمة في أنها توفر لك ربط الأهداف وقت الحاجة إليها فقط ، وبهذا فإنه يمكنك التعامل مع الأهداف بصورة مستقلة عندما تشاء و التعامل معها بصورة مجتمعة عندما تشاء أيضاً. لاحظ الكود التالي: Sub ClearMyCells() Set MyRange1 = Sheets("Sheet1").Range("A1:A5") Set MyRange2 = Sheets("Sheet1").Range("C1:C5") Union(MyRange1, MyRange2).ClearContents MyRange1.Font.Bold = True End Sub الكود السابق يقوم بمسح محتويات الخلايا الموجودة في المجالين A1:A5 و C1:C5 ومن ثم يقوم بتثقيل الخط في خلايا المجال A1:A5 فقط . ثانيا : التعامل مع الهدف Sheet : يمكننا دمج عدة أهداف من النوع Sheet باستخدام التعليمة Array . التعليمة Array تحول عدة بيانات مدخلة كنصوص تفصلها فاصلة إلى مصفوفة يكون ترتيب أول عنصر فيها هو صفر ، ولكن كيف يمكننا استخدام هذه التعليمة لدمج عدة أهداف من النوع Sheet؟ لاحظ أولاً الكود التالي: Sub DeleteSheets() Sheets("Sheet2").Delete Sheets("Sheet3").Delete Sheets("Sheet4").Delete End Sub الكود السابق يقوم بحذف الأوراق Sheet2 ، Sheet3 ، Sheet4 الواحدة تلو الأخرى. - الآن يمكننا استخدام التعليمة Array لإنشاء المصفوفة (في سطر منفصل) ، ومن ثم يتم استخدام المصفوفة المنشئة داخل التعليمة Sheets ، لاحظ الكود التالي: Sub DeleteSheets() MySheets = Array("Sheet2", "Sheet3", "Sheet4") Sheets(MySheets).Delete End Sub - أو يمكننا استخدام التعليمة Array بشكل مباشر داخل التعليمة Sheets ، لاحظ الكود التالي: Sub DeleteSheets() Sheets(Array("Sheet2", "Sheet3", "Sheet4")).Delete End Sub وهنا يجب التنويه أيضاً إلى أنه يمكننا استخدام التعليمة Array للإشارة إلى الأوراق باستخدام أسمائها (كما لاحظنا في الكود السابق) أو باستخدام ترتيبها ضمن مصنف العمل ، كما في الكود التالي: Sub DeleteSheets() Sheets(Array(2, 3, 4)).Delete End Sub الشيء المميز في هذه الخاصية هو أنه يمكننا استخدامها مع أي مصفوفة نقوم بإنشائها وبغض النظر عن طريقة إنشاءها (المهم أنها تحتوي بداخلها على مراجع الأوراق المطلوب تنفيذ الكود عليها) ، وهنا يمكننا الاستفادة بشكل كبير من خواص هذه المصفوفات أثناء كتابة الأكواد ويمكننا تطويع هذه المصفوفات في عملنا وذلك للقيام بمهام محددة وخاصة جداً ، لاحظ الكود التالي : Sub DeleteSheets() On Error GoTo OutOfRange Dim ReadyToDel() As String For Each MySheet In ActiveWorkbook.Worksheets If Not MySheet.Name = "Muhammad" And Not MySheet.Name = "Ahmad" Then ReDim Preserve ReadyToDel(UBound(ReadyToDel) + 1) ReadyToDel(UBound(ReadyToDel)) = MySheet.Name End If Next MySheet If UBound(ReadyToDel) > 0 Then Sheets(ReadyToDel).Delete Exit Sub OutOfRange: If Err = 9 Then ReDim ReadyToDel(0) Resume Next Else MsgBox Err.Description End If End Sub الكود السابق يقوم بالبحث ضمن أوراق العمل الموجودة في المصنف النشط ويقوم بحذف جميع الأوراق الموجودة ما عدا الورقتين Muhammad و Ahmad ، وهو (الكود) يعتمد على مصفوفة ديناميكية من أجل تخزين مراجع الأوراق المطلوب حذفها. أتمنى أن يكون شرحي واضحاً و وافياً -
السلام عليكم ... بالنسبة لعدد المباريات التي لعبت فإنها الطريقة التي خطرت على بالي حينها ، ومن الممكن وجود صيغة أسهل . على أية حال فهذه الصيغة تستخدم المعامل AND وهذا المعامل يشترط حتى تكون قيمته TRUE أن تكون جميع الشروط التي بداخله محققة ، فمثلاً انظر للصيغة التالية: =IF(AND(COUNT(G11:G12)>0;G11<>"";G12<>"");1;0) الصيغة السابقة تعطي الرقم 1 فقط عندما يكون عدد الأرقام الموجود ضمن المجال G11:G12 أكبر من الصفر و كون الخلية G11 ليست فارغة و الخلية G12 ليست فارغة أيضاً. بالتوفيق
-
السلام عليكم ... كلمة السر الأساسية هي 123. كلمة السر لتحرير النطاقات للمستخدمين (النطاق : نطاق المستخدمين العاديين) هي mmm. العامود المخفي هو العامود D. بالتوفيق Protection.zip
-
السلام عليكم ... هذا تعديل سريع على ملفك (لفرنسا فقط) ، وبالنسبة للفرق الأخرى اتبع نفس الطريقة. football.zip