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



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





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

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



18-07-2018 09:37 مساء
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 4000
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 11
يتابعهم : 0
يتابعونه : 296
قوة السمعة : 11346
الاعجاب : 4034
 offline 

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

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

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

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

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

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

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


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


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

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


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

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


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

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

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

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

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

أثارت هذه المشاركة إعجاب: salim، Eslam Abdullah، Yasser Elaraby، الصقر، abdulwahed catran، محمود الشريف،





18-07-2018 10:08 مساء
مشاهدة مشاركة منفردة [1]
salim
menu_open
خبير معتمد
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 43
المشاركات : 97
الجنس : ذكر
تاريخ الميلاد : 1-5-1989
يتابعهم : 13
يتابعونه : 4
قوة السمعة : 1037
الاعجاب : 155
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
كود اخر زيادة في اثراء الموضوع

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

 

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




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

أثارت هذه المشاركة إعجاب: Eslam Abdullah، الصقر،




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

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




19-07-2018 12:19 صباحا
مشاهدة مشاركة منفردة [4]
Eslam Abdullah
menu_open
خبير معتمد
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 923
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 2
يتابعهم : 3
يتابعونه : 48
قوة السمعة : 5336
الاعجاب : 1517
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
الهووم وورك امستر biggrin2
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

 

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




19-07-2018 09:04 صباحا
مشاهدة مشاركة منفردة [5]
الصقر
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 2
المشاركات : 1329
الجنس : ذكر
الدعوات : 11
يتابعهم : 0
يتابعونه : 330
قوة السمعة : 9824
الاعجاب : 2444
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate

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


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




19-07-2018 03:32 مساء
مشاهدة مشاركة منفردة [6]
salim
menu_open
خبير معتمد
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 43
المشاركات : 97
الجنس : ذكر
تاريخ الميلاد : 1-5-1989
يتابعهم : 13
يتابعونه : 4
قوة السمعة : 1037
الاعجاب : 155
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
المشاركة الأصلية كتبت بواسطة: YasserKhalil »
بارك الله فيك أخي الحبيب سليم ومشكور على الكود الجميل
ولكن لي تحفظ حيث أنك ستضطر إلى استخدام جملتي On Error Resume Next و On Error GoTo 0 .. في حين أن استخدام دالة ISREF سيكون في سطر واحد كشرط ..
عموماً مشكور على إثرائك للموضوع وكل الطرق ستفيد الجميع بالتأكيد
تقبل وافر تقديري واحترامي

اخي ياسر 
ممكن الاستغناء عن On Error GoTo 0  (حيث ان الخطأ تعود قيمته الى الصفر بعد تنفيذ الكود) ولا تنسَ  إني لم اضع جملة  Else
و هكذا نتعادل في الشروط





19-07-2018 05:49 مساء
مشاهدة مشاركة منفردة [7]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 4000
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 11
يتابعهم : 0
يتابعونه : 296
قوة السمعة : 11346
الاعجاب : 4034
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
مشكور على مرورك العطر أخي حسام وإن كنت أطمع في التفاعل من جانبك بالمشاركة في إثراء الموضوع

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

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

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

أثارت هذه المشاركة إعجاب: Eslam Abdullah، salim، الصقر، غاندي مخول،




19-07-2018 06:18 مساء
مشاهدة مشاركة منفردة [8]
Eslam Abdullah
menu_open
خبير معتمد
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 923
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 2
يتابعهم : 3
يتابعونه : 48
قوة السمعة : 5336
الاعجاب : 1517
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
علم وينفذ استاذى الحبيب ياسر biggrin2

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




19-07-2018 07:25 مساء
مشاهدة مشاركة منفردة [9]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 4000
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 11
يتابعهم : 0
يتابعونه : 296
قوة السمعة : 11346
الاعجاب : 4034
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
مش قلنا بلاش الإيموشن دا يا سم سم .. أديني فرقت لك اسمك عشان ترتاح 121
بالمناسبة ما الفائدة من استخدام دالة CStr .. أعتقد يمكن الاستغناء عنها لأن المتغير بالفعل نصي .. أليس كذلك؟

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




19-07-2018 07:46 مساء
مشاهدة مشاركة منفردة [10]
Eslam Abdullah
menu_open
خبير معتمد
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 923
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 2
يتابعهم : 3
يتابعونه : 48
قوة السمعة : 5336
الاعجاب : 1517
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
دا ايموشن عسل biggrin2biggrin2biggrin2
وسبب دالة CStr لانى اشرت لخلية ولم اكتب كلمة ياسر مباشرة
بمعنى انى فتحت المجال لكتابة نص او رقم بالخلية A1 63

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




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

أثارت هذه المشاركة إعجاب: Eslam Abdullah، الصقر،




23-07-2018 10:20 صباحا
مشاهدة مشاركة منفردة [12]
محمود الشريف
menu_open
خبير
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 23-09-2017
رقم العضوية : 627
المشاركات : 245
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 14-2-1980
يتابعهم : 4
يتابعونه : 15
قوة السمعة : 1583
الاعجاب : 412
 offline 
look/images/icons/i1.gif التأكد من وجود ورقة عمل باستخدام ISREF و Evaluate
ما شاء الله 
موضوع قيم ، جزاكم الله خيرا أستاذى القدير // ياسر خليل

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

Dim SHEETNAME As String

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

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





المواضيع المتشابهه
عنوان الموضوع الكاتب الردود الزوار آخر رد
محتاج التعديل على كود الموجود على ملف malik
6 147 malik
تحويل المعادلات لأكواد مع وجود صفوف مدمجه نصر الإيمان
8 154 YasserKhalil
كيفية البحث في الشيتات الكوجوده داخل ملف الاكسل بدلالة عدة شروط مع كتابة اسم الشيت في خانة العميل alhady
0 161 alhady
كيفية عمل يوزر فورم بحث بالاسم واذا ولم يكن الاسم موجود يعطى عمل ما ibrahem ali
9 251 ibrahem ali
مشكلة عند وجود عدة تبويبات Page فى اليوزرفورم أباالحسن
2 118 YasserKhalil

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


 







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



الساعة الآن 11:35 مساء

أعلن هنا
أعلن هنا
أعلن هنا