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

نجوم المشاركات

  1. ياسر خليل أبو البراء

    ياسر خليل أبو البراء

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


    • نقاط

      5

    • Posts

      13165


  2. ibn_egypt

    ibn_egypt

    الخبراء


    • نقاط

      2

    • Posts

      764


  3. abouelhassan

    abouelhassan

    05 عضو ذهبي


    • نقاط

      2

    • Posts

      2916


  4. rudwan

    rudwan

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


    • نقاط

      2

    • Posts

      2926


Popular Content

Showing content with the highest reputation on 12/14/14 in all areas

  1. أخي الحبيب وليد جرب الملف التالي ستظهر لك رسالة إذا ضغطت نعم قمت بحماية الورقة ، وإذا ضغطت لا قمت بإلغاء الحماية Protect Sheet.rar
    2 points
  2. الحلقة الحادية عشرة ***************** السلام عليكم ورحمة الله وبركاته إخواني الكرام في الصرح العملاق أوفيسنا ، أقدم لكم اليوم موضوع في غاية الأهمية ، ألا وهو التعامل مع السلاسل النصية Strings والدوال الخاصة بالتعامل مع النصوص. اتعرفنا في حلقات سابقة على المتغير String ، ودا بنستخدمه لتخزين النصوص .. أول شيء بنعلن عن اسم المتغير ونحدد نوعه كـ String بالشكل ده : Dim strEmail As String وقلنا إن الأفضل دايماً لما نسمي متغير يكون معبر ، ففي السطر اللي فات أنا نويت والنية لله إني أخزن نص ، والنص ده عبارة عن إيميل ، فسميت المتغير strEmail أول 3 حروف من كلمة String وبعدين كلمة معبرة عن النص Email ، وحددت نوعه إنه نص String. طيب تاني سطر ببدأ أضع قيمة للمتغير اللي أعلنت عنه ، ودا بيكون بطريقة معينة ، إننا نحط اسم المتغير على اليسار ، وبأكد على اليسار وبعديه علامة يساوي ، وبعد علامة يساوي أفتح أقواس تنصيص وأكتب النص اللي عايز أخزنه وأقفل أقواس التنصيص (كل اللي بقوله يا حماده كلام قديم مفيش جديد ..دا في الإنجليزي بيسموه Warm-Up يعني تهيئة للحلقة) strEmail = "yakh777@yahoo.com" طيب هل دايماً لازم نحط نص في قيمة المتغير النصي ولا فيه طريقة تانية ؟ فيه طريقة تانية ..إن يكون النص في خلية معينة وليكن A1 ، ولما نيجي نضع قيمة للمتغير نشير لقيمة الخلية A1 زي كدا : strEmail = Range("A1").Value حط الايميل في الخلية A1 ، وجرب بنفسك .. جرب مرة تكتب النص ، وعن طريق الدالة Msgbox شوف النتيجة ، ومرة تانية جرب السطر الأخير وشوف النتيجة (النتيجة واحدة .. كل السبل تؤدي إلى حلقات افتح الباب) ... خلصنا المراجعة يا مدحت .. نشوف ايه اللي هنقدمه في حلقة النهاردة .. أنا صراحة مش مرتب في أفكاري .. ممكن تقول إني عشوائي جداً ، بس الحمد لله ، بتوفيق الله عزوجل بيخرج الموضوع منظم ومتسألش إزاي ..! أنا همسك دالة دالة من دوال التعامل مع النصوص وهشرحها بالتفصيل ، والله المستعان *-------------------------------------------------* الدالة Len (دالة بسيطة وسهلة وكلنا عارفينها ، وبنستخدمها في ورقة العمل : طبعاً إنتو لما بتقروا الحلقات بيكون فيه ملف إكسيل مفتوح (مش كدا ولا مطنشين) ، عشان نطبق أول بأول .. في الخلية A1 إحنا كتبنا نص ، عايزين نعرف طول النص ده ، فبنستخدم الدالة Len ، مثلاً في الخلية B1 اكتب المعادلة بهذا الشكل : =LEN(A1) واحد هيقولي إنت مش بتشرح VBA إنت بتخدعنا ، الشغل دا إحنا عارفينه !! أنا عارف إنكم عارفينه ، بس عايزين نربط بين الشغل في ورقة العمل والشغل في محرر الأكواد ، عشان تكون الصورة واضحة .. نروح للمحرر .. ونكمل الكود اللي كتبنا منه أول سطرين .. Dim strEmail As String Dim X As Integer strEmail = Range("A1").Value X = Len(strEmail) MsgBox strEmail & " : " & X أظن الكود واضح جداً ، إحنا الحمد لله وصلنا لمرحلة متقدمة نقدر من خلالها نفهم أسطر الكود .. هشرح الجديد بس عشان الناس متحسش بالملل : الجديد يا أستاذ عبد المجيد ، الدالة Len ، ودي وظيفتها إننا بنقدر من خلالها معرفة عدد أحرف النص ، والأحرف مش مقصود بيها الحروف العربية والإنجليزية فقط ، ولكن الرموز أيضاً بيتم حسابها زي علامة @ والنقطة .. لما ننفذ الكود هتطلع رسالة فيها النص الموجود في الخلية A1 وبعدين عدد أحرف النص .. وفصلت بينهم بـ : (Shift + ك) الدالة أسندناها للمتغير X وخلينا نوعه Integer لأن عدد أحرف النص عدد صحيح (ولا يمكن يكون فيه حرف بنشوفه ربع حرف زي . طبعاً لا ... ، الحرف يمثل عدد واحد صحيح) بعد كتابة الدالة وضعنا فتحنا قوس ووضعنا المتغير النصي اللي سميناه strEmail وقفلنا القوس ( ) ، ننفذ الكود هنلاقي النتيجة إن عدد الأحرف 17 (اتأكد بنفسك لو وقتك يسمح) *-------------------------------------------------* ننتقل لدالة تانية : الدالة InStr (شكلها صعبة .. لو عرفت اختصارها هتكون سهلة بإذن الله ..الحرفين In يعني (في) أو (داخل) .. والحروف Str اختصار String .. بمعنى تاني : الدالة دالة بحث عن نص داخل نص (فزورة .. وكلام معقد مش عايزين) .. بالمثال نفهم الكلام المعقد ..(نص فرعي أي جزء من النص داخل سلسلة نصية طويلة) ..بردو الكلام صعب نفترض إننا في الإيميل اللي كتبناه عايزين نعرف علامة @ موقعها فين في النص ، في الحالة دي هنستخدم الدالة InStr عشان نقدر نحدد موقعها (مش هنحتاج لـ GPRS خاصية البحث عن طريق الأقمار الصناعية) .. ناخد مثال عشان منتوهش !! Dim strEmail As String Dim X As Integer strEmail = "yakh777@yahoo.com" X = InStr(strEmail, "@") MsgBox X نفس المثال اللي فات تقريباً .. نركز على الجديد ، ونقول دا شكل الدالة ، تقريباً زي الدالة اللي فاتت بس نركز إن فيه بارامتر تاني ، البارامتر التاني هو عبارة عن النص المراد البحث عنه (يعني ممكن نقول إن النص عبارة عن كومة قش ، والنص الفرعي المراد البحث عنه عبارة عن إبرة ، فنشرح الدالة ببساطة إن الدالة بتقوم بعملية البحث عن إبرة في كومة قش .. !!) الناتج يا جماعة يا متابعين الحلقات بيكون عبارة عن عدد صحيح Integer ، لو جربنا الكود هنلاقي الناتج 8 ، أي أن موقع الإبرة في كومة القش رقم 8 (عد من الشمال يا حاج كمال) ممكن نكتب النص الأصلي مباشرةً بدل من إسناده لمتغير زي كدا : Dim X As Integer X = InStr("yakh777@yahoo.com", "@") MsgBox X بس أنا أفضل دايماً الإعلان عن المتغير ، وإسناد قيمة له ، لسبب إننا لما بنكتب كود ، مش هنشتغل على النص مرة واحدة .. الشغل هيكون أكتر من مرة .. فبالتالي أفضل المثال السابق. وجه الاستفادة من الدالة دي إنك تتأكد من وجود نص معين في النص الأصلي من عدم وجوده ، يعني لو مش موجود هتكون النتيجة ايه ؟ فكروا شوية قبل ما أقول الإجاية : أكيد صفر ، لأن النص الفرعي (الإبرة) مش موجودة ، بالتالي تكون النتيجة صفر..نجرب المثال التالي : Dim strEmail As String Dim X As Integer strEmail = "yakh777@yahoo.com" X = InStr(strEmail, "@") If X = 0 Then MsgBox "الإيميل غير صحيح ؛ لأنه لا يحتوي على العلامة اللي متعودين عليها" Else MsgBox "الإيميل صحيح يا فصيح ؛ لأنه يحتوي على العلامة اللي زهقنا من شكلها" End If نجرب ننفذ الكود مرة ، ونشوف النتيجة ، هنلاقي إن الرسالة التانية هي اللي هتظهر ، لأن قيمة X = 8 ، يعني أكبر من الصفر (ودا دليل على وجود الإبرة في كومة القش) أما لو شيلنا علامة @ وجربنا الكود مرة تانية ، فهتظهر لنا الرسالة الأولى ، لأن قيمة X=0 ، (ودا دليل على عدم وجود النص الفرعي في السلسلة النصية) بكدا يكون انتهى الكلام عن الدالة InStr ... لا لسه متستعجلش .. الدالة فيها بارامترات اختيارية واحد بيكون في الأول وواحد في الآخر ، الشكل العام لها كدا : InStr(start, Text_To_Search, Find, comapre إحنا أخدنا البارامتر التاني اللي هو كومة القش (النص المراد البحث فيه) ، والبارامتر التالت اللي هو الإبرة (النص المراد البحث عنه) .. بالنسبة للبارامتر الأول دا نقطة البداية ، ولما مش بنكتبها بيكون الافتراضي فيها 1 أي بداية عملية البحث والتنقيب عن الإبرة في كومة القش تبدأ من أول حرف بالنص.. البارامتر الأخير بردو اختياري ودا نادر الاستخدام .. ودا له 4 قيم : (vbUseCompareOption) , (vbBinaryCompare) , (vbTextCompare) , (vbDatabaseCompare) ناخد مثال بسيط عشان نفهم جزء واحد من الخيارات للبارامتر الرابع : Dim X As Integer X = InStr("This is my heart", "t") MsgBox X ننفذ الكود نلاقي إن الناتج 16 ، ودا موقع حرف t في النص ، نخلي بالنا إن فيه حرف الـ T في أول النص الأصلي ، طيب نفترض إننا عايزين نعرف موقع أول حرف T سواء كان Capital أي حرف كبير أو Small أي حرف صغير .. في الحالة دي هنستخدم البارامتر الرابع ، وهنستخدم الخيار vbTextCompare (وفي حالة استخدامه بيتم تجاهل حالة الأحرف) Dim X As Integer X = InStr("This is my heart", "t", vbTextCompare) MsgBox X ننفذ الكود نتصدم برسالة خطأ .. الغلطة فين ؟ هي مش غلطة ، إنما قاعدة ، إنك لو هتستخدم البارامتر الرابع اللي هو أصلاً اختياري يبقا إجباري عليك تستخدم البارامتر الأول اللي هو اختياري -- أما لو استخدمت البارامتر الأول اللي هو اختياري ، فممكن عادي تستغنى عن البارامتر الرابع اللي هو اختياري (هدوخكم ورايا .. اقرا من الأول عشان تفهمها ) .. يعني الشكل الصحيح يكون كدا : Dim X As Integer X = InStr(1, "This is my heart", "t", vbTextCompare) MsgBox X الناتج هنا هيكون مختلف ، هيكون رقم 1 ، ودا موقع حرف الـ T في أول النص (هنا تم التغاضي عن حالة الأحرف .. يعني كأننا بنقوله ملكش دعوة الحرف كبير أو صغير .. ابحث عنه) كفاية كدا على الدالة دي (خدت أكتر من وقتها) .. *-------------------------------------------------* ننتقل لدالة ثالثة اسمها StrReverse ودي من اسمها نعرف وظيفتها .. Reverse معناها عكس (مضاد : لا مش مضاد .. بقول عكس) يعني بص لها من الآخر .. يعني مثلا كلمة (أوفيسنا) لما بنصلها من الآخر تبقا (انسيفوأ) كدا أكيد وصلتكم ناخد مثال عملي : Dim strOfficena As String Dim strResult As String strOfficena = "أوفيسنا" strResult = StrReverse(strOfficena) MsgBox strResult نجرب الكود ونشوف النتيجة .. كفاية عليها كدا ، مش مستاهلة نتكلم عنها كتير .. *-------------------------------------------------* هختم الحلقة بالدالة الرابعة (نظراً لأن رقم 4 بيغيظ ناس .. وأنا بصراحة من النوع الغياظ المستفز) .. الدالة التوأم (دالتين هشرحهم مع بعض ) .. بس قبل ما نشرحهم نروح لورقة العمل ونكتب مثلاً yasser في الخلية B3 ، وفي الخلية المجاورة اكتب المعادلة : =UPPER(B3) والخلية B4 اكتب كلمة YASSER كلها حروف كبيرة ، وفي الخلية المجاورة اكتب المعادلة : =LOWER(B4) أظن الأمور واضحة بالنسبة لكم ، نرجع للمحرر ونشوف شكل الدالتين دول في المحرر : الدالة LCase أول حرف منها L اختصار Lower يعني زيها زي الدالة Lower في ورقة العمل ، والتانية UCase وحرف U اختصار لكامة Upper يعني زيها زي الدالة Upper بس خلاص .. مش محتاجة شرح .. ممكن ندعم الكلام بمثال فقط : Dim strName As String strEmail = "yasserkhalil" MsgBox UCase(strEmail) نجرب نفس المثال ، بس نخلي النص كله حروف كبيرة ، ونستخدم الدالة التانية LCase زي كدا : Dim strName As String strEmail = "YASSERKHALIL" MsgBox LCase(strEmail) نأتي إلى الواجب اللي الناس بطلت تعمله : اكتب كود ، وأعلن عن متغير نصي ، على أن يكون النص المراد تخزينه فيه العلامة @ ، وفي رسالة أظهر النص المخزن في سطر ، وعدد الأحرف للنص في سطر ، موقع العلامة @ في سطر ، وقم بعكس النص في سطر ، وقم بتحويل حروف النص إلى أحرف كبيرة في سطر ، وتحويل حروف النص إلى أحرف صغيرة في نص .. وكفاية كدا عشان متتعبوش ، أنا يهمني راحتكم. كان معكم أخوكم أبو البراء من منتدى أوفيسنا إلى لقاء متجدد بإذن الله .. دمتم في رعاية الله (خدوا بقا شوية ورد لأحسن أخونا ابن مصر شكله ناوي يخلص على الورد اللي في المنتدى :fff: :fff: .. كفاية 4 وردات) والسلام عليكم ورحمة الله وبركاته
    2 points
  3. موعدنا اليوم مع تطبيق ضمن سلسلة ما خف وزنه وغلا ثمنه لأحبابي أعضاء وزوار منتدى أوفيسنا تطبيق يساعدك في إنشاء رسائل msgbox بصورة احترافية فقط اختر الأزرار والعنوان ونص الرسالة والأيقونة وباقي الخيارات ثم اضغط على زر تجربة لمشاهدة كود الرسالة ثم قم بنسخ الكود لبرنامجك ويمكنك استخدام الثوابت والقيم في كتابة الكود وفي الأخير لا ينقصني سوى دعاؤكم msgboxbuilder.rar
    1 point
  4. السلام عليكم و رحمة الله و بركاته أريد المساعدة فى جعل الكود التالى لاربع حقول و ليس اثنان =[field] & " " & [field2]
    1 point
  5. برنامج شئون الطلبة ابتدائي معدل كلمة السر111 حماية الاوراق بدون برنامج شئون الطلبة المعدل.rar
    1 point
  6. الاستعلام التجميعي لايقبل الشروط اختر استعلام آخر غير تجميعي على جدول الغياب و اجعله مصدر بيانات النموذج مثلا : SELECT TplGyab.Idstu, Count(TplGyab.dat) AS CountOfdat FROM TplGyab WHERE (((TplGyab.tayb)=3)) GROUP BY TplGyab.Idstu HAVING (((Count(TplGyab.dat))>[forms]![formqrygyabtotal]![a3]));
    1 point
  7. الاستاذ القدير ابن مصر الغالى درس جديد نتعلمه من علمكم الغزير جزاكم الله كل خير
    1 point
  8. اذا عرفت طريقة التصفية حسب السن , يأتي دورك الآن لتعمل التصفية حسب المستوى و بنفس الطريقة تماما لأن التطبيق هو أفضل فرصة للتعلم , و هي غاية هذا المنتدى
    1 point
  9. السلام عليكم ورحمة الله وبركاته أخواني الاعضاء كما وعدتكم بعمل صفحة دخول وصلاحيات للمستخدمين ولكن بشكل جديد ومميز ** أهم مميزات هذا البرنامج -- سهولة تطبيقها على اي برنامج بسهولة -- صلاحية الدخول للصفحات بحالتين ( الدخول الكامل بكافة الصلاحيات أو الدخول للعرض فقط -أي عدم وجود صلاحية للتعديل عن طريق حماية الصفحات برقم سري يتم تحديده من قبل المستخدم ) -- القوائم للبرنامج ديناميكية أي تتغير هذه القوائم بحسب عدد الصفحات المستخدمة في البرنامج -- كل مستخدم له كلمة سر ورقم محدد وبحسب الصلاحية الممنوحة اليه -- تحديد الصلاحيات باسلوب مباشر عن طريق صفحة الاكسل مباشرة -- إضافة ومسح و تغيير اسم الصفحات الصفحات يتم بواسطة القوائم فقط ************************************************************************** -- الحد الاعلى للصفحات هو 16 صفحة واي صفحة يتم اضافتها يدويا سيتم التعامل معها يدويا -- يعتمد البرنامج على ترتيب الصفحات ويتم تشكيل القوائم بناءا على ترتيب الصفحات -- عند اختيار الانتقال الى الصفحات يتم تغيير لون اسم الصفحة بحسب حالة الصلاحية فاذا كانت هناك صلاحية مطلقة يتم تلوينها باللون الاصفر وان كانت صلاحية بدون تعديل يتم تلوينها بالاحمر وفي حالة عدم وجود صلاحية يتم تلوينها بالرمادي وبالتالي سيتم تحديد صلاحية الصفحات بناءا على اللون *************************************************************************** قد لا اكون اوصلت الفكرة بالشكل المطلوب ولكن عند تجربة البرنامج ستتضح الفكرة بصورة افضل ارجو التجربة واعلامنا بالسلبيات التي قد نتفادها ان شاء الله
    1 point
  10. السلام عليكم اتفضل اخى الكريم طبق هذه المعادله ان شاء الله يكون المطلوب =IFERROR(VLOOKUP($C$2;INDIRECT($C$3&"!A6:AR200");MATCH(A$5;January!$A$4:$AR$4;0));"") تقبل تحياتى ريبورت اجازات الموظفين.rar
    1 point
  11. أخى الفاضل أ.حسام من بعض ما عندكم أستاذي الفاضل .. فنحن مازلنا نتعلم منكم، جزاك الله كل خير تحياتي
    1 point
  12. اخى ابن مصر رائع والله اعمالك ومداخلتك دائما مبهرة اتمنى لك مزيد من التقدم والرقى تقبل احترامى وتقديرى
    1 point
  13. اخى الفاضل أ.أحمد مرفق ملف به حلين لهذا الموضوع تحياتي قوائم منسدله.rar
    1 point
  14. الاستاذ الفاضل حسام عيسى اشكرك جزززززيل الشكر يالغالي لسرعة استجابتك لاسئلتي لك كل التقدير الله يسعدك دنيا وآخرة
    1 point
  15. بسم الله ما شاء الله أخي أبو ذهب... ربنا يبارك فيك .. ممكن إضافة عمودا لآخر قيمة في مبيعات اليوم قبل إضافتها في شيت الـ Summary ..
    1 point
  16. اذا كان لباب المعرفه باب فستكون انت مفتاح هذا الباب جزاك الله كل الخيرعلى ماتقدمه
    1 point
  17. السلام عليكم اليك مثل على استعمال الدالة Indirect indirect.rar
    1 point
  18. ملف الاستاذ الحسامى مع الاحترام 2صفحة صلاحيات ديناميكية.rar
    1 point
  19. يا سلام ولا اروع ولا ابدع ولا اتقن بارك الله لك استاذنا محمد صالح احترامى نتمنى تطبيق مثله لعمل فورم للترحيل
    1 point
  20. ارجو من اساتذة المنتدي الكرام عمل معادلة لترحيل بيانات الشيت الرئيسي الي شيت الراسبين والناجحين للضرورة حيث بائت محاولاتي كلها بالفشل وتفضلوا بقبول فائق الاحترام
    1 point
  21. فكرة رائعة وسابدأ باحدث مشاركة وطلب لى فى المنتدى وها هو الرابط http://www.officena.net/ib/index.php?showtopic=29239
    1 point
  22. منع حفظ الملف بأسم آخر جديد * جديد يمكن طبعا اظهار رسالة للمستخدم تفيد بمنع تغير الاسم ______________________.rar
    1 point
  23. السلام عليكم اخواني بالبحث عن كود لساعة رقمية و ساعة ايقاف وجدت هذا الكود و تم عمل ملف تنفيذي له و اقدم اليكم الملف التنفيذي و فورم الvb المصمم لهذا الملف التنفيذي باكواده و ذلك للافادة تحياتي Stop_Watch_Pro.rar stopwatch_form.rar
    1 point
  24. السلام عليكم اخوانى و اخواتى اليكم نتيجة لعام 2007 و لمدة 178 عام قادمين بعد 2007 باليوم و الشهر و السنة اليكم هذا الملف صغير الحجم و ارجو ان يفيدكم Calendar_for178_years__version_1_.zip
    1 point
×
×
  • اضف...

Important Information