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

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

  1. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      14

    • Posts

      10000


  2. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      12

    • Posts

      7250


  3. أ / محمد صالح

    أ / محمد صالح

    أوفيسنا


    • نقاط

      12

    • Posts

      4479


  4. Moosak

    Moosak

    أوفيسنا


    • نقاط

      6

    • Posts

      2271


Popular Content

Showing content with the highest reputation on 11/03/21 in all areas

  1. بداية دعونا نتفق طالما فكرنا فى الموضوع ده ووصلنا له اذن نريد اضافة حماية لتطبيقاتنا طالما سوف نتحدث عن الحماية فلسوف يتم ان شاء الله العمل على افكار تطبيق ذلك خطوة بعد خطوة تدريجيا للارتقاء بالتوازى برفع مستوى الحماية مع الانتهاء من التطبيق مشروحا خطوة بعد خطوة تفصيليا 1- كل اسماء الجداول والنماذج والاستعلامات والموديول التى تخص المستخدمين ونظام الحماية سوف تبدأ بالمقطع Usys حتى يتعامل معها االاكسس على انها من كائنات النظام فيخفيها اليا عن المستخدم العادى 2- تشفير / فك تشفير البيانات التى تخص تطبيق نظام الصلاحيات وبما اننا سوف نبدأ بتلك الجزئية يستوجب تقديم الشكـر والامتنان لاستاذى الجليل ومعلمى القدير الدكتور @SEMO.Pa3x لاننى ان شاء الله سوف استخدم نظام التشفير الذى تقدم به استاذى الجليل اولا ـــــــــ الروتين المستخدم فى تشفير الكلمات والذى يتم وضعه فى موديول Function Encoder(ByVal strWordDecrypt As String) As String Dim iIndex As Integer Dim iEncoder As Integer Dim iEncodedVal As Integer Randomize Encoder = "" For iIndex = 1 To Len(strWordDecrypt) Do iEncoder = Int(98 * Rnd + 89) iEncodedVal = Asc(Mid(strWordDecrypt, iIndex, 1)) Xor iEncoder Loop While iEncodedVal = 1000 Or iEncodedVal < 99 Encoder = Encoder & Chr(iEncodedVal) & Chr(iEncoder) Next iIndex End Function ويتم استدعاءه كلاتى Encoder(text) حيث ان text هو النص المراد تشفيره أو انه اسم الحقل ( تيكست بوكس , كمبو بوكس ..) المراد تشفير القيم الموجوده بهم ------------------- العملية العكسية وهى فك تشفير الكلمات واعادتها الى وضعها الطبيعى الروتين المستخدم فى فك تشفير الكلمات والذى يتم وضعه فى موديول Function Decodeder(ByVal strWordEncrypt As String) As String Dim iIndex As Integer Dim iDecodedVal As Integer Decodeder = "" For iIndex = 1 To Len(strWordEncrypt) Step 2 iDecodedVal = Asc(Mid(strWordEncrypt, iIndex, 1)) Xor Asc(Mid(strWordEncrypt, iIndex + 1, 1)) Decodeder = Decodeder & Chr(iDecodedVal) Next iIndex End Function ويتم استدعاءه كلاتى Decodeder(EncoderText) حيث ان EncoderText هو النص المشفر المراد فك تشفيره أو انه اسم الحقل ( تيكست بوكس , كمبو بوكس ..) المراد فك تشفير القيم الموجوده بهم واخيرا المرفق Encrypt&Decrypt.mdb
    2 points
  2. استاذ @jjafferr دائما يقدم ابسط الحلول ما بيهوى التعقيد اما انا معقد شوف بطبعى لا احب التقيد لذلك دائما ابحث عن الحلول التى ترضى طموحى وخيالى دون ان تقيدنى حتى وانا طالت واحيانا اجد ان تنوع الحلول يثمن المعرفة
    2 points
  3. المشكلة عندك بأن حقل التاريخ عندك عبارة عن نص ، فنستعمل الامر CDate ومعناه حوّل البيانات الى تاريخ Convert to Date ، ومنها تستطيع عمل الفرز 🙂 هي نفس المشكلة في اسماء الملفات في المجلد ، اذا كانت الاسماء عبارة عن تاريخ ، لا يمكن فرزها بالطريقة الصحيحة !! جعفر
    2 points
  4. السلام عليكم 🙂 بالاضافة الى طريقة استاذنا ابوجودي ، اليك طريقة اخرى متوفرة على كمبيوترك : افتح برنامج الوورد . استخدم خط Wingdings3 : . انقر نقر مزدوج على الاسهم اللي تريدها (ونصيحة ، اختار اكبر كمية من الاسهم ، لأن شكلها وهي كبيرة قد تجعلك تختار الافضل) ، فتراها في ملف الوورد ، اغلق النافذة ، اعمل نسخ للسهم ، ثم الصقه في الحقل في الاكسس ، وطبعا تختار نوع الخط Wingdings3 🙂 . بس ما تقدر تعمل اي حروف مع السهم ، لأن الحقل في الاكسس يأخذ نوع واحد من الخطوط ، وخط Wingdings3 ما فيه حروف 🙂 ولكن ، يمكنك الحصول على بعض انواع الاسهم في الخطوط العادية ، مثل Arial او اي نوع آخر من الخطوط الموجودة اصلا على كمبيوترك: . وبعد نسخ السهم من الوورد ، ولصقه في حقل الاكسس ، تم كتابة الحرف L مباشرة خلف اللصق : . وصرت اغيّر الخطوط الى ان عجبني سهم هذا الخط 🙂 جعفر
    2 points
  5. يغجبني كثيرا متابعة الاخوة استاذ @ناقل واستاذ @Moosak لكن غلب علي النعاس ومتابعتهم تحتاج قهوة الصباح بالعراقي نقول .. فدوة لهذا المنتدى ولعطيته 😂
    2 points
  6. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته هذا برنامج رسم قطاعات الترع من بيانات رفع المساحي رسم قطاعات الترع 1.rar
    1 point
  7. ممكن ان تستعمل النموذج الجديد (واعمل فيه حقل البحث txt1) ، كنموذج بحث وتتخلّص من النموذج book : استبدل اسم الحقل المحلي بدل عن حقل النموذج : فبدلا عن: str_Search = Forms!Book!tx1 يكون: str_Search = Me.tx1 ولكني انصحك بالتصفية كما تقوم به الآن ، بحيث يبقى فقط السجلات التي بها كلمة البحث. جعفر
    1 point
  8. لا اجد التفاعل بالردود المناسبة على اسألتى على بركة الله اكمل العمل كله كما سوف يترأى لى من وجهة نظرى طيب حتى لا يقال لى ان الجداول مستقبلا او النماذج سوف اتعمدت تسمية كل الكائنات التى تخص الصلاحيات بالبداية Usys لذلك سوف تعتبر تلك الكائنات تابعة للنظام وسوف تختفى تلقائيا ارى من وجهة نظرى ان التشفير يكون فقط لـ اسم المستخدم , كلمة المرور , الاجابات الثلاث تعمدت ان تكون ثلاث حتى ان خمن احد المقربين من المستخدم اجابة سؤال وكانت صحيحة يقف امام سؤلاين اخرين
    1 point
  9. حياك الله وبياك جعفر 😄 🌹 بصراحة أحس بالأنس وانت موجود في المنتدى 👍🏼😁 وشكرا على النصيحة 🌹
    1 point
  10. حياالله ولد بلادي 🙂 استخدم Trim ، وابتعد عن Like قدر الامكان ، لأنها بطيئه نوعا ما 🙂 جعفر
    1 point
  11. مثل ما دائما اقول: المبرمج مثل الطباخ ، من نفس المكونات يصنع عشرات الوجبات وبنكهات مختلفة 🙂 جعفر
    1 point
  12. 1 point
  13. هلا فعلا النتائج لم تتأثر بالمسافات الزائدة عندك حسب تجربتك؟ أنا كنت أفكر في دالة like أو دالة Trim كحلول لهذه المشكلة ..
    1 point
  14. في المديول القديم كان يتطلب متغيرين ( نص التشفير و الحقل المشفر ) اما المديول الاخير يتطلب فقط ( الحقل المشفر ) هذا الفرق فقط ....
    1 point
  15. كنت اريد التأكد هل وجود المسافات الزائدة تشكل فارق النتيجة المرجو الحصول عليها اما عن سؤال حضرتك كيف اضفتها هههههههه انا لا اعرف المرفق كان هكذا من احد رواد المنتدى فى سؤال له لا اعرف هل هذا ناتج عن مشكلة ام ماذا قصدت بأننى تعمدت ذلك اى تعمدت التأكد من ان الحلول لن تأثر تلك المسافات عليها لأفكر ان كان لها تأثير على اقوم بعمل حسابات فى الكود لازالتها اولا ـــــــــــــــ لكن بوجه عام انا ان احببت اضافة مسافات وانا متعمدا لذلك اضغط على زر Alt من لوحة المفاتيح ضغط مستمر وفى نفس الوقت اكتب الارقام 255 تلك طريقة الـ Asci
    1 point
  16. بل هو مختلف ..... ولكن غيرت التكنيك ... غيرت اسم الفانك بنفس الاسم السابق حتى يسهل التعديل .... والدليل المديول القديم محذوف من القاعدة .... بارك الله فيك ...
    1 point
  17. وإضافة بسيطة لم استطع اكمالها البارحة: 1. يخبرك تسلسل كلمة البحث الواقف عليها ، 2. الاسهم تبدا التضليل من جديد عندما تصل الى آخر كلمة (طبعا مع اختلاف ذلك ، صاعدا او نازلا) : . جعفر تلوين2.zip
    1 point
  18. تفضل اخي الكريم Dim db As Object Dim rst As DAO.Recordset Dim mySQL As String Dim i As Integer mySQL = "Select * From table_name" Set rst = CurrentDb.OpenRecordset(mySQL) If Not rst.BOF Then rst.MoveFirst Dim ctl As Control For i = 1 To 300 Me.Controls("Textbox" & i) = rst.Fields(i) rst.MoveNext Next i rst.Close Set rst = Nothing تحياتي
    1 point
  19. اتمنى ان تنشر في كل ساعة موضوعا استاذنا العزيز @السبيل1 استمتع واطرب كثيرا للغتك العربية ولمفرداتك الجميلة
    1 point
  20. السلام عليكم 🙂 لا وانت الصادق ، من 1-2-2021 الى 1-3-2021 يعتبر شهر 🙂 لأن يوم 28-2-2021 بعد منتصف الليل يكتمل اليوم ، وهذا معناه ان اليوم اصبح 1-3-2021 🙂 جعفر
    1 point
  21. 1 point
  22. تفضل ، الاستعلام مصدر بيانات النموذج : . والنتيجة: . جعفر
    1 point
  23. السلام عليكم 🙂 في الاستعلام ، اعمل حقل جديد للفرز : D: CDate([اسم حقل التاريخ]) جعفر
    1 point
  24. حقول جدول المستخدمين من وجهة نظرى سوف تكون كالاتى فهل لكم وجهة نظر أخرى فى الغاء احد الحقول او الزيادة عليها ومن جهتكم اى حقول تريدون تشفر بياناتها ؟! كلمة المرور , الاسم الرباعى , البريد الالكترنى , الاجابات على الاسئلة
    1 point
  25. يمكن الوصول لذلك تعديل هذا السطر الذي يحدد بداية النص ib = InStr(1, .Cells(R, MyColmnFind), Me.TextFind, vbTextCompare) = 1 وتغييره إلى هذا الشرط If Me.OptionButton2 = 0 Then ib = InStr(1, .Cells(R, MyColmnFind), Me.TextFind, vbTextCompare) >= 1 Else ib = InStr(1, .Cells(R, MyColmnFind), Me.TextFind, vbTextCompare) = 1 End If لاحظ أن اكبر من او تساوي 1 تعني في أي مكان في النص ويفضل جعل القيمة الافتراضية value في خيار بحث بأي حرف تساوي true بالتوفيق
    1 point
  26. 1 point
  27. حياك الله 🙂 اسمح لي اوضح لك بعض النقاط عن التاريخ : الاكسس يأخذ تنسيق التاريخ من اعداداتك في الوندوز ، إلا اذا قمت انت بعمل تنسيق آخر للتاريخ في قاعدة بياناتك (لاحظ ان كلامنا كله عن التنسيق ، وليس عن اصل التاريخ) ، انت لما عملت التنسيق هكذا: "mm/dd/yyyy" ، لأنه يتناسب مع التنسيق الذي رأيته في كمبيوترك ، بينما التنسيق في كمبيوتر مستخدم آخر يكون غير (وهذا ما حصل معي) ، فعليه لن يعمل الكود هناك !! وللتغلب على هذه الاشكالية ، استخدم التنسيق للطرفين: "Format([DateOfBirth], 'mm/dd/yyyy') ='" & Format(Me.txtDateOfBirth, "mm/dd/yyyy") & "'" لاحظ ان Format غيّرت نوع الحقل من تاريخ الى نص ، فتعاملي لها هنا هو نص ، ابحث في الانترنت عن "date format used natively by JET SQL" حتى تعرف ان المشكلة دولية 🙂 داخليا واثناء تنفيذ العمل ، الاكسس يتعامل مع التواريخ بالتنسيق الامريكي: شهر/يوم/سنه ، لهذا السبب ، بعض الاوقات ترى في الاستعلامات ان الاكسس قلب بين اليوم والشهر (1 الى 12) !! الدالة DateFormat تقوم بتحويل التاريخ الى النظام الامريكي ، ومنها يكون التاريخ صحيح ، هناك حوار جميل عن تنسيق التاريخ ، وطريقة اخرى للقيام بالعمل ، كما هو موضح بطريقة الاستاذ @Hawiii : جعفر
    1 point
  28. شكرا لك أبا جودي .. أفادتني جدا في مشروعي القادم بإذن الله 😉
    1 point
  29. أستاذ ورئيس قسم كمان @ابا جودى شكرا لك بالمرة هل هناك حصر كامل وشامل لشرح أخطاء أجراء Compile علي أكواد المحرر
    1 point
  30. استبدلها بـ dim dBase As DAO.Database
    1 point
  31. اتفضل يا دكتور فكرتى من خلال استخدام الـ Unicode وهذا موقعالـ Unicode https://www.ssec.wisc.edu/~tomw/java/unicode.html ابحث عن .... Arrows SYMBOLS .mdb
    1 point
  32. حلال عليك أخي .. هذي سرقة جائزة 😅 نعم صحيح 100% 👌🏻 ، نِعمَ ما فعلت 👍🏻
    1 point
  33. ادرج ملف والنتيجة التي تريدها حتى تجد تفاعل اكبر من الاعضاء
    1 point
  34. اولا اين الملف ثانيا على حسب علمي هذا كود نسخ البيانات من حوالي 55 مربع نص الى ورقة العمل وليس تعديل مثل ما ظاهر لعنوان موضوعك ثالثا عندك متغير r اين تعريفه يفترض يشير الى الصف الذي سيتم البدء بنسخ البيانات منه
    1 point
  35. تم الأمر أخي الحبيب ... عدلت الاستعلام وصار اسمه TAB_RMZQ وغيرت اسم العمود المحسوب الى TOTAL وجعلت هذا الكويري هو مصدر بيانات النموذج FRM_RMZ وأضفت له حقل ال TOTAL هكذا: MusndWZwayid 004.accdb
    1 point
  36. أعتقد أنها ممكنة بدالة lookup وليس vlookup يمكنك تجربة هذه المعادلة =LOOKUP(2,1/($A$2:$A$12="value"),$B$2:$B$12) حيث يتم التوصل لآخر نتيجة في العمود B أمام القيم في العمود A والتي تساوي value ويمكن استعمال مرجع الخلية التي بها القيمة المراد البحث عنها بدلا من كلمة value بالتوفيق
    1 point
  37. السلام عليكم أستاذ عبداللطيف البرنامج مصمم على 32 بت وما يفتح عندي لأنه انا عندي 64 بت ما العمل لحل المشكلة كي يعمل البرنامج عندي ؟ وشكرا
    1 point
  38. جزاك الله خيرا اخي الكريم تحياتي
    1 point
  39. قبل ان اتكلم عن الجداول حابب اعرف راى اساذتى واخوانى واحبائى الكرام عن الاتى فلنسمى الجزء النظرى الاتى هو جزء التحليل للنظام ووضع التصور والخارطة التى سوف نكمل دربنا ان شاء الله على خطاها اولا حابب ابدأ كل اسماء الجداول والاستعلامات والنماذج والموديول ان وجدت بــ lvl حتى يكونون مميزين ومرتبين فى العمل مستقبلا على سبيل المثال جدول الـ users احب ان يكون اسمه tbllvlUsers ان اردنا عدم اخفاء الجدول على انه من جداول النظام ان اردنا اخفاء الجدول على انه من جداول النظام يكون UsystbllvlUsers وباقى الكائنات على نفس المنوال فما رأيكم على اى درب تحبون ان نسيـــــر ثانيا حقول جدول المستخدمين من وجهة نظرى سوف تكون كالاتى فهل لكم وجهة نظر أخرى فى الغاء احد الحقول او الزيادة عليها ومن جهتكم اى حقول تريدون تشفر بياناتها ؟! اسم المستخدم , كلمة المرور , الاسم الرباعى , البريد الالكترنى , الاجابات على الاسئلة هذا من وجهة نظرى هل لكم رأى اخر فى انتظار ارائكم احبابى فى الله
    1 point
  40. أها اعتقد اني فهمت بشكل خاطئ المشكلة بالنسخ اذا ربما حسب ما فهمت Myrow = Val(TextBox1.Text)+3 Rows(Myrow).Copy
    1 point
  41. أخي العزيز أنا حليت هذي المشكلة ولله الحمد والفضل عن طريق وضع نسخة التحديث في مجلد على الشبكة الداخلية مثلما ذكرت أنت .. وبالاستعانه ببرنامج ال WinRAR يقوم بتنصيب النسخة الجديدة في جميع الأجهزة .. لعلي أجد فرصة لشرح ذلك في مقطع فيديو لاحقا بإذن الله .. ولكن في عجالة هذه هي الطريقة : 1- إنشاء جدول في ملف الواجهات ال Front End ووضع حقل واحد فيه وسجل واحد وهو حقل تاريخ يكتب فيه [تاريخ النسخة الحالية] وهذا الجدول لا يتم نقله إلى ملف الجداول ال Back End بل يضل في نسخة الواجهات . 2- جدول آخر يكون في ملف الجداول ال Back End وهو جدول إداري تضع فيه حقلين الأول [تاريخ آخر تحديث] و الثاني حقل نعم/لا [هل تريد تحديث النسخة؟] وتتحكم به من عندك (النسخة الإدارية) . 3- تعمل ماكرو AUTOEXEC يعمل عند فتح قاعدة البيانات .. وهذا الماكرو يشغل بدوره كود وظيفته كالتالي : أولا يذهب لخانة [هل تريد تحديث النسخة؟] ... إذا كنت وضعت عليها ☑️ ينتقل للخطوة التالية ، وإذا فاضي يخرج من ال sub . ثانيا يقارن بين التاريخين ، التاريخ الموجود في الجدول الذي أنشأته لمعرفة [تاريخ النسخة الحالية] في الخطوة رقم (1) وبين التاريخ الموجود في الجدول الإداري [تاريخ آخر تحديث] في الخطوة رقم (2) ، فإذا كان [تاريخ آخر تحديث] أصغر من أو يساوي <= [تاريخ النسخة الحالية] يخرج من ال sub ، وإذا كان [تاريخ آخر تحديث] أكبر من > [تاريخ النسخة الحالية] فإنه ينتقل للخطوة التالية ويقوم بتحديث النسخة . بعد عملية التحقق من أن هناك تحديث جديد كما مر في الخطوتين السابقتين ، تطلق رسالة بزر واحد [OK] مفادها (( أن هناك تحديث جديد ستقوم بتحميله بعد قليل )) .. بعدها يقوم الأكسس بفتح برنامج ال WinRAR الذي بدوره سيقوم بتنصيب التحديث الجديد في جهاز المستخدم واستبدال النسخة القديمة بالجديدة . قبل أن يعمل برنامج ال WinRAR بتنصيب التحديث الجديد ، تتأكد من إغلاق الأكسس (عن طريق الكود نفسه) وذلك مباشرة بعد تشغيل ال WinRAR ، وإلا فسيواجه ال WinRAR مشكلة في استبدال الملف القديم . سيقوم برنامج ال WinRAR تلقائيا بفتح النسخة الجديدة بعد تثبيتها. وبذلك يتم تحديث ملف الواجهات فقط بنقرتين .. 😉 طبعا يجب الانتباه إلى تحديث [تاريخ النسخة الحالية] إلى نفس تاريخ [تاريخ آخر تحديث] في الجدول الموجود في النسخة المطورة وإلا فستقع في دوامة التحديث اللانهائي . بالنسبة لبرنامج ال WinRAR هناك إعدادات خاصة به أيضا لتحويله إلى ملف تنفيذي exe وإعطائه أمر استبدال الملفات القديمة بالحالية وتشغيل النسخة الجديدة ( وهذا جزء هام طبعا في هذه العملية كلها) ولكن للأسف لا يسعني ذكرها الآن ، ولكنك قد تجد ضالتك في هذا الفيديو بإذن الله .. https://www.youtube.com/watch?v=MZHuoV7pd7E&t=410s هذا والسلام عليكم
    1 point
  42. Sub TestCode() Dim v, w, m As Long With Sheet1 m = .Columns(3).Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row v = .Range("B6:O" & m).Value w = Application.Index(v, Evaluate("ROW(1:" & UBound(v, 1) & ")"), [{1,2,3,14}]) Sheet2.Range("K3").Resize(UBound(v, 1), UBound(v, 2)).Value = w End With End Sub
    1 point
  43. مازلت على سخائك وكرمك أ/ محمد صالح لك كل التقدير والامتنان والاحترام . فعلا كان في مسافه في تسمية ورقة التجميع لاحظتها متاخرا وانا احاول عليه اليوم الصباح ومزيد من الشكر على تفاعلك وسرعة الرد بصراحة احرجت منك كثيرا .
    1 point
  44. تفضل هذا ملفك بعد إضافة الكود وتعديل أسماء الشيتات من المسافات الزائدة وتعديل الأعمدة التي سيتم الترحيل لها حيث كان بها خلايا في الأسفل (مكتوب فيها) تمنع من دقة معرفة آخر صف مكتوب فيه بالتوفيق البرنامج 1-1.xlsm
    1 point
  45. جمعت لكم اليوم مجموعة من الحكم والأقوال المأثورة مع نسبتها لقائلها الأصلي حتى نستفيد منها في حياتنا اليومية نفعنا الله وإياكم بها * إذا بدأت بتقييم الناس فإنك لن تجد الوقت لتحبهم الأم تريزا * في اليوم الذي لا تواجه فيه اية مشاكل ، تأكد أنك في الطريق غير الصحيح سوامي فيفيكاناندا * ليس خطأك أن تولد فقيرا ولكنه خطؤك أن تموت فقيرا بل جيتس * لن أقول أني فشلت مرة ، ولكني أقول أني اكتشفت أن هناك طريقة تؤدي إلى الفشل توماس اديسون * الجميع يفكر في تغيير العالم ، ولكن لا أحد يفكر في تغيير نفسه ليو تولستوي * الفوز لا يعني أنك الأول ولكنه يعني أنك أفضل من ذي قبل بونني بلير * لا تقارن نفسك مع أي شخص في العالم ، إن فعلت ذلك فإنك تهين نفسك ألن سترايك ********************** وأخيرا لا تنسوني من صالح دعائكم
    1 point
  46. جرب أخي خالد وأخي أحمد أن تجعل رابط الصورة في التوقيع موجود في الانترنت يعني عند كتابة توقيعك ووضع مسار صورة بتوقيعك ضع رابط لصورة مرفوعة على الانترنت وأخبرني بالنتيجة
    1 point
  47. أخي الكريم محمد تابع الموضوع السابق من أوله وستجد الخطوات بالإضافة إلى أني قمت بالمزيد من الإيضاح هناك وهذا مزيد من التوضيح شرح مثال الساعة.rar
    1 point
  48. أخي الكريم علي ما توصلت إلى فهمه من خلال ما ذكرته هو أنك تريد عمل رسالة تنبيه إذا كان فرق السنوات بين التاريخين يساوي صفر أو طبعا بالسالب يمكن عمل هذا بكود بسيط في حدث عند تغيير القيم في الشيت Private Sub Worksheet_Change(ByVal Target As Range) If Sheets("sheet1").Range("c2").Value < 1 Then MsgBox "ضع نص رسالتك هنا" End If End Sub أتمنى أن يكون هذا هو المطلوب
    1 point
×
×
  • اضف...

Important Information