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

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

  1. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      23

    • Posts

      9,814


  2. صالح حمادي

    صالح حمادي

    أوفيسنا


    • نقاط

      14

    • Posts

      1,745


  3. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      6

    • Posts

      12,210


  4. Shivan Rekany

    Shivan Rekany

    الخبراء


    • نقاط

      5

    • Posts

      3,491


Popular Content

Showing content with the highest reputation on 30 أبر, 2017 in all areas

  1. الدرس الثامن: دوال الرسائل هذا الدرس مخصص لشرح دوال الرسائل: MsgBox: تستخدم هذه الدالة من أجل عرض رسالة في مربع حوار. MsgBox (سياق, ملف التعليمات, العنوان, أزرار , النص) النص: (مطلوب) هو نص الرسالة التي ستعرض في مربع الحوار أزرار: (اختياري) هو تعبير رقمي يحدد نوع الازرار التي يجب ان تعرض العنوان: و يمثل عنوان مربع الحوار ملف التعليمات:(اختياري) تعبير سلسله يعرف ملف التعليمات لتوفير تعليمات تتبع للسياق لمربع الحوار. اذا تم توفير ملف التعليمات ، يجب ايضا توفير سياق . سياق: (اختياري) تعبير رقمي يمثل رقم محتوي التعليمات المعينه الي موضوع "التعليمات" الملائمه حسب الكاتب التعليمات. اذا تم توفير سياق ، يجب ايضا توفير ملف التعليمات . وضعيات الوسيطة أزرار: 0 عرض زر موافق فقط. 1 عرض الأزرار موافق و إلغاء الأمر . 2 عرض الأزرار إحباط + حاول مره أخري + تجاهل . 3 عرض الأزرار نعم + لا + إلغاء الأمر . 4 عرض الأزرار نعم + لا . 5 عرض الأزرار إعاده المحاوله + إلغاء الأمر . 16 عرض أيقونة رساله هامه . 32 تعرض أيقونة التحذير و الإستعلام . 48 عرض رمز رساله تحذير . 64 عرض رمز رساله معلومات. 0 الزر الأول هو الإفتراضي. 256 الزر الثاني هو الإفتراضي. 512 الزر الثالث هو الإفتراضي. 768 الزر الرابع هو الإفتراضي. 4096 نظام مشروط؛ يتم تعليق كافه التطبيقات حتي يستجيب المستخدم ل# مربع الرساله. 16384 إضافه الزر تعليمات إلي مربع الرساله 65536 يحدد إطار مربع الرساله كإطار المقدمه 524288 تتم محاذاه النص لليمين 1048576 يحدد يجب أن يظهر النص اليمين إلي اليسار للقراءه علي الأنظمه العربيه مثال: MsgBox "السلام عليكم", 3, "مرحبا" InputBox: يعرض مطالبة في مربع حوار و تنتظر قيام المستخدم بإدخال نص أو النقر فوق زر، و ترجع سلسلة تحتوي علي محتويات مربع النص. InputBox(«افتراضي»; «العنوان»; «مطالبة»; «xpos»; «ypos»; «helpfile»; «context») مطالبة : (مطلوب) عرض الرسالة في مربع الحوار العنوان: (اختياري) و يمثل عنوان مربع الحوار افتراضي: (اختياري) . عرض النص الإفتراضي في مربع النص. إذا حذفت الإفتراضي، يتم عرض مربع النص فارغ. xpos: (اختياري). تعبير رقمي يحدد، بوحده التويب المسافة الأفقية بين الحافة اليمني لمربع الحوار من الحافة اليسري للشاشة. ypos: (اختياري) تعبير رقمي يحدد، بوحده التويب، المسافه العمودية بين الحافة العلوية لمربع الحوار من أعلي الشاشة. ملف التعليمات:(اختياري) تعبير سلسله يعرف ملف التعليمات لتوفير تعليمات تتبع للسياق لمربع الحوار. اذا تم توفير ملف التعليمات ، يجب ايضا توفير سياق . سياق: (اختياري) تعبير رقمي يمثل رقم محتوي التعليمات المعينه الي موضوع "التعليمات" الملائمه حسب الكاتب التعليمات. اذا تم توفير سياق ، يجب ايضا توفير ملف التعليمات . مثال: Dim str As String str = InputBox("ادخل اسمك", "الاسم")
    3 points
  2. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته كل عام أنتم جميعا بخير أحبابي في الله اليوم موعدنا مع فيديو جديد للمتقدمين في الإكسل إلى عشاق التميز في التعامل مع نماذج إكسل يشرح كيفية تصغير نموذج الإكسل إلى شريط المهام إخفاء برنامج الإكسل Hide excel window إضافة زر تصغير للنموذج add minimize button to userform إضافة أيقونة لشريط عنوان النموذج add icon to title bar for userform إضافة أيقونة للنموذج في شريط المهام add icon to userform to taskbar تصدير موديول export module استيراد موديول import moduleأي استفسار لا تتردد في كتابة تعليق ادعمنا ب لايك كومنت شير ولا تنسوني من صالح دعائكم
    2 points
  3. اذن التأخير طبيعي المتبقي جعفر
    2 points
  4. السلام عليكم ورحمة الله استبدل الكود السابق بهذا الكود Sub ADDToArchive() Dim ws As Worksheet, sh As Worksheet, sm As Worksheet Dim LR As Long, x As Integer, cel As Range Set ws = ThisWorkbook.Sheets("ArchiveS") Set sm = ThisWorkbook.Sheets("مرايا للكشف") Application.ScreenUpdating = False For Each sh In ThisWorkbook.Worksheets If sh.Name <> "ArchiveS" And sh.Name <> "مرايا للكشف" And sh.Name <> "قوائم" Then x = WorksheetFunction.Count(sh.Range("C6:C32")) sh.Range("C6:BI32").Copy LR = ws.Range("A" & Rows.Count).End(xlUp).Row ws.Range("A" & LR + 1).PasteSpecial xlPasteValues ws.Range("BH" & LR + 1).Resize(x + 1) = sm.Range("E1") ws.Range("BI" & LR + 1).Resize(x + 1) = sm.Range("F1") ws.Range("A6").Select Application.CutCopyMode = False End If Next End Sub
    2 points
  5. وعليكم السلام نعم ، وهي الطريقة التي استعملها انا ولما اكمل الاجزاء الاساسية من البرنامج والبرمجة ، اتجه الى العلاقات بحيث اذا صار عندي شيء خطأ ، فأعرفه من وين جعفر
    2 points
  6. أشم رائحة عشاء يصير عندنا .. قولوا تم ..
    2 points
  7. السلام عليكم سيدي الفاضل ، عاشت ايدك ، اكواد بسيطة ونتائج رائعة التغييرات اللي انا عملتها: 1. اذا كتبت شيء ، وغيرت رأيك ، فتستطيع ان تضغط على الزر Esc (Escape) ، وسوف يختفي النموذج الفرعي ، Private Sub text76_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then SubFrm.Visible = False Else SubFrm.Visible = True End If End Sub 2. اذا كتبت شيء ، فارتفاع النموذج الفرعي يطول ويقصر مع عدد السجلات الموجودة ، اكثر عدد هو 3 ، Private Sub text76_Change() On Error Resume Next Dim x As String SubFrm.Visible = True x = Me.text76.Text Me.Text11.Value = x Me.SubFrm.Requery 'تغيير ارتفاع النموذج الفرعي حسب عدد سجلاته Dim rst As DAO.Recordset Set rst = Me.SubFrm.Form.RecordsetClone rst.MoveLast RC = rst.RecordCount If RC > 3 Then Me.SubFrm.Height = Me.SubFrm!FldText.Height * 3 Else Me.SubFrm.Height = Me.SubFrm!FldText.Height * RC End If rst.Close: Set rst = Nothing End Sub 3. اذا كتبت شيء ، ونقرت على الاسم في النموذج الفرعي ، فسيتغير سجل النموذج الرئيسي حسب الاسم المختار ، وهنا فانت لست بحاجة الى زر البحث Private Sub FldText_Click() 'Forms!formS1.ITEM_NEM = Me.FldText Me.Parent.text76 = Forms!formS1!SubFrm.Form.FldText.Text 'اظهر نتيجة البحث Me.Parent.Form.Requery 'Me.Parent.text76.SetFocus Forms!formS1!SubFrm.Form.Visible = False End Sub جعفر 624.test.mdb.zip
    2 points
  8. السلام عليكم و رحمة الله تعالى وبركاته إخوتي الكرام حياكم الله. إليكم هذا البرنامج الصغير الذي يقوم بإظهار شريط طباعة مع كل تقرير و بإستعمال أكواد قليلة يقوم شريط الطباعة بضبط إعدادات الصفحة ، طباعة الصفحة الحالية، طباعة الصفحات التي تريدها حسب الإختيار، التكبير و التصغير ، الإنتقال بين السجلات، عرض مجموعة من الصفحات في التقرير. رغم أنه يوجد مثال من قبل للأستاذة زهرة حفظها الله. إلا أنني في هذا المثال إستعملة طريقة مغايرة قليلا و بإستعمال أسطر أقل. إنشاء شريط طباعة.rar
    1 point
  9. ترقيم تلقائي يتجدد مع بداية كل سنة على النحو التالي 1300001 1300002 1300003 1400001 1400002 وهكذا ................. باعتبار الرقم 13 ، 14 هو السنة والترقيم لاشك سيكون تبعا للسنة الحالية Private Sub Form_BeforeInsert(Cancel As Integer) On Error Resume Next Dim xLast, xNext As Integer Dim prtyr, prtTxt As Integer prtyr = Right(DatePart("yyyy", Date), 2) prtTxt = Left(DMax("ID", "tbl1"), 2) xLast = DMax("ID", "tbl1", prtTxt = prtyr) If IsNull(xLast) Then xNext = 1 Else xNext = Val(Mid(xLast, 3, 5)) + 1 End If Me!ID = prtyr & Format(xNext, "00000") End Sub ترقيم تلقائي جديد كل سنة.rar
    1 point
  10. الاخوه فى هذا الصرح العلمى الكبير اعتذر عن قلة تواجدى فى الاونه الاخيره ولكن يعلم الله انى مشغول جدا هذه الايام اسالكم الدعاء لى بالتوفيق والسداد اليوم بأقدم لكم شرح مبسط عن النسخ والقص أو الترحيل بواسطة Destination وهى تعنى هدف الوصول أو مكان الوصول أو المكان المقصود هنعرف 1 - أزاى نعمل ده بدون اكواد من خلال التعامل مع الشيت مباشرة 2- أزاى نعمل ده بالاكواد نبدأ بسم الله عايزك تفتح شيت اكسيل وتكتب فى الخليه A1 مثلا اى شئ مثلا اكتب " اوفيسنا " المطلوب بعد ما تكتب فى الخليه A1 نقوم بنسخها الى اى خليه اخرى طبعا زى ما حضراتكم عارفين بيكون من خلال تحديد الخليه المطلوب نسخها وهى A1 تم نعمل Ctrl+C ونذهب الى المكان اللى احنا عايزين نقوم بعملية لصق الخليه بها وليكن الخلية D1 ثم نعمل Ctrl+V وفى طريقه تانية وهى الوقوف على الخليه A1 وكليك يمين بالماوس واختيار نسخ ثم تحديد الخليه D1 وكليك يمين ونعمل لصق لكن اليوم هنعمل عملية النسخ بطريقه Destination طيب ازاى ؟؟؟ حدد الخليه A1 ثم حرك الماوس الى اى ضلع من اضلاع الخليه ستجد فى سهم مثل هذا السهم دا صوره مكبره منه عندما يظهر هذا السهم على ضلع من اضلاع الخلية اضغط من الكيبورد على زر Ctrl ومع الاستمرار بالضغط على الزر اضغط على زر الماوس الايسر واسحب الماوس الى الخليه D1 مكان اللصق اللى احنا عايزينه طيب ده بالنسبه لعملية النسخ طيب عملية القص ؟؟ الطريقه الاولى تحديد الخليه المطلوب قصها وهى A1 تم نعمل Ctrl + X ونذهب الى المكان اللى احنا عايزين نقوم بعملية لصق الخليه بها وليكن الخلية D1 ثم نعمل Ctrl+V الطريقه التانية وهى الوقوف على الخليه A1 وكليك يمين بالماوس واختيار قص ثم تحديد الخليه D1 وكليك يمين ونعمل لصق الطريقه الثالثه اللى هى اساس موضوعنا هنعمل عملية القص بطريقه Destination طيب ازاى ؟؟؟ حدد الخليه A1 ثم حرك الماوس الى اى ضلع من اضلاع الخليه ستجد فى سهم عند ظهوره يمكنك الضغط على زر الماوس الايسر والسحب الى المكان المراد اللصق فيه الخلاصه الطريقه عملية النسخ عملية القص 1- من خلال الكيبور اضغط Ctrl+C ثم انتقل الى الخلية اضغط Ctrl+X ثم انتقل الى الخلية المراد النسخ بها واعمل Ctrl+V المراد اللصق بها واعمل Ctrl+V --------------------------------------------------------------------------------------------------------------------------------------------- 2- من خلال الماوس قم بتحديد الخلية وكليك يمين بالماوس قم بتحديد الخلية وكليك يمين بالماوس واختار نسخ ثم انتقل الى الخليه المراد واختار قص ثم انتقل الى الخليه المراد اللصق بها واعمل كليك يمين بالماوس اللصق بها واعمل كليك يمين بالماوس واختار لصق واختار لصق --------------------------------------------------------------------------------------------------------------------------------------------- 3-Destination حدد الخلية المطلوب نسخها واتجه بالماوس حدد الخلية المطلوب نسخها واتجه بالماوس ( المكان المقصود) الى اى ضلع من اضلاع الخليه هيظهر سهم الى اى ضلع من اضلاع الخليه هيظهر سهم اضغط من الكيبورد على زر Ctrl ومع الاستمرار اسحب الماوس الى المكان المطلوب اللصق به بالضغط اسحب الماوس الى المكان المطلوب اللصق به ----------------------------------------------------------------------------------------------------------------------------------------------------- طيب ازاى نعمل الطريقه رقم 3 Destination ( المكان المقصود) بالاكواد Sub Alsaqer1() Range("A1").Copy Destination:=Range("d1") End Sub طبعا السطر الاول والثالث معروف وهو الاعلان عن بداية الكود ونهايته السطر اللى فى المنتصف بقى هو اللى هنوضحه كتبت اسم الخلية A1 المطلوب نسخها من خلال الخاصيه Range كالتالى ("Range("A1 وبعدين كتبت . اللى هى الضغط على حرف ز بالعربى من الكيبور ثم Copy وتعنى نسخ وبعدين مسافه وكتبة Destination متبوعه =: ثم الخلية المراد اللصق بها ("Range("D1 طيب الكود هيكون ازاى لو عايز اعمل قص وليس نسخ بسيطه جدا نفس الكود مع استبدال Copy Sub Alsaqer2() Range("A1").Cut Destination:=Range("d1") End Sub طيب الكلام كله عن نسخ او قص خليه واحده ماذا لو كان المطلوب نسخ نطاق من الخلايا مثلا من A1:C5 الى الخلايا H1:J5 اولا من خلال شيت الاكسل حدد الخلايا من A1:C5 وحرك الماوس الى اى ضلع من اضلاع التحديد سيظهر امامك السهم عند ظهوره اضغط على زر Ctrl ومع الاستمرار بالضغط حرك الماوس الى الى الخلية H1 ستجد تم نسخ الخلايا طيب ولو عملية القص هيكون نفس الخطوات ولكن بدون الضغط على زر Ctrl يعنى عند ظهور السهم اسحب الماوس الى الخليه H1 طيب ومن خلال الكود لو نسخ شاهد الكود Sub Alsaqer3() Range("A1:C5").Copy Destination:=Range("h1") End Sub نفس الاكواد السابقه الفرق فقط هو بدل ("Range("A1 جعلتها ("Range("A1:C5 ولو قص الخلايا يبقى الكود كالتالى استبدل Copy بــ Cut Sub Alsaqer4() Range("A1:C5").Cut Destination:=Range("h1") End Sub ماذا لو كان المطلوب نسخ الخلايا الى شيت اخر شاهد الكود نفس السابق ولاحظ انت الفرق Sub Alsaqer5() Range("A1:C5").Cut Destination:=Sheet2.Range("h1") End Sub استبدلت ("Range("h1 بــ ("Sheet2.Range("h1 لو احنا عايزين ننسخ عمود A كله مثلا الى العمود F طبعا من خلال الشيت يبقى تحدد العمود كله واذهب الى اى ضلع من العمود هيظهر السهم اضغط على زر Ctrl ومع استمرار الضغط اسحب الماوس الى العمود المطلوب وهو F ولو قص يبقى نفس الخطوات بدون الضغط على زر Ctrl ولو عايزين نعمله بالكود شاهد الكود Sub Alsaqer6() Columns("a:a").Copy Destination:=Columns("f:f") End Sub ------ ماذا لو كان عندى نطاق متغير مثلا من جدول من العمود A الى C ولكن عدد صفوف الادخال غير محدد فى زياده او نقصان فى الحاله دى هعمل سطر لتحديد اخر صف به بيانات فى العمود A شاهد الكود Sub Alsaqer7() lr = Cells(Rows.Count, "A").End(xlUp).Row Range("A1:C" & lr).Copy Destination:=Range("h1") End Sub واخيرا الفائده من هذه الطريقه هى افضل بالاكواد نظرا لسرعه تنفيذ الكود وبساطه كتابته وفهمه كدا انا خصلت كل الامثله باقى انك بس تجرب بنفسك اسال الله تعالى لى ولكم التوفيق والسداد تقبلوا تحياتى
    1 point
  11. جزاك الله خيرا عني استاذي قمت بربط الجهاز ولكن الجهازلا يعطي اي نتيجة
    1 point
  12. اتقدم بكل الشكر والتقدير لادارة المنتدى الراقى العريق على اختيارها للمشرفين الذين يعطو الجهود والوقت لايجاد حل مناسب لمشاكل الاعضاء كما اتوجه بكل الاحترام للاستاذ الراقى شفان لمجهودة المبذول والواضح مع الاعضاء واشكر كل القائمين من المشرفين على هذا المنتدى من اجل الارتقاء به وباعضائه وللجميع تحياتى
    1 point
  13. بسم الله الرحمن الرحيم لا أعلم إن كان احد من أساتذتى بالمنتدى قدم هذا الموضوع من قبل ولكنى لم اجده لهذا ساعرضه وهو استخدام داله Vlookup فى اليوزر فورم
    1 point
  14. أخي ابو عائشه انت لما تكتب الكود ، فهذه النافذة تُسمى نافذة اكواد VBA ، ويمكنك ان تبحث عن اي امر تريده مساعدة فيه ، بطريقتين (لإصدارات الاكسس 2000 الى 2010) : في هذه النافذة حقل في اعلى اليمين تكتب الامر اللي تريد تبحث عنه ، فتخرج لك نافذة فيها معلومات عن الكلمة التي تبحث عنها ، او تكتب اي امر في نافذة الاكواد ، مثلا: msgbox وتضع مؤشر الكتابة على اي جزء من الكلمة ، ثم تضغط على الزر F1 ، فتأتيك النافذة كما في الرقم 1 اعلاه ، بمعلومات عن msgbox. من الرقم ا او 2 ، سترى جميع الاوامر الخاصة بالامر msgbox الآن بالنسبة الى الامر msgbox ، فهناك اوامر تنبيه ، والتي تصدر صوت تنبيه كذلك ، وكل أمر له الشكل/الايقونة الخاص به (وهذا كان سؤال موضوعك)، مثلا: MsgBox "تجربة بصوت", vbYesNo + vbCritical او MsgBox "تجربة بصوت", vbYesNo + vbExclamation او MsgBox "تجربة بصوت", vbYesNo + vbInformation ولتكملة الموضوع ، فان الصوت يأتي من اصوات الوندوز ، ويمكنك ان تغيره من هنا (فالسهم يؤشر على صوت Critical ، والذي تناديه من الكود اعلاه بـ vbCritical): . وطبعا تستطيع استعمال أمر Beep كما قال عنه أخي شفان ، في اي مكان من البرنامج جعفر
    1 point
  15. السلام عليكم اللي عملته هو: 1. يطبع التقرير صفحة واحدة بغض النظر عن عدد السجلات ، 2. التحكم في حجم الخط ، وتجعله في حجم مربع النص 1- بسبب ان اعدادات طابعتي تختلف عن طابعتك ، وطابعة المستخدم الاخير ، فجعلت الكود يحسب كل ارتفاعات الطابعة واقسام التقرير تلقائيا: hSum = Me.Section(1).Height + Me.Section(2).Height + Me.Section(3).Height + Me.Section(4).Height pSum = Me.Printer.TopMargin + Me.Printer.BottomMargin extra = 576 * 2.5 'to tighten the space h_p_t = hSum + pSum + extra 'in twips pPaper = 29.7 'Me.Printer.PaperSize A4 pPaper_t = pPaper * 576 hDetail = (pPaper_t - h_p_t) 'Me.StuName.Height = 23.2 * 576 / Me.mycount Me.StuName.Height = hDetail / Me.mycount اذا تلاحظ المتغير (والذي يساوي 2.5 سم ، والرقم هذا اتى بعد عدة محاولات) extra = 576 * 2.5 'to tighten the space وذلك حتى يرفع التقرير ويصبح صفحة واحدة بغض النظر عن عدد السجلات 2- من الرابط http://www.lebans.com/autosizefont.htm ، اضفت الوحدة النمطية modTextHeightWidth ، والتي تتحكم في حجم الخط ، وتجعله في حجم مربع النص ، وبما ان البيانات كان بالانجليزي ، فكل شيء كان تمام ، وقد اخبرتك انه قد يجب ان تتلاعب مع السطر التالي في الكود ، والذي يحدد حجم الخط .FontSize = .FontSize - 1 فقد تضطر ان تغير الرقم 1 الى رقم آخر ، ولكن بالتجربة ستتوصل فيما اذا كان يجب ان تقوم بالتغيير اصلا او لا جعفر 625.SH-16-17Ssss.accdb.zip
    1 point
  16. وهذا مثال.. MsgBox "سوف يتم الخروج من البرنامج" & vbCrLf & "هل تريد الاستمرار؟", vbYesNo Or vbQuestion
    1 point
  17. ما راح أكلفكم كثير راح أجيب عشايا و أتعشى معاكم
    1 point
  18. حياك الله هلا والله أخوي صالح هذه الثغرة Bug اللي الى اليوم ما لقوا لها حل جعفر
    1 point
  19. أهلين أخي لقد شغلتني الأعمال المنزلية عن الدخول لبعض الوقت
    1 point
  20. الله يسلمك ويعافيك ان شاء الله أخوي ابوخليل ، وهاي يحتاج لها سؤال ، انت تأمر ونحن نقول تم ان شاء الله هاي ما عرفت معادلتها وحياك الله جعفر
    1 point
  21. غائب غائب غائب يا حلو وينك اهلا بك في منتداك من جديد
    1 point
  22. فكرة حلوة من أساتذة حلوين أخي @jjafferr و @Shivan Rekany شكرا جزيلا و جزاكم الله خير الجزاء
    1 point
  23. طبعا مليوووون تم استاذنا القدير
    1 point
  24. السلام عليكم ورحمة الله انسخ هذا الكود والصقه فى موديول وخصص له زر Set ws = ThisWorkbook.Sheets("ArchiveS") Set sm = ThisWorkbook.Sheets("مرايا للكشف") Application.ScreenUpdating = False For Each sh In ThisWorkbook.Worksheets If sh.Name <> "ArchiveS" And sh.Name <> "مرايا للكشف" And sh.Name <> "قوائم" Then sh.Range("C6:BI32").Copy With ws LR = ws.Range("A" & Rows.Count).End(xlUp).Row If LR < 5 Then LR = 5 End If ws.Range("A" & LR + 1).PasteSpecial xlPasteValues For Each cel In ws.Range("BH6:BH" & Range("A" & Rows.Count).End(xlUp).Row) cel.Value = sm.Range("E1") cel.Offset(0, 1) = sm.Range("F1") .Range("A6").Select Next End With End If Next Application.CutCopyMode = True End Sub
    1 point
  25. ما اروعك اخي واستاذي الحبيب شكرا لك نزلت مرفقك وهو فوق الممتاز شكرا لك على مداخلتك جزاك الله الفردوس الاعلى تقبل تحياتي اخوك ( الصغير ) شفان ريكاني
    1 point
  26. شكرا أستاذى الكريم على الرد وبارك الله بكم قد وجدت المشكلة بأن البرتشن الموجود عليه الملف محمى ضد الكتابة - ولا توجد أى مشكلة بالملف كما كنت أعتقد منذ البداية - والصور التالية توضح حل المشكلة ( أو طريقة السماح بالكتابة على البرتشن المحمى ضد الكتابة) وأكرر شكرى لكم أستاذى الكريم ولكل أعضاء المنتدى المبارك (ما عدا أنا )
    1 point
  27. 1 point
  28. استبدل الفاصلة "," بفاصلة منقوطة ";" قي المعادلة أو العكس(حسب اعدادات الجهاز عندك) لتصبح هكذا =MOD($A1,4)=0 أو =MOD($A1;4)=0
    1 point
  29. ألف مبروك اخي شفان اسأل الله العظيم رب العرش الكريم ان يسعدك ويجعلك من أهله وخاصته ويرفع قدرك وشأنك وينجيك من كل مكروه ويوفقك ويجعل آيآمك كلهآ هنآ وسعآده ويحقق لك مرآدك ويحفظك ويحميك أنت ودريتك وجميع المسلمين امين
    1 point
  30. الصراحة أنا شاكر كل من ساهم في هذا الموضوع سواء الأخ 1 - Rebaz Bahram 2 - Shivan Rekany 3 - أواب وأخيرا أستاذي الأستاذ / عبد الفتاح كيرة الذي تعلمت منه الكثير .... وأنا أخصه بالذكر في هذا الموضوع وهو يفهمني ماذا أقصد . بفضل من الله ثم منكم تمكنت من الوصول للحل النهائي كما كنت أريد بمشاركاتكم بعد دراستها وتحليلها وربطها ببعض لأتمكن من أن أصل لهذه النتيجة المبهرة مرفق النتيجة النهائية للملف شكرا لكم جميعا وبارك الله فيكم اظهار الدرجة خلف شبه المنحرف والدائرة.rar
    1 point
  31. وعليكم السلام ورحمة الله وبركاته مرحبا اخي الكريم ديو05 للاسف المرفق بصيغة accdb والاوفيس عندي 2003 يعمل بصيغة mdb جهزت لك ملف ارجو ان تجد ما تبحث عنه تحياتي db03.rar ============= نفس الملف مع اضافة زر امر تحياتي db03.rar
    1 point
  32. هدية لاسير الشروق خاصة ولجميع الاعضاء عامة تلوين خلفية جميع النماذج بأمر واحد مع امكانية توظيف الكود لتلوين كائنات وعناصر اخرى تلوين النماذج.rar
    1 point
  33. ما هي غايبة عن بالي من وقت كتابتي للموضوع إلى الأن وانا اعمل نسخ ولصق احاول اعمل مثال مصغر كل الامثلة طالعة معي باخطاء
    1 point
  34. تمام لكن ارفق له قاعده‌ بيانات لكي يعمل عليه
    1 point
  35. الدرس السادس: الدوال النصية هنالك الكثير من الدوال المستعملة في VBA و سوف نحاول ذكر الدوال المشهورة منها حسب عملها: Asc: إرجاع عدد صحيح يمثل رمز الحرف الأول في السلسلة النصية. مثال: Me.y = Asc("أوفيسنا") النتيجة=195 Chr: تحويل عدد صحيح إلى حرف أو رمز. مثال: Me.y = Chr("210") النتيجة=ز InStr: استخراج موضع بداية سلسلة ضمن سلسلة أخرى. مثال: Instr(المقارنة,السلسلةالمبحوث عنها,السلسلة التي يتم فيها البحث,مكان بداية البحث) Me.y = InStr(1,"homsalah", "a")=5 InStrRev: إرجاع موضع تواجد سلسلة ضمن سلسلة أخرى بدءا من نهاية السلسلة. InStrRev(المقارنة,بداية البحث,السلسلة المبحوث عنها,السلسلة) Me.y = InStrRev("homsalah", "a", -1)=7 LCase: تحويل حروف سلسلة إلى حروف صغيرة. مثال: Me.y = LCase("ABC")=abc UCase: تحويل الأحرف إلى أحرف كبيرة. مثال: UCase(السلسلة النصية) Me.y = UCase("abcd")="ABCD" Left: ارجاع جزء من سلسلة حرفية حسب عدد الحروف المطلوبة من جهة اليسار. مثال: Left(عدد الأحرف المطلوبة,السلسلة ) Me.y = Left("1999", 2)=19 Len: حساب عدد الأحرف في السلسلة. مثال: len(السلسلة) Me.y = Len("1999")=4 LTrim: حذف الفراغات الموجودة في الجهة اليسرى. مثال: Trim(السلسلة) Me.y = Trim(" 1999")="1999" Mid: ارجاع جزء من سلسلة بحيث تحدد بداية الجزء و طوله (عدد الأحرف). مثال: Mid(عدد الأحرف,نقطة البداية(رقم),السلسلة) Me.y = Mid("SALAH", 3, 2)="LA" Replace: تعويض جزء من سلسلة بجزء آخر. مثال: Replace(الجزء المعوض,الجزء الذي نريد استبداله,السلسلة) Me.y = Replace("SALAH", "H", "T")="SALAT" Right: ارجاع جزء من سلسلة حرفية حسب عدد الحروف المطلوبة من جهة اليمين. مثال: Right(عدد الحروف,السلسلة) Me.y = Right("SALAH", 2)="AH" RTrim: حذف الفراغات الموجودة في الجهة اليمنى لسلسلة. مثال: RTrim(السلسلة) Me.y = RTrim("15 ")="15" Trim: حذف المسافات البادئة و الزائدة من سلسلة. مثال: Trim(السلسلة) Me.y = Trim(" 15 ")="15" Space: ارجاع سلسلة تتألف من عدد من المسافات المحددة. مثال: Space(عدد الفراغات) Me.y = Space(3)=" " Str: ارجاع متغير من نوع string يمثل رقم.(تحويل متغير من نوع رقم إلى متغير من نوع سلسلة نصية) مثال: Str(العدد) Me.y = Str(3)=" 3" Me.y = Str(-3)="-3" تقوم بإرجاع مسافة قبل الأعداد الموجبة StrComp: ارجاع عدد صحيح يشير إلى نتيجة مقارنة سلسلتين.إذا كانت متساوية يرجع 0 و إذا كانت مختلفة يرجع 1 أو 1- مثال: StrComp(السلسلة2,السلسلة1,المقارنة) Me.y = StrComp("ass", "ass")=0 Me.y = StrComp("as", "ass")=-1 StrConv: ارجاع سلسلة تم تحويلها كما هو محدد. مثال: StrConv(رقم يمثل رمز التحويل,السلسلة,LCID) Me.y = StrConv("ass", 1)="ASS" رموز التحويل: 1: يحول السلسلة إلى أحرف كبيرة 2: يحول السلسلة إلى أحرف صغيرة 3: يحول الحرف الأول من كل كلمة في السلسلة إلى حرف كبير 64: تحول السلسلة إلى Unicode باستخدام مخطط الشفرة الافتراضي للنظام. 128: تحول السلسلة إلى Unicode باستخدام مخطط الشفرة الافتراضي للنظام. و هذا الرابط به مختلف الرموز: https://support.office.com/ar-SA/article/الدالة-StrConv-19c3816f-dbc9-4adf-891c-fd32734c92e0 String: تكرار أحرف بعدد معين. مثال: String(الحرف, عدد التكرارات) Me.y = String(3, "S")="SSS" StrReverse: قلب ترتيب أحرف سلسلة نصية. مثال: StrReverse(السلسلة) Me.y = StrReverse("ABCD")="DCBA"
    1 point
  36. الدرس الرابع: الحلقات التكرارية أو الدورانية Looping في كثير الأحيان يحتاج المبرمج أو المستخدم إلى تكرار تعليمة عدد من المرات حسب الحاجة. و هناك نوعان من الحلقات التكرارية , الأولى في حالة كان عدد مرات التكرار معروف و الثانية في حالة كان عدد التكرار مرتبط بشرط معين. أولا: الحلقة (For … Next) تستخدم الحلقة (For … Next) لتكرار عدد من المرات بحيث يكون عدد التكرارات معلوم. For counter = start To end [step increment] Statement Next counter Counter: متغير يمثل عداد الحلقة Start: القيمة الابتدائية للدوران End: القيمة النهائية للدوران Increment: مقدار الزيادة في كل حلقة من حلقات الدوران و إذا لم يوضع يأخذ القيمة 1 افتراضيا مثال1: For i = 1 To 10 Me.y = Me.y + i Next i هذا البرنامج يقوم بحساب مجموع الأعداد من 1 إلى 10 . بحيث i هو العداد و y مربع نص تظهر به النتيجة و القيمة الابتدائية له يجب أن تكون 0 مثال2: For i = 0 To 10 Step 2 Me.y = Me.y + i Next i في هذا البرنامج وضعنا قيمة الانتقال 2 يعني أن البرنامج سوف يحسب مجموع الأعداد الزوجية فقط (من 0 إلى 10) ثانيا: الحلقة (For Each … Next) تستخدم الحلقة (For Each… Next) عندما نريد تنفيذ تعليمة أو مجموعة من التعليمات لكل عنصر في مصفوفة أو مجموعة. و رغم أنها تشبه (For … Next) كثير إلا أنها تقوم بتنفيذ حلقة لكل عنصر مما يعني أنه لا يوجد عداد في هذا النوع من الحلقات. و يمكن استخدامها في المصفوفات أو مع الكائنات. صيغتها: For Each element In Group [statement 1] [statement 2] .... [statement n] Next مثال1: Dim Array_n() as string Array_n = Array(1, 2, 3, 5) Dim sum As Integer sum=0 For Each Item In Array_n sum = sum + Item Next Me.y = sum Array_n هي مصفوفة بها 4 عناصر. هذا البرنامج يقوم بحساب مجموع هذه العناصر و يضعها في مربع النص y Item : هي العنصر i: هو العداد مثال2: Dim frm As Form Dim fc As Control Set frm = Me For Each fc In frm.Controls Me.listbox.AddItem (fc.Name) Next هذا البرنامج يقوم بإضافة جميع أسماء عناصر النموذج الحالي إلى مربع قائمة listbox. السطر الأول هو تعريف المتغير frm من Form (نموذج) السطر الثاني تعريف المتغير fc من Control (عنصر تحكم) السطر الثالث إسناد النموذج الحالي (Me) للمتغير frm و ذلك باستعمال عبارة set لأن النموذج عبارة عن كائن (Object) . السطر الرابع هو القيام بالدوران لكل عنصر من عناصر النموذج(frm.Controls) السطر الخامس إضافة اسم العنصر(fc.Name) Listbox إلى مربع القائمة و ذلك بإستعمال التعليمة AddItem ثالثا: الحلقة (Do Until condition ... Loop) تقوم هذه الحلقة بتفحص الشرط قبل الدخول للحلقة إذا كان الشرط محقق (True) فإن البرنامج يقفز إلى ما بعد حلقة التكرارية أي أنه لن يتم الدخول للحلقة. و إذا كان الشرط غير محقق (False) فسيتم تنفيذ التعليمات Statments, ثم يرجع للسطر Do until لاختبار الشرط ثانية. و هكذا. يعني أنه سوف يتم تكرار الحلقة عدد من المرات حتى يتحقق الشرط. و لن ينفذه و لو مرة واحدة إذا كان الشرط صحيح من البداية. صيغتها: Do Until condition Statments Loop مثال: Dim i As Integer Dim sum As Integer i = 1 sum = 0 Do Until i > 10 sum = sum + i i = i + 1 Loop Me.y = sum يقوم هذا البرنامج بحساب مجموع الأعداد من 1 إلى 10 . i متغير من نوع integer يمثل العداد بالنسبة للحلقة في كل حلقة يزداد 1 و فيمته الابتدائية هي 1. sum متغير من نوع integer يمثل مجموع الأعداد قيمته الابتدائية هي 0. مادام i<10 فإن البرنامج يبقى يكرر العملية حتى يصبح i>10 و بعد نهاية الدوران يضع القيمة النهائية في مربع النص y رابعا: الحلقة (Do ... Loop Until condition ) هذا النوع من الحلقات يقوم بتنفيذ الدوران على الأقل مرة واحدة لأنه يختبر الشرط في نهاية الحلقة و بالتالي فإنه يتم الدخول للحلقة أولا ثم في نهاية الحلقة يتم تفحص الشرط. صيغتها: Do Statements Loop Until condition مثال: Dim i As Integer Dim sum As Integer i = 1 sum = 0 Do sum = sum + i i = i +2 Loop Until i > 10 Me.y = sum هذا البرنامج يقوم بحساب مجموع الأعداد الفردية من 0 إلى 10 لأن القيمة الابتدائية للعداد هي 1 و مقدار الزيادة في كل حلقة (الخطوة) هو 2 خامسا: الحلقة (Do While condition ... Loop) هذا النوع من الحلقات يقوم بتنفيذ الدوران مادام الشرط Condition محقق وإلا يتم التوقف عن الدوران في الحلقة و تقوم هذه الدالة بتفحص الشرط في بداية الحلقة. صيغتها: Do While Condition Statements Loop مثال: Dim i As Integer Dim sum As Integer i = 0 sum = 0 Do While i <= 10 sum = sum + i i = i + 2 Loop Me.y = sum يقوم هذا البرنامج بحساب مجموع الأعداد الزوجية من 0 إلى 10 مادام i<=10 فإن البرنامج يعيد الدوران. في كل دورة يقوم بإضافة 2 للعداد حتى يصبح i>10 سادسا: الحلقة (Do ... Loop While condition) هذا النوع من الحلقات الدورانية المشروطة يتم فيه تنفيذ التعليمات مرة واحدة على الأقل لأنها تختبر الشرط في نهاية الحلقة و هي تشبه النوع الرابع كثيرا, إلا أنها تستمر في الدوران مادام الشرط محقق و تتوقف عندما يصبح الشرط غير محقق. صيغتها: Do Statements Loop While Condition مثال: Dim i As Integer Dim mult As Long i = 10 mult = 1 Do mult = mult * i i = i - 1 Loop While i > 0 Me.y = mult هذا البرنامج يقوم بحساب جداء الأعداد من 10 إلى 1 و يضع النتيجة في me.y هنا وضعنا العداد i تنازليا (i=i-1) في كل دورة ينقص 1 من العداد حتى يصل إلى 0 نلاحظ هنا بالنسبة للمتغير mult و الذي يمثل الناتج أنني وضعت نوعه Long Integer بدلا من و السبب يرجع لأن النوع integer أقصى قيمة له هي 32767 و في هذه الحالة الناتج يفوق هذا العدد و بالتالي سوف يظهر لنا الخطأ رقم 6 (Overflow)
    1 point
  37. الــدرس الرابع: الجملة الشرطية ( IIF ) ( لقد قام أستاذي و أخي جعفر حفضه الله بتقديم هذا الدرس كله و أنا لم أفعل شيء سوى التنسيق و النشر فاللهم جازيه عنا خير الجزاء يا رب العالمين) طريقة استعمال ((iif: iif(expr, truepart, falsepart) iif(القيمة المطلوب تقييمها, اذا كان التقييم صح فستأخذ هذه القيمة, اذا كان التقييم خطأ فستأخذ هذه القيمة) مثال: Age=50 Age_Now = iif(Age=50 , "Yes it is", "No it is not") ميزاتها: نستطيع استعمالها في الكود ، والاستعلام نستطيع ان نضع اكثر من شرط واحد فيها مثال: Price=10 Qty=5 Sale_is= iif(Price* Qty = 50 , "Low sale", iif(Price * Qty = 100 , "Middle sale" , "Big sale")) عيوبها: الدالة تختبر جميع الحالات ، ولا تختبر القيمة الاولى وتخرج (مثل الـ IF): 1. المثال السابق ، مع ان اول تقييم هو الجواب الصحيح 10*5=50 ، إلا ان الدالة ستقوم بتقييم جميع الاختيارات ، مما يجعلها تأخذ وقت اطول للتقييم ، 2. بسبب اختبارها لجميع الحالات ، فيجب ان نكون دقيقين في وضع التقييم ، مثلا اذا اردنا اختبار قيمة مثال: Divide = iif(n2 = 0, MsgBox("القيمة صفر"), MsgBox(n1 / n2)) فاننا سنحصل على خطأ ، لأن الدالة تحققت من القيمتين ، والقيمة الثانية هي تقسيم رقم على صفر ، 3. بطيئه نوعا ما ، لأنها تحول الارقام الى Variant (رجاء مراجعة الدرس الاول للأخ صالح) ، ثم تقوم بالحساب ، 4. لا تستطيع ان تستخدم اكثر من 7 شروط في الاستعلام ، مثلا عندنا ارقام الاشهر ونريد نستخرج اسمائها ، 5. ببساطة مكن ان تخطأ في عدد الاقواس والفواصل ، 6. لا تستطيع قراءة ولا تغيير اي شئ بسهولة ، وخصوصا اذا كان عندنا اكثر من تقييم ، امثلة عملية: 1. اذا عندنا ارقام الاسبوع ، ونريد ان نستخرج ايامها ، فاذا عملنا الكود في الاستعلام مباشرة ، فسيكون صعب ، لذا ، فالطريقة التي اعملها انا هي: أ‌- عمل الكود في محرر VBA ، هكذا: لاحظ اني عملت اول شرط ونتيجة القيمة الصحيحة ، ثم انهيت السطر بخط سفلي _ (واللي معناه في البرمجة ان الكود سيتواصل في السطر التالي ، ثم انتقلت السطر التالي ، ونفس الشئ ، عملت الشرط التالي ونتيجة القيمة الصحيحة و.... كما سبق و... الى ان نوصل للسطر الاخير ، فوضعت الشرط الاخير ونتيجة القيمة الصحيحة والخطأ ، ثم حسبت كم قوس مفتوح ، فقفلت بنفس عددها: iDay = 2 Today_is = IIf(iDay = 1; "Sun"; _ IIf(iDay = 2; "Mon"; _ IIf(iDay = 3; "Tue"; _ IIf(iDay = 4; "Wed"; _ IIf(iDay = 5; "Thu"; _ IIf(iDay = 6; "Fri"; "Sat")))))) ب- والخطوة التالية ان نجعلها في سطر واحد ، حتى نأخذها للإستعلام ، وهي ان نحذف الاشارة _ ، لتكون النتيجة Today_is = IIf(iDay = 1; "Sun"; IIf(iDay = 2; "Mon"; IIf(iDay = 3; "Tue"; IIf(iDay = 4; "Wed"; IIf(iDay = 5; "Thu"; IIf(iDay = 6; "Fri"; "Sat")))))) . هكذا . 2. اذا عندنا سجلات الصف الاول والثاني ، واردنا معرفة عدد الطلاب لكل صف: iif([Section]= "A" ; 1;0) وهكذا تكون في الاستعلام: 3. اذا عندنا اكثر من 7 شروط (ارقام الاشهر نريد تحويلها الى اشهر) ، فهنا نضطر الى عمل وحدة نمطية: Function What_Month(M) Select Case M Case 1 What_Month = "Jan" Case 2 What_Month = "Feb" Case 3 What_Month = "Mar" Case 4 What_Month = "Apr" Case 5 What_Month = "May" Case 6 What_Month = "Jun" Case 7 What_Month = "Jul" Case 8 What_Month = "Aug" Case 9 What_Month = "Sep" Case 10 What_Month = "Oct" Case 11 What_Month = "Nov" Case 12 What_Month = "Dec" End Select End Function ونرسل لها ارقام الاشهر ، هكذا . والنتيجة
    1 point
  38. الــدرس الثاني : الجملة الشرطية ( IF ) تعتبر الجملة IF من أشهر الجمل الشرطية و أكثرها استعمالا في جميع لغات البرمجة ولها عدة صيغ كلها تبدأ بــIf و تنتهى بكلمة End If ما عدى صيغة واحدة. وتستخدم الجملة IF لتنفيذ عمليات معينة حسب شرط محدد, يعني إذا تحقق الشرط ينفذ و إلا فلا. طرق استعمال الجملة ((if: 1- الصيغة ( If –Then ) : - وصيغتها العامة : IF condition THEN statements - ومعنى هذه الصيغة : انه اذا تحقق الشرط (condition ) فسيتم تنفيذ الامر ( statements ) مثال : " مسن" IF age >=65 THEN category = 2- الصيغة ( If – Then – End If ) : صيغتها العامة : IF condition THEN statements1 Statements2 END IF تقوم هذه الصيغة بتنفيذ مجموعة من الاوامر اذا تحقق الشرط (Condition) بدلا من تنفيذ امر واحد. مثال : If age >= 25 Then category ="شباب" travail ="السن مقبول" End if 3- الصيغة ( If – Then – Else ) : صيغتها العامة : If condition Then statements1(التعليمات المنفذة في حال تحقق الشرط ) Else statements2(التعليمات المنفذة في حال عدم تحقق الشرط) End If - هذه الصيغة تنفذ مجموعة الأوامر (statements1 ) عندما يتحقق الشرط (condition ) و عندما لا يتحقق الشرط فإنها تنفذ مجموعة الأوامر (Statements2). مثال : If grade >= 50 Then Text1 ="ناجح" Else Text1 ="راسب" End If 4- الصيغة ( If – Then –ElseIf ) : - صيغتها العامة : If condition1 Then statements1( التعليمات المنفذة في حال تحقق الشرط الأول) ELSEIF condition2 THEN statements2(التعليمات المنفذة في حال عدم تحقق الشرط الأول و تحقق الشرط الثاني) ELSE statements2(التعليمات المنفذة في حال عدم تحقق جميع الشروط السابقة) End If مثال : If grade >= 90 Then Text1 ="ممتاز" ElseIf grade >= 80 Then Text1 ="جيد جدا" ElseIf grade >= 70 Then Text1 ="جيد" ElseIf grade >= 60 Then Text1 ="مقبول" Else Text1 ="راسب" End If ملاحظات: - في الصيغة الأخيرة ( If – Then –ElseIf ) اذا تحقق احد الشروط فان البرنامج ينفذ العملية ثم يذهب الى نهاية الجملة و لا يتحقق من الشروط الباقية. - في حالة أردنا إستعمال شرطين معا أو أكثر نستعمل العبارة And. - في حالة أردنا تحقق أحد شرطين ليتم تنفيذ العملية نستعمل Or
    1 point
  39. ملاحظاتك ممتاز و في محلها و متممة للمعنى ربما هنا من يستعمل اللغة العربية في تعريف المتغير بهذا الشكل : Dim الرقم_الأول As Integer ملاحظة: - القيمه الإفتراضية للمتغيرات النصيه هي فراغ " " - أما القيمه الإفتراضية للمتغيرات الرقميه هي صفر 0
    1 point
  40. اضفت بعض الملاحظات في مشاركتي الاولى: شو قصدك اخي صالح ، انا اعرف ان المتغيرات باللغة اللاتينية ، فرجاء اعطنا مثال لوسمحت جعفر
    1 point
  41. أيضا يستحسن كتابة أسماء المتغيرات باللغة اللاتينية من أجل تسهيل التعامل معها و عدم حدوث مشاكل فيما بعد
    1 point
  42. أحد الشروط التي التزم بها دائما ، هي كتابة اسم متغير مفهوم وله معنى ، مثلا: File_Name او How_Many ، بحيث بعد مدة لما أرجع لتصحيح الكود ، افهم ما هو عمل المتغير. والمحترفين يذهبون إلى ابعد من هذا ، فبالاضافة إلى استعمالهم مسمى مفهوم المعنى ، فإنهم يسبقون الاسم بحروف تدل على ان المتغير رقم أو كلمات ، هكذا: للارقام: intRows او nColumns ، وللكلمات: strName. واستغرب من بعض المتغيرات المستعمله في كود معقد مثل: a او b !! جعفر
    1 point
  43. على بركة الله نبدأ أول درس و ننتظر ملاحظاتكم حول أي شيء نسيته و هو متعلق بهذا الدرس أو أي معلومة أخطأت بها: الــدرس الأول : المتغيرات تعتبر المتغيرات النواة الأساسية أو حجر الأساس بالنسبة لكل برنامج في أي لغة برمجة كانت. يعني قبل البدأ يجب أن تقوم بتعريف المتغيرات التي تحتاجها و تحدد نوعها قبل كل شيء. 11- أنواع المتغيرت: هناك العديد من أنواع المتغيرات و كل نوع يخصص له حجم معين في الذاكرة. سوف نقوم بإضافة شرح جميع أنواع المتغيرات و الحجم الذي يأخذه كل نوع من الذاكرة: String: نص يتسع المتغير النصي إلى 2 جيجا بايت و كل حرف يشغل 1 بايت Boolean: ياخذ نوعين من القيم True و False (طوله 2 بيت ) Byte: بايت يكون رقم بين 0 من 255 (طوله 1 بايت) Integer : عدد صحيح (طوله 2 بيت ) قيمته من 32768- إلى 32767 Long : عدد صحيح طويل (طوله 4 بيت) قيمته من 2,147,483,648- إلى 2.147.483.647 Signal: عدد عشري (طوله 4 بيت) قيمته من 3.402823x1038- إلى 1.401298x10-45- للقيم السالبة و من 1.401298x10-45 إلى 3.402823x1038 للقيم الموجبة Currency: عملة (طوله 8 بيت) قيمته من 922،337،203،685،477.5808- إلى 922،337،203،685،477.5807 Double : مزدوج عدد عشري (طوله 8 بيت) قيمته من 1.79769313486231x10308- إلى 4.94065645841247x10-324- للقيم السالبة. و من 4.94065645841247x10-324 إلى 1.79769313486232x10308 للقيم الموجبة Date: نوع البيانات تكون على شكل تاريخ (طوله 8 بيت) يبدأ تاريخ vba من 1/1/100 حتى 31/12/9999 Object : لتخزين الكائنات التي تحتوي على خصائص و وظائف و يتم تعيينه بجملة set ويشغل في الذاكرة 4 بايت أو حسب خصائص و وظائف الكائن المحدد. و سوف نخصص درس لعرض أنواع الكائنات. Variant : لتخزين كل الأنواع السابقة ويمكن تخزين المصفوفات بداخله أيضاً 2- طريقة الإعلان عن المتغيرات: الإعلان عن متغير يعني حجز مكان في ذاكرة الكمبيوتر باسم هذا المتغير و يحدد حجمه حسب نوع المتغير. و يتم تعريف المتغير أو الإعلان عنه بواسطة العبارة DIM . مثال: Dim A as Integer للإعلان عن أكثر من متغير: Dim a,b as integer للإعلان عن أكثرمن متغير لأنواع مختلفة في نفس السطر: Dim A As Double, B As Integer 3- ملاحظات: - - يفضل الإعلان عن نوع المتغير لزيادة سرعة التعامل معه . - - المتغيرات التي لم تحدد نوعها يعمل فيجول بيسك علي الإعلان عنها تلقائيا من النوع Variant وهو أبطأ أنواع المتغيرات . - - بالنسبة للإعلان عن أكثر من متغير من نفس النوع بالطريقة التالي: Dim a,b as integer هنا b فقط من النوع integer أما a فهو في هذه الحالة يعتبر من النوع Variant يجب أن يتم التعريف بهذا الشكل: Dim a integer,b as integer أو Dim a as Integer Dim b as Integer 4- شروط تسمية المتغيرات: - - اسم المتغير يجب أن يبتدأ بحرف . - - يمكن استعمال الحروف التي تلي الحرف الأول رقم أو حرف أو الإثنين معا. - - لا يجب أن تكون هناك فراغات بين أسماء المتغير و يمكن استعمال الشكل التالي: id_user - - يجب عدم استعمال نقطة أو رمز خاص مثل ( ؟ ، * ، ) ، ( ، /......... إلخ ) ولكن يمكن استخدام الشرطة السفلية ( _ ) - - أن لا يكون اسم المتغير من الكلمات المحجوزة في الأكسس.
    1 point
  44. والله مجهود رائع بارك الله فيك تسلم أيدك وجعله الله في موازين حسناتك
    1 point
  45. صحيح لو زاد عن الثلاث سنوات تعطي النتيجة 4 والحل هو ان تستخرج الايام ثم تقسمها على 360 مثال : =Round(DateDiff("d";[Date1];[Date2])/360;2) Round لتقريب الكسر واخترنا 2 للتقريب الى عددين عشريين ويمكنك استخدام هذه الدالة لاستخراج الايام والشهور والسنين : Function BetwnDate(Date1 As Date, date2 As Date) Dim sYears As Integer, sMonths As Integer, sDays As Integer sMonths = DateDiff("m", Date1, date2) sDays = DateDiff("d", DateAdd("m", sMonths, Date1), date2) If sDays < 0 Then sMonths = sMonths - 1 sDays = DateDiff("d", DateAdd("m", sMonths, ), date2) End If sYears = sMonths \ 12 sMonths = sMonths Mod 12 BetwnDate = sYears & "سنة, " & sMonths & "شهر, " & sDays & "يوم" End Function تلصقها في وحدة نمطية عامة ثم تستخدمها هكذا داحل مربع النص: =BetwnDate([Date1] ;[date2])
    1 point
  46. 1 point
  47. السلام عليكم الاخ / الفاضل / Mr_Eldeeb شكرا لمرورك الكريم ةرأيك صائب تماما ولكن من خلال وجودي في هذا المنتدي وامكانيات خبراؤنا واساتذتنا اصبح توظيف اي اصدار سهل معهم بالنسبة لي اوفيس 2003 هو اقوي اصدار للاكسيل
    1 point
  48. بارك الله فيك وبرنامج ممتاز ويستحق التثبيت!!! افكار جديدة وتصميم جيد وللارتقاء اكثر واكثر اذا امكن تعديل التقارير من حيث المجاميع على مختلف المستويات اي طلب تقرير على مستوى معين
    1 point
×
×
  • اضف...

Important Information