logo

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
ابوحنين لا تميز خلال هذه الفترة-- لا تميز خلال هذه الفترة YasserKhalil لا تميز خلال هذه الفترة اكسيل مشاريع جاهزه



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





18-07-2018 09:37 مساءً
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
السلام عليكم ورحمة الله وبركاته

إخواني وأحبابي في الله

في كثير من الأحيان عند كتابة الأكواد نحتاج لإنشاء أوراق عمل بناءً على قيم موجودة في عمود أو ما شابه .. فإذا قمت بتنفيذ الكود وعند إنشاء ورقة عمل موجودة بالفعل سيحدث معك خطأ برمجي .. لذا من الأفضل دائماً عند إنشاء ورقة عمل التأكد من وجود ورقة العمل أو عدم وجودها وسيفيدنا في ذلك دالة اسمها ISREF وهي من الدوال الموجودة بالفعل في الإكسيل ويمكن استخدامها بشكل مباشر في ورقة العمل نفسها .. حيث يبتع الدالة اسم ورقة العمل وأي خلية داخلها وليكن A1 ...
فيمكن استخدامها في ورقة العمل بهذا الشكل
CODE
=ISREF(Yasser!A1)<br />

والدالة تعطي القيمة True في حالة أن ورقة العمل موجودة .. ولكنها تظهر لك نافذة بعنوان Update Values في حالة عدم وجودها وظهور هذه النافذة في حد ذاته يعني أن قيمة نتيجة الدالة هي False

سنقوم باستخدام الدالة في محرر الأكواد بطريقة مشابهة تماماً باستخدام دالة Evaluate وهي دالة تستخدم للتعامل مع بعض المعادلات داخل محرر الأكواد .. فيمكنك تخيلها كأنها تساوي علامة يساوي في الخلية في ورقة العمل
CODE
Evaluate(".......")

نلاحظ استخدام دالة Evaluate يليها قوس ثم قوس تنصيص ثم المعادلة التي ستستخدم يليها قوس تنصيص وإغلاق القوس الأول

والمعادلة ستكتب في هذه الحالة مكان النقاط بنفس الطريقة التي تكتب في ورقة العمل ولكن بدون علامة يساوي أي بهذا الشكل
CODE
Evaluate("ISREF(Yasser!A1)")


سنقوم بإضافة قوس تنصيص مفرد قبل اسم ورقة العمل وبعدها لتجنب الخطأ في حالة وجود مسافة في اسم ورقة العمل ، لذا سيكون الشكل النهائي لكيفية استخدام الدالة هي
CODE
Evaluate("ISREF('Yasser'!A1)")


خطوات كتابة الكود
-------------------
>> الآن يمكنك استخدام دالة الشرط IF والتي تقوم باختبار شرط معين (الشرط كما في السطر السابق) يليها كلمة Then ..

>> فإذا تحقق الشرط وكانت قيمة جملة الشرط تساوي True ، فهذا يعني وجود ورقة العمل ، يمكن وضع سطر نخبر محرر الأكواد ونظهر للمستخدم رسالة بأن ورقة العمل موجودة بالفعل بهذا الشكل
CODE
MsgBox "Worksheet Yasser Already Exists", 64


>> السطر التالي سيكون كلمة واحدة وهي كلمة Else والتي تعني أن ما يليها هو ما سيتم تنفيذه في حالة عدم تحقق الشرط False

>> إذا لم تكن ورقة العمل موجودة قوم بإنشاء ورقة عمل توضع في نهاية أوراق العمل الموجودة في المصنف ونسميها بالاسم Yasser
CODE
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = "Yasser"


>> وفي نهاية المطاف لا ننسى أن جملة الشرط IF يلزمها جملة End If لنغلق جملة الشرط

>> ملحوظة : يمكن الإعلان عن متغير من النوع النصي وليكن باسم s .. ثم توضع القيمة النصية Yasser في هذا المتغير واستخدامها في الكود بدلاً من استخدام النص Yasser أكثر من مرة داخل الكود
لتوضيح تلك النقطة دعنا نأخد مثالأ لتفهم كيف تقوم بذلك
في هذا السطر على سبيل المثال
CODE
MsgBox "Worksheet Yasser Already Exists", 64

نريد استبدال القيمة النصية Yasser بمتغير ..
بكل بساطة نقوم بحذف النص Yasser بدون حذف المسافة قبل النص أو المسافة بعد النص ، ثم نضع أقواس تنصيص يليها مسافة ، ثم نضع علامة & والتي تربط النصوص ، ثم نضع مسافة يليها اسم المتغير النصي s ثم مسافة ، ثم نضع علامة & مرة أخرى ، ثم نضع علامة التنصيص مرة أخرى

** في انتظار تفاعلكم ووضعكم للكود بشكل كامل .. فالموضوعات التي تقدم في الفترة الحالية عبارة عن تدريب وتطبيق عملي .. أي أنه عليكم أن تقوموا بالتفاعل والمشاركة بشكل إيجابي
** ملحوظة أخيرة وأرجو ألا ينزعج أحد مني .. لن أقبل بالردود لمجرد الردود أي أنه لابد أن يكون الرد إيجابي ويستفيد منه الأعضاء .. لذا الرجاء الالتزام بهذه النقطة

رابط الملف المرفق من هنا

وفقني الله وإياكم لكل خير
كان معكم أخوكم في الله / ياسر خليل أبو البراء

أثارت هذه المشاركة إعجاب: hassona229،



look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  18-07-2018 10:08 مساءً   [1]
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 43
المشاركات : 853
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 1-5-1989
الدعوات : 1
قوة السمعة : 6611
الاعجاب : 2
كود اخر زيادة في اثراء الموضوع
CODE

Option Explicit
Sub add_sheet()
On Error Resume Next
If Len(Sheets("yaser").Name) = 0 Then
Sheets.Add(, ActiveSheet).Name = "yaser"
On Error GoTo 0
End If

End Sub





look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  18-07-2018 10:55 مساءً   [2]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
بارك الله فيك أخي الحبيب سليم ومشكور على الكود الجميل
ولكن لي تحفظ حيث أنك ستضطر إلى استخدام جملتي On Error Resume Next و On Error GoTo 0 .. في حين أن استخدام دالة ISREF سيكون في سطر واحد كشرط ..
عموماً مشكور على إثرائك للموضوع وكل الطرق ستفيد الجميع بالتأكيد
تقبل وافر تقديري واحترامي




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  18-07-2018 11:35 مساءً   [3]
معلومات الكاتب ▼
تاريخ الإنضمام : 27-08-2017
رقم العضوية : 227
المشاركات : 90
رصيد العضو : 0
الدولة : ليبيا
الجنس :
تاريخ الميلاد : 25-1-1964
قوة السمعة : 194
الاعجاب : 0
YasserKhalil
salim
بارك الله في علمكما وحفظكما وجعله في موازيين حسناتكما




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  19-07-2018 12:19 صباحاً   [4]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
رصيد العضو : 0
الدولة : مصر
الجنس :
تاريخ الميلاد : 1-9-1995
الدعوات : 5
قوة السمعة : 10861
الاعجاب : 6
موقعي : زيارة موقعي
الهووم وورك امستر biggrin2
CODE
Sub M_Yasser_Add_Sheet()
Dim S As String
S = Range("A1").Value
    If CStr(Evaluate("ISREF('" & S & "'!A1)")) Then
    MsgBox "This name Already Exists", 64
    Else: Worksheets.Add(, Sheets(Sheets.Count)).Name = S
    End If
End Sub




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  19-07-2018 09:04 صباحاً   [5]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 2
المشاركات : 1824
رصيد العضو : 0
الجنس :
الدعوات : 21
قوة السمعة : 20048
الاعجاب : 12
موقعي : زيارة موقعي

جزاكم الله خيرا يا غالى
موضوع رائع 3




توقيع :الصقر

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


look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  19-07-2018 03:32 مساءً   [6]
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 43
المشاركات : 853
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 1-5-1989
الدعوات : 1
قوة السمعة : 6611
الاعجاب : 2
المشاركة الأصلية كتبت بواسطة: YasserKhalil بارك الله فيك أخي الحبيب سليم ومشكور على الكود الجميل
ولكن لي تحفظ حيث أنك ستضطر إلى استخدام جملتي On Error Resume Next و On Error GoTo 0 .. في حين أن استخدام دالة ISREF سيكون في سطر واحد كشرط ..
عموماً مشكور على إثرائك للموضوع وكل الطرق ستفيد الجميع بالتأكيد
تقبل وافر تقديري واحترامي
اخي ياسر
ممكن الاستغناء عن On Error GoTo 0 (حيث ان الخطأ تعود قيمته الى الصفر بعد تنفيذ الكود) ولا تنسَ إني لم اضع جملة Else
و هكذا نتعادل في الشروط




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  19-07-2018 05:49 مساءً   [7]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
مشكور على مرورك العطر أخي حسام وإن كنت أطمع في التفاعل من جانبك بالمشاركة في إثراء الموضوع

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

أخي الحبيب سليم
طريقتك رائعة لكن طالما توجد طريقة أخرى تبتعد بها عن استخدام On Error Resume Next فلما لا تتبعها ؟ .. ومن ناحية استخدام Else موضحة فقط في الموضوع ليفهم الأعضاء كيفية التعامل مع جملة الشرط IF في حالة تحقق الشرط أو عدم تحققه ويمكن في الكود أن نستغني عنه بهذا الشكل
CODE
Sub Test()
    Dim s As String
    s = "Yasser"

    If Not Evaluate("ISREF('" & s & "'!A1)") Then Worksheets.Add(, Sheets(Sheets.Count)).Name = s
End Sub




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  19-07-2018 06:18 مساءً   [8]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
رصيد العضو : 0
الدولة : مصر
الجنس :
تاريخ الميلاد : 1-9-1995
الدعوات : 5
قوة السمعة : 10861
الاعجاب : 6
موقعي : زيارة موقعي
علم وينفذ استاذى الحبيب ياسر biggrin2




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  19-07-2018 07:25 مساءً   [9]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
مش قلنا بلاش الإيموشن دا يا سم سم .. أديني فرقت لك اسمك عشان ترتاح 121
بالمناسبة ما الفائدة من استخدام دالة CStr .. أعتقد يمكن الاستغناء عنها لأن المتغير بالفعل نصي .. أليس كذلك؟




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  19-07-2018 07:46 مساءً   [10]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
رصيد العضو : 0
الدولة : مصر
الجنس :
تاريخ الميلاد : 1-9-1995
الدعوات : 5
قوة السمعة : 10861
الاعجاب : 6
موقعي : زيارة موقعي
دا ايموشن عسل biggrin2biggrin2biggrin2
وسبب دالة CStr لانى اشرت لخلية ولم اكتب كلمة ياسر مباشرة
بمعنى انى فتحت المجال لكتابة نص او رقم بالخلية A1 63




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  20-07-2018 07:40 مساءً   [11]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
الله ينور يا سمسم .. ومشكور على التوضيح الذي يثري الموضوع ويعطي تفاصيل أكثر للسادة الأعضاء 142




look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
  23-07-2018 10:20 صباحاً   [12]
معلومات الكاتب ▼
تاريخ الإنضمام : 23-09-2017
رقم العضوية : 627
المشاركات : 259
رصيد العضو : 0
الدولة : مصر
الجنس :
تاريخ الميلاد : 14-2-1980
قوة السمعة : 2169
الاعجاب : 1
موقعي : زيارة موقعي
ما شاء الله
موضوع قيم ، جزاكم الله خيرا أستاذى القدير // ياسر خليل

يعنى نقدر نقول إن الشكل العام للدالة مع الجملة الشرطية كالتالي

CODE
Dim SHEETNAME As String

If Evaluate("ISREF('" & SHEETNAME & "'!A1)") = True Then
' here if sheets exists
Else
' here if sheet does not exist
End If




اضافة رد جديد اضافة موضوع جديد
الصفحة 2 من 2 < 1 2 >




المواضيع المتشابهه
عنوان الموضوع الكاتب الردود الزوار آخر رد
تنبيه بوجود تحديث للبرنامج chardoneret
1 300 chardoneret
نقل القيمه الموجوده فى خليه بمجرد تحديدها seao
1 509 seao
Fichier pdf غير موجودة على import data ayoub2007
1 643 ayoub2007
جمع القيم فى وجود تاريخ mishoshow
1 624 mishoshow
تعديل على كود التسجيل لكي لا يتم ادراج ابتدائي في حاله عدم وجوده. تعديل على كود طباعه لاستثناء اور ابو طيبه
2 774 محمود ابو الدهب

الكلمات الدلالية
التأكد ، وجود ، ورقة ، باستخدام ، ISREF ، Evaluate ،









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

الساعة الآن 02:41 AM