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

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

  1. سليم حاصبيا

    سليم حاصبيا

    أوفيسنا


    • نقاط

      13

    • Posts

      8,723


  2. خيماوي كووول

    خيماوي كووول

    الخبراء


    • نقاط

      11

    • Posts

      196


  3. ابوآمنة

    ابوآمنة

    الخبراء


    • نقاط

      8

    • Posts

      713


  4. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      8

    • Posts

      6,818


Popular Content

Showing content with the highest reputation on 28 ديس, 2020 in all areas

  1. اتفضل الملف لعله يفى بالغرض نسخة من كشف حساب .xlsm
    4 points
  2. وعليكم السلام اتفضل استاذ @عبد اللطيف سلوم ان شاء الله يكون ما تريد بالتوفيق Dsum2021 (2).accdb
    4 points
  3. استكمالاً لتطوير برنامج المطاعم أرفق لكم النسخة مفتوحة المصدر آملاً أن تحوز على رضاكم وستحسانكم ولا تنسونا ومعلمينا من دعائكم ،،، كما أشكر مساهمة أستاذي @ابو عارف أنقر هنا للتحميل بدون ضغط Restaurant.rar
    3 points
  4. ممكن العمل على نفس التكست بوكس على ان تختار ( قتدق أو عميل) الكود Private Sub Mot_Change() Dim i As Long, s As Long, LF% Dim Rg As Range Dim Source As Worksheet Dim Rg_to_find As Range Me.ListBox1.Clear If Mot = vbNullString Then Exit Sub Set Source = Sheets("القيود اليوميه 0") LF = Source.Cells(Rows.Count, "F").End(3).Row If LF < 9 Then Exit Sub Select Case True Case Me.Hot.Value Set Rg_to_find = Source.Range("G8:G" & LF) Case Me.Clirnt.Value Set Rg_to_find = Source.Range("F8:F" & LF) Case Else Exit Sub End Select With Me.ListBox1 .AddItem For s = 0 To .ColumnCount - 1 .List(.ListCount - 1, s) = Source.Cells(7, s + 1) Next End With For i = 8 To LF If UCase(Rg_to_find.Cells(i - 7)) Like ("*" & UCase(Mot) & "*") Then With Me.ListBox1 .AddItem For s = 0 To .ColumnCount - 1 .List(.ListCount - 1, s) = Source.Cells(i, s + 1) Next End With End If Next End Sub الملف مرفق Yasser_choise.xlsm
    3 points
  5. السلام عليكم ورحمة الله وبركاته تفضل اخوي العزيز Aziz.xlsm
    3 points
  6. This Macro Sub transfer_data() Application.ScreenUpdating = False Dim D As Worksheet Dim array_sheet, Itm Dim Flter_rg As Range, Ro% array_sheet = Array("رصيد", "ديون", "حالص") Set D = Sheets("Data") D.Select Set Flter_rg = D.Range("A2").CurrentRegion For Each Itm In array_sheet With Sheets(Itm) .Range("A2").CurrentRegion.Clear Flter_rg.AutoFilter 9, .Name Flter_rg.SpecialCells(12).Copy .Range("A2").PasteSpecial Ro = Cells(Rows.Count, 1).End(3).Row If Ro > 2 Then .Range("A3").Resize(Ro - 2).Value = _ Evaluate("Row(1:" & Ro - 2 & ")") End If End With Next Itm D.Select D.AutoFilterMode = False Application.ScreenUpdating = True Application.CutCopyMode = False End Sub file included Aziz_filter.xlsm
    3 points
  7. البيانات في أي لغة من لغات البرمجة إما أن تكون متغيرات Variables أو ثوابت Constants - المتغير هو مكان في الذاكرة يتم تخصيصه لك لتقوم بوضع عنوان له ويخزن المعلومة التي تريدها بداخلة كما يمكنك تغير هذه المعلومة بمعلومة أخري في نفس المكان ويظل عنوانه ثابت - الثابت فمثله مثل المتغير تماما إلا انك لن تحتاج لتغير هذه المعلومة وكما هو واضح من الاسم هو عبارة عن اسم يحمل قيمة ثابتة لا تتغير أثناء تنفيذ البرنامج ولكي تتضح الأمور هذان المثالين للدلالة على وظيفة كل من المتغيرات والثوابت مثال علي المتغيرات والثوابت : المتغيرات إذا أردت أن تتحكم فى تغيير نص رسالة حسب موضعها طبقا لمعالجة بياناتك فنص الرسالة هنا سوف يتغير Public Function MyMsg(txtMsg As String) MyMsg = txtMsg End Function المتغير هنا هو txtMsg وتم الاعلان عنه انه متغير يتعامل مع النصوص As String ويتم النداء عليه كالاتى Call MyMsg("منتديات أوفيسنا ترحب بكم") في هذا المثال سوف يتم عرض الرسالة حسب ما نسنده الي المتغير txtM ويبقي المتغير txtMsg يحمل هذه القيمة حتى نقوم تغيرها ويتم تغير القيمة التي يحملها المتغير txtMsg بإسناد فيمة جديده له استبدال القيمة القديمة بالقيمة الجديدة --------------------------------------------------- الثوابت إذا كان عملك يتطلب مجموعة من العمليات الحسابية ترتبط بوحدة ثابتة مثل وحدة القياس المتر وهو يساوي مائه سنتمتر فيمكن الإعلان عن ذلك بالأمر التالي Const IntMeter=100 وهذا يفيدك عندما تكون جميع حساباتك بالنسبة للوحدة سنتمتر فبدلا من قيمة المتر وكتابة الرقم ( 100 ) في كل مرة سيتم كتابه الثابت IntMeter في جميع التعليمات المطلوبة داخل البرنامج وهي فائدة كبيرة تجعل برنامجك سهلا وبسيطا فائدة أخري يمكن الحصول عليها من استخدام الثوابت فمثلاً في حالة تعديل كل حساباتك لتصبح منسوبة لوحدة الملليمتر بدلا من السنتمتر ( والمعروف أن المتر = 1000 ملليمتر ) فبدلا من إجراء هذا التعديل في جميع إجراءات برنامجك ( وهو كتابة الرقم 1000 بدلا من الرقم 100 ) يكفي أن تعدل الرقم 100 ليصبح 1000 في نفس الأمر كآلاتي Const IntMeter =1000 وبذلك تتم عملية التعديل مرة واحدة فقط لتعطي النتيجة المطلوبة فى كل مكان تم وضع الثابت به و ألان وقد تعرفنا علي وظيفة كل من المتغيرات و الثوابت و الفائدة المرجوة من استخدامهم ولكن بقي لنا أن نوضح كيفية التعامل مع المتغيرات و الثوابت ليمكننا استخدامهم بصورة صحيحة وبشكل أفضل ولعدم التشتت سنترك الثوابت قليلا وسنتكلم عن المتغيرات بشكلا من التفصيل أنواع المتغيرات : يوجد أنواع كثيرة للمتغيرات نوضح منها ما يلي . نوع المتغير Integer : عدد صحيح صغير نسبيا ــ حجمه 2 Byte ــ مداه من 32768- إلي 32767 نوع المتغير Long : عدد صحيح كبر نسبيا ــ حجمه 4 Byte ــ مداه من 2147483648- إلي 214783674 نوع المتغير Single : عدد حقيقي صغير نسبيا ( يحتوي علي علامة عشرية عائمة Floating Point ) ــ حجمه 4 Byte ــ مداه من 3.402823E38- إلي -1.401298E-45 (قيم سالبة) و من 1.401298E-45 إلي 3.402823E38 (قيم موجبة) نوع المتغير Double : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية عائمة) ــ حجمه 8 Byte ــ مداه رقم هائل نوع المتغير Currency : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية ثابتة ) ــ حجمه 8 Byte ــ مداه رقم هائل نوع المتغير Byte : عدد صغير جدا أو بيانات ثنائية ــ حجمه 1 Byte ــ مداه من الصفر إلي 255 نوع المتغير Boolean : متغير منطقي يحمل قيمتان فقط صفر أو واحد . أو True or False ــ حجمه 2 Byte نوع المتغير Data : يحمل قيم تاريخه و وقت وهو من نفس نوع المتغير Double ــ حجمه 8 Byte ــ مداه من التاريخ 1 يناير 100 إلي 31 ديسمبر 9999 ومن الساعة 00:00:00 إلي 23:59:59 نوع المتغير Object : كائنات أو فئات Classes نوع المتغير String : سلسلة من الحروف ــ مداه من صفر إلي 65500 حرف تقريبا نوع المتغير Variant : الوقت/التاريخ أو عدد ذو علامة عشرية عائمة أو سلسة حروف ــ حجمه 16 Byte ــ مداه التاريخ من 1 يناير 0000 إلي 31 ديسمبر 9999 وفي الأعداد مثل Double وفي الحروف مثل String الشروط الواجب توافرها عند اختيار اسم للمتغير يجب أن يبدأ اسم المتغير بحرف أبجدي وليس رقما يجب ألا يزيد عدد حروف اسم المتغير عن 40 حرفا يجب ألا يحتوي علي أي مسافات أو نقاط وإذا كان اسم المتغير يحتوي علي كلمتين فأنصحك باستخدام (_) Under Score للفصل بينهما أو كتابة اول حرف كبير من كل مقطع مثل strFullNme يجب أيضا إلا يتضمن كلمة من الكلمات المحجوزة وهي الكلمات التي تستخدم في الأوامر و العبارات التي تستخدمها لغة البرمجة فمثلا لا يسمح باستخدام كلمة Print كاسم للمتغير فإذا احتجت لتسمية متغير مثل كلمة Print فيمكنك أن تكتب الكلمة كجزء من اسم المتغير doPrint مثلا يفضل الإعلان عن نوع المتغير لزيادة سرعة التعامل معه المتغيرات التي لم تحدد نوعها يتم الإعلان عنها تلقائيا من النوع Variant وهو أبطأ أنواع المتغيرات يوجد نوعان من المتغير من النوع String وهي متغيرات ثابتة الطول Fixed Length و متغيرات متغيرة الطوال Variable Length المتغيرات الحرفية ثابتة الطوال وكما واضح من اسمها هي متغيرات محدد لها عدد الحروف في أثناء التصريح عنها ولا يمكن أن يتغير طولها وتكون بصورة التالية : Dim txtxMsg As String * 7 txtxMsg = "منتديات أوفيسنا" MsgBox txtxMsg لن تحصل من الرسالة إلا علي كلمة منتديات فقط لأنها تتكون من سبع أحرف وهو الرقم الذي تم تحديده أثناء التصريح عن المتغير و المتغيرات الحرفية متغيرة الطول تستخدم في حالة عدم معرفتك بطول المتغير المشار إليها ومن عيوبها إنها تلتهم حجم كبير جدا من الذاكرة كيفية الإعلان عن المتغيرات : عند استخدام المتغير في فيجول بيسك فأن فيجول بيسك تتعرف علي المتغير بمجرد استخدامه في الكود وهذه الطريقة مريحة لأنك لان تحتاج إلي تعريف كل متغير قبل استخدامه i = 100 txtVal=i إلا إنها يعاب عليها شئ خطير جدا وهو انك إذا أخطأت في كتابة اسم المتغير فأن لغة البرمجة سوف تعتبره متغيرا جديدا فمثلا إذا أنشأنا متغيرا مثل هذا .. i = 100 MsgBox ii و هنا أخطأنا في كتابة اسم المتغير بكتابة ii بدلا من i و لحل هذه المشكلة يستوجب الإعلان عن المتغير بأمر Dim مثلا .. ( سنتكلم عن أوامر الإعلان عن المتغيرات لاحقا ) Dim i As Integer ولجعل لغة البرمجة لا تستخدم متغيرا إلا قبل الإعلان عنه أو بمعني أصح يجبرك للإعلان عن كل متغير تستخدمه يتم كتابة هذه العبارة في قسم التصاريح العامة General Declaration بإظهار رسالة خطأ فى حالة إستخدام متغير بدون الإعلان عنه Option Explicit ولجعل هذه العبارة تكتب تلقائيا في كل البرنامج من قائمة Tools اختر أمر Options وضع علامة صح في صندوق الاختيار أمام عبارة Require Variable Declarations من صفحة Editor أي طلب الإعلان عن أي متغير قبل استخدامه علمنا ألان فائدة الإعلان عن المتغيرات و المشاكل التي تترتب عليها إذا لم نعلن عن أي متغير نضيفه في برنامجنا ولكن السؤال هنا الذي يطرح نفسه هو كيف نعلن عن المتغيرات وما هي أوامر الإعلان وهذا يذكرني بمن تعلم القراءة والكتابة ولكنه لا يعلم شئ عن قواعد النحو التي سوف تجعلة قادرا على صياغة جمل صحيحة و حتي نتحكم في المتغيرات بشيئا من الفاعلية أكثر يجب أن نتعرف علي أوامر الإعلان عنها حتى يمكننا الإعلان عن المتغير بشكل سليم واستغلال الذاكرة بشكل أفضل أوامر الإعلان عن المتغيرات : أمر الإعلان Dim : يستخدم لتعريف متغير ديناميكي Dynamic Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الأجراء أي أن عندما ينتهي الأجراء ينتهي معه مفعول المتغير المحلي ويصبح لا قيمة له أو صفر ولهذا سمي أمر الإعلان هذا بديناميكية لأنه يوفر في الذاكرة بشكل جيد أمر الإعلان Redim : تستخدم لتعريف مصفوفة ديناميكية Dynamic Array غير معرفة لعدد العناصر أي يمكنك تغير أبعادها أثناء عمل البرنامج ويعمل أمر الإعلان Redim عندما ترغب في تحديد حجم المصفوفة وتظهر الفائدة من أمر الإعلان Redim في استغلال الجزء المطلوب فقط من الذاكرة دون زيادة وأمر الإعلان هذا يجعلنا ندخل إلي عالم آخر وهو عالم المصفوفات وإذا تكلمنا عن المصفوفات في هذا الجزء الصغير فبذلك نكون قد لا نوفيها حق قدرها أمر الإعلان Static : يستخدم لتعريف متغير ستاتيكي Static Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الوحدة التي بداخلها الأجراء سواء كانت الوحدة هذه Form أو Module أو Class أي أن عندما ينتهي الأجراء يظل المتغير ساكن في الذاكرة وكذلك قيمته موجودة ولكنك لا يمكنك الوصول إلية ألا من داخل الأجراء التابع له . نصيحة : حاول أن لا تكثر من استخدام أمر الإعلان Static ألا في أضيق الحدود لأنه يستغل الذاكرة طوال فترة عمل البرنامج أمر الإعلان Private : يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي الوحدة سواء كانت Form أو فئة Class وبالطبع عمرة يكون من عمر الوحدة أمر الإعلان Public : يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي المشروع ككل ويمكن الوصول إليه من جميع الوحدات الموجودة في المشروع وعمرة من عمر البرنامج ككل ويظل في الذاكرة حتى ينتهي البرنامج أمر الإعلان Global : أمر الإعلان أو الكلمة المحجوزة Global كانت تستخدم في الإصدارات القديمة للفيجول بيسك ومازالت حتى الآن تستخدم وهي تؤدي نفس وظيفة أمر الإعلان Public ولكنك لن تستطيع التصريح عنها ألا في الوحدات النمطية فقط الإعلان بإضافة رمز مميز : تستخدم هذه الطريقة في نوع أي متغير وذلك بإضافة حرف معين إلي اسم المتغير و هذه الطريقة تسهل عليك معرفة نوع المتغير المستخدم مع اسم المتغير و الجدول التالي يبين شكل هذه الأحرف و النوع المقابل لها الرمز الدال عليه نوع المتغير % Integer & Long ! Single # Currency @ Double $ String مثال Dim i As Integer i% = 100 MsgBox i الإعلان باستخدام الوظيفة AS : وهنا تفيد الوظيفة AS في تميز نوع المتغير الذي يأتي بعد الوظيفة AS مع أحد الأوامر Dim, Static, Global, Private, Public حيث يتم كتابة الأمر ثم اسم المتغير ثم كتابة الوظيفة AS ثم كتابة نوع المتغير انظر المثال التالي Dim strJudy AS String يعلن عن متغير strJudy من نوع String ( سلسة من الحروف ) أوامر الإعلان السابق ذكرها هي تعتبر ضمن الكلمات المحجوزة مثل الجملة Option Explicit أو أمر Print والكلمات المحجوزة هي الكلمات التي يحتفظ بها الفيجول بيسك لنفسه ولا يمكنك استخدامها كاسم للمتغير أو للثابت الإعلان باستخدام أمر تعريف دالة : في هذه الطريقة يتم استخدام أحد الأوامر التالية : ( CCur , CLng , CDbl , Clnt, CStr , CSng, Cvar) للأنواع الآتية علي التوالي. Currency , Long , Double , Integer , String , Single , Variant وعند كتابة أي حرف بعد أي من هذه الأوامر تتحول كل المتغيرات التي تبدأ بهذه الأحرف إلي نفس النوع المعلن عنه في الأوامر المستخدم وطالما تتطرقنا الى الي تلك الجزئية نتكلم عن دوال التحويل دوال التحويل Type Conversion Function : هي التي تستخدم في تحويل البيانات من نوع الي نوع مختلف مثال Dim intJudy As Integer intJudy = 5 + 5 MsgBox intJudy القيمة هنا = 10 اما ان ان كان المثال بالشكل الأتى Dim intJudy As Integer intJudy = "5" + "5" MsgBox intJudy تصبح علامة الـ + أداة ربط وليست أدة جمع وتربط السلستان النصيتان وكأنها & فنجد النتيجة هنا = 55 ولاستخدام دوال التحويل لنحصل على القيمة الصحيحة تكون كما فى المثال الأتي Dim intJudy As Integer intJudy = CInt("5") + CInt("5") MsgBox intJudy الان تم تحويل السلستان النصيتان الى أعداد ونحصل الناتج = 10 وهذا شرح وامثلة مفصلة من موقع مايكروسوفت Bool Boolean Any valid string or numeric expression. CByte Byte 0 to 255. CCur Currency -922,337,203,685,477.5808 to 922,337,203,685,477.5807. CDate Date Any valid date expression. CDbl Double -1.79769313486231E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values. CDec Decimal +/-79,228,162,514,264,337,593,543,950,335 for zero-scaled numbers, that is, numbers with no decimal places. For numbers with 28 decimal places, the range is +/-7.9228162514264337593543950335. The smallest possible non-zero number is 0.0000000000000000000000000001. CInt Integer -32,768 to 32,767; fractions are rounded. CLng Long -2,147,483,648 to 2,147,483,647; fractions are rounded. CSng Single -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values. CStr String Returns for CStr depend on the expression argument. CVar Variant Same range as Double for numerics. Same range as String for non-numerics. Query examples Expression Results SELECT SalePrice,FinalPrice,CBool(SalePrice>FinalPrice) AS Expr1 FROM productSales; Returns "SalePrice", "FinalPrice" and evaluates if SalePrice is greater than Final Price. Returns "-1" if true and "0" if false. SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "Quantity" field to bytes format and displays in column Expr1 Returns "ProductID",converts the values in "Quantity" field to Currency format and displays in column Expr1. SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "DateofSale" field into Date format and displays in column Expr1. SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "Discount" field into Double format and displays in column Expr1. SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "Discount" field into Integer format and displays in column Expr1. SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "Discount" field into Long format and displays in column Expr1. SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "Discount" field into Single format and displays in column Expr1. SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "Discount" field into String format and displays in column Expr1. SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; Returns "ProductID",converts the values in "Discount" field into Double for numeric values and String for Non-numeric values. VBA examples Note: Examples that follow demonstrate the use of this function in a Visual Basic for Applications (VBA) module. For more information about working with VBA, select Developer Reference in the drop-down list next to Search and enter one or more terms in the search box. CBool Function Tip: The Expression Builder with IntelliSense beginning in Access 2010 helps with getting your expressions right. This example uses the CBool function to convert an expression to a Boolean. If the expression evaluates to a nonzero value, CBool returns True; otherwise, it returns False. Dim A, B, Check A = 5: B = 5 ' Initialize variables. Check = CBool(A = B) ' Check contains True. A = 0 ' Define variable. Check = CBool(A) ' Check contains False. CByte Function This example uses the CByte function to convert an expression to a Byte. Dim MyDouble, MyByte MyDouble = 125.5678 ' MyDouble is a Double. MyByte = CByte(MyDouble) ' MyByte contains 126. CCur Function This example uses the CCur function to convert an expression to a Currency. Dim MyDouble, MyCurr MyDouble = 543.214588 ' MyDouble is a Double. MyCurr = CCur(MyDouble * 2) ' Convert result of MyDouble * 2 (1086.429176) to a ' Currency (1086.4292). CDate Function This example uses the CDate function to convert a string to a Date. In general, hard-coding dates and times as strings (as shown in this example) is not recommended. Use date literals and time literals, such as #2/12/1969# and #4:45:23 PM#, instead. Dim MyDate, MyShortDate, MyTime, MyShortTime MyDate = "February 12, 1969" ' Convert to Date data type. MyShortDate = CDate(MyDate) MyTime = "4:35:47 PM" ' Convert to Date data type. MyShortTime = CDate(MyTime) CDbl Function This example uses the CDbl function to convert an expression to a Double. Dim MyCurr, MyDouble MyCurr = CCur(234.456784) ' Convert result to a Double. MyDouble = CDbl(MyCurr * 8.2 * 0.01) CDec Function This example uses the CDec function to convert a numeric value to a Decimal. Dim MyDecimal, MyCurr MyCurr = 10000000.0587 ' MyCurr is a Currency. MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal. CInt Function This example uses the CInt function to convert a value to an Integer. Dim MyDouble, MyInt MyDouble = 2345.5678 ' MyDouble is a Double. MyInt = CInt(MyDouble) ' MyInt contains 2346. CLng Function This example uses the CLng function to convert a value to a Long. Dim MyVal1, MyVal2, MyLong1, MyLong2 MyVal1 = 25427.45 MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles. MyLong1 = CLng(MyVal1) ' MyLong1 contains 25427. MyLong2 = CLng(MyVal2) ' MyLong2 contains 25428. CSng Function This example uses the CSng function to convert a value to a Single. Dim MyDouble1, MyDouble2, MySingle1, MySingle2 ' MyDouble1, MyDouble2 are Doubles. MyDouble1 = 75.3421115: MyDouble2 = 75.3421555 MySingle1 = CSng(MyDouble1) ' MySingle1 contains 75.34211. MySingle2 = CSng(MyDouble2) ' MySingle2 contains 75.34216. CStr Function This example uses the CStr function to convert a numeric value to a String. Dim MyDouble, MyString MyDouble = 437.324 ' MyDouble is a Double. MyString = CStr(MyDouble) ' MyString contains "437.324". CVar Function This example uses the CVar function to convert an expression to a Variant. Dim MyInt, MyVar MyInt = 4534 ' MyInt is an Integer. MyVar = CVar(MyInt & "000") ' MyVar contains the string 4534000. علاقة المصفوفات بالمتغيرات : المصفوفات هي في حد ذاتها عبارة عن سلسلة من المتغيرات لها نفس الاسم ولكن يكون لها رقم وهنا تختلف عن المتغيرات بوجود هذا الرقم الذي يوفر لك الوقت و الجهد إليك توضيح أكثر إذا أردت تصميم برنامج لشئون الموظفين بشركتك بدون استخدام المصفوفات وبفرض أن عدد الموظفين في شركتك 50 موظف فان الحل باستخدام المتغيرات العادية يتطلب الإعلان عن 50 متغير ثم تكرار الأوامر التي تتعامل مع الموظفين الخمسين ولا شك أن هذه مسألة شاقة ومطولة أما الحل الامثل في هذه الحالة فهو استخدام مصفوفة تتكون من 50 عنصر و الصيغة التي تحقق هذا الغرض لهذه المصفوفة كما يلي : Private strEmbNames(49) As String مدى استخدام المتغير وعمرة Lifetime and Scope of Variable : ويقصد بمدي استخدام المتغير Scope Of Variable أي الأماكن التي يستخدم فيها هذا المتغير داخل البرنامج والإجراءات و الوحدات النمطية التي ستتأثر به أما عمر المتغير Lifetime Of Variable فيقصد به المدة التي سيبقي المتغير خلالها محتفظا بقيمته الحالية داخل الذاكرة دون أن يفقدها وتنقسم المتغيرات من حيث مدة بقائها في الذاكرة ومداها إلي متغيرات عامة متغيرات علي مستوي الوحدة النمطية متغيرات علي مستوي الأجراء وفيما يلي نوضح كل نوع من هذه الأنواع الثلاثة والأمر الذي يستخدم للإعلان عنه - المتغيرات العامة هي المتغيرات التي يمكنك استخدامها من أي مكان داخل البرنامج أو التطبيق وتبقي في ذاكرة الحاسب طوال فترة عمل البرنامج فإذا انتهي البرنامج تحذف من الذاكرة ولذلك يجب أن يعلن عن المتغير العام من خلال الوحدة النمطية لكي تتعرف عليه جميع الإجراءات الموجودة في جميع الوحدات النمطية بالبرنامج أو التطبيق يستخدم الأمر Public للإعلان عن المتغيرات العامة في المثال التالي يتم الإعلان عن متغير عام لكي تستخدمه جميع الإجراءات في جميع الوحدات النمطية من نوع Integer واسمه intJudy Public intJudy AS Integer - المتغيرات علي مستوي الوحدة النمطية بإمكانك الإعلان عن متغير وتقيده علي مستوي وحدة نمطية في هذه الحالة لن تستطيع استخدام المتغير إلا من خلال الوحدة النمطية التي أعلنت عنه فيها ولن تستطيع استخدامه خارجها فترة عمل هذا النوع من المتغيرات هي أيضا فترة عمل البرنامج أي الفرق بينها وبين المتغيرات العامة هو في المدى الذي تستخدم فيه فقط للإعلان عن متغير من هذا النوع يستخدم الأمر Private بدلا من الأمر Public في المثال التالي يتم الإعلان عن متغير من نوع String واسمه strJudy لكي يستخدم فقط مع الوحدة النمطية التي يوجد بها Private strJudy As String وهذا الأمر يمكن إدخاله من خلال الأجراء لإدخال الأمر علي مستوي الوحدة النمطية استخدامه بنفس الطريقة التي تستخدمها للإعلان عن المتغير العام مع فارق واحد وهو استخدام أمر Private بدلا من أمر Public - المتغيرات علي مستوي الأجراء يقتصر مدي هذه المتغيرات علي الأجراء الموجودة به فقط ولا يمكن استخدامه في أي مكان غيرة وهي بهذا تعتبر اقل المتغيرات مدي من حيث عمرها فهي تبقي موجودة بالذاكرة حتى بعد أن ينتهي الأجراء الذي أعلن فيه عنها وبذلك يتضح أن الفرق بين هذه المتغيرات و المتغيرات العامة أو المتغيرات علي مستوي الوحدة النمطية في مداها فقط حيث لا يتعدى مداها الأجراء الذي أعلن عنها فيه يستخدم لهذا الغرض الأمر Static ويتضح ذلك من المثالين التالين المثال الأول يظهر المتغير intJudy محتفظا بقيمته فترة تنفيذ الأجراء Load Form وبمجرد الخروج من الأجراء ستكون قيمته تساوي صفر Private Sub Form_Load() Dim intJudy As Integer intJudy = 5 End Sub المثال الثاني المتغير سيحتفظ بقيمته بعد تنفيذ نفس الأجراء السابق Private Sub Form_Load() Static intJudy As Integer intJudy = 5 End Sub يوفر عليك مدي المتغيرات وعمرها استهلاك مساحة من الذاكرة بدون داع فمثلا إذا كنت تريد استخدام متغير في أكثر من وحدة نمطية فيجب أن تعلن عنه كمتغير عام بالأمر Public وإذا كنت تحتاج للمتغير في وحدة نمطية واحدة فقط استخدم الأمر Private للإعلان عنه أما إذا كنت تحتاج للمتغير مؤقتا في هذا الأجراء فقط استخدم أمر Static ليبقي مداه داخل الأجراء فقط مستويات الإعلان عن المتغيرات : في القسم العام لملفات البرمجة Dim عام ، Private عام ، Public شامل ، Global شامل في القسم العام للنوافذ Dim عام ، Private عام ، Public عام داخل إجراءات الملفات Dim ساكن داخل إجراءات النوافذ Dim محلي ، Static ساكن المصطلحات : - شامل : عام لجميع نوافذ البرنامج وملفاته - عام : عام لجميع إجراءات النافذة أو الملف الذي تم الإعلان داخلها ( الشامل أعم ) - المحلي والساكن : كلا منهما خاص بالإجراء الذي تم الإعلان داخله الفرق بين المحلي والساكن : - المتغير المحلي يفقد قيمته عند الخروج النهائي من الإجراء - الساكن يحتفظ بقيمته طوال مدة تشغيل البرنامج تسمية الثابت : يخضع اسم الثابت لنفس الشروط التي شرحناها عند اختيار اسم المتغير وهي ألا يزيد عدد حروفه عن 40 حرف يبدأ بحرف هجائي وألا يستخدم إحدى الكلمات المحجوزة للغة البرمجة مدي الثوابت : تتبع الثوابت نفس القواعد التي تحدد مدي المتغيرات حيث يحدد مدي الثابت بالمكان الذي تعلن فيه عن هذا الثابت وتوضيح ذلك كما يلي . ثوابت عامة : إذا أردت أن يكون الثابت عاما أي يمكن استخدامه من أي مكان في البرنامج فيجب أن تعلن عنه في الوحدة النمطية بشرط أن يسبق الإعلان عنه كلمة Public هكذا Public Const strAppName As String = "Officena" ثوابت علي مستوي الوحدة النمطية : لكي تستخدم الثابت في وحدة نمطية فقط يجب أن تعلن عنه في قسم الإعلانات في هذه الوحدة النمطية تسبقه كلمه Private هكذا Private Const Copyright As Integer = 2020 ثوابت علي مستوي الأجراء : لكي تستخدم الثابت مؤقتا داخل إجراء معين أعلن عن الثابت داخل هذا الإجراء بنفس الطريقة السابقة و نكتشف من الكلام السابق أن الثوابت مشابه إلي حد كبير للمتغيرات في طريقة الإعلان عنها بأمر الإعلان Const أو حتى الإعلان عن نوع الثابت لزيادة سرعة التعامل معه وأيضا مجال رؤية الثابت وعمرة وللثوابت أنواع منها ثوابت عددية وثوابت حرفيه String وللإعلان عن ثابت حرفي يجب وضعة بين علامتي تنصيص " " الإعلان عن الثوابت : يتم الإعلان عن الثوابت باستخدام( Const ) أو ( Public Const ) مستوى الإعلان : - إذا تم الإعلان داخل إجراء يعتبر الثابت المعلن عنه محليا Const Copyright=2021 - وإذا تم الإعلان في القسم العام للنافذة يصبح عاما لجميع إجراءات تلك النافذة Const Copyright=2021 - وإذا تم الإعلان في القسم العام للملف يصبح عاما لجميع إجراءات ذلك الملف Const Copyright=2021 - أما إذا تم الإعلان في القسم العام للملف - كما سبق - لكن سبقت كلمة Const بكلمة Public فسيصبح الثابت شاملا لجميع ملفات البرنامج ونوافذه يتم الإعلان عن الثابت الشامل هكذا Public Const Copyright = 2021 الثوابت و : API كلنا نعرف مكتبات الربط الديناميكي Dynamic Link Libraries >>---> DLL و الفائدة الكبيرة التي نستفيد منها في برامجنا من التوابع ( الدوال ) و التي يطلق عليها واجهة برمجة التطبيقات Application Programming Interface >>---> API ولكن عند استخدام هذه التوابع يوجد بعض الثوابت التي يجب تمريرها لهذه التوابع لتقوم بعملها المطلوب منها علي أكمل وجهه القاعدة الذهبية تقول أن لكل دالة من دوال API لها ثوابت خاصة بها انظر المثالي التالي : يصرح بهذه الدالة في قسم التصاريح العامة : Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long Const BtnOK = 0 اكتب هذا الكود في حدث عند النقر لزر الأمر MessageBox 0&, "Hallow Officena", "Mohammed Essam", BtnOK الكود السابق هو كود بسيط لعرض رسالة عن طريق توابع الــ API في البداية عملنا علي التصريح بالدالة في قسم التصاريح العامة بأمر الإعلان Private وبعد ذلك صرحنا عن ثابت وهو ثابت واسم الثابت BtnOK وبالطبع لك مطلق الحرية في تسمية الثابت كما تعلمنا سابقا والخطوة الثانية العمل علي تمرير الثابت ليؤدي وظيفته المطلوبة منه في حدث عند النقر لزر الأمر أو في أي حدث تريده ووظيفة هذا الثابت هي إظهار الزر موافق vbOkOnly للرسالة تقريبا هذه أسس وثوابت البدء فى كتابة الروتين الخاص بك بطريقة صحيحة وما يأتى بعد ذلك هو تفصيل لما يدور بخيالك كمبرمج
    2 points
  8. حيث انك لم ترفع ملف للمعاينة و من باب التكهن بما تريد اقترح لك هذا الملف degree.xlsm
    2 points
  9. السلام عليكم ورحمة الله وبركاته اضافة .. لا اكثر .. لا تحتاج الى فورم للبحث من خلاله .. ممكن البحث عن طريق .. مسلسل القيد او كود الملف او بين تاريخين او اسم العميل او اسم الفندق .. اتمنى ان تكون اضافة مقبولة .. بعد اذن اخوي العزيز سليم .. SEARCH.xlsm
    2 points
  10. Workbooks("ااسم الملف بالامتدات").Sheets("اسم الورقة") وكمل زي ما انته عايز
    2 points
  11. اتمني يكون المطلوب فاتورة(5).xlsm
    2 points
  12. وعليكم السلام مشاركة مع اساتذتى الافاضل دى جملة السيكول بعد التحويل بالمحول المرفق من الاستاذ مهتدى جزاهم الله كل خير هو واستاذنا العزيز مصلح ولو نظرت هتلاقى ان الاستاذ جعفر جزاه الله خيرا اداك نفس الاجابه من الاول ويمكن استخدام كذلك طريقه اخرى مظلله بالاخضر بالكود بالمرفق Dim strSQL As String strSQL = "INSERT INTO " & "[" & y & "]" & " ( [Full Name]" & vbCrLf strSQL = strSQL & " , 2" & vbCrLf strSQL = strSQL & " , 3" & vbCrLf strSQL = strSQL & " , 4" & vbCrLf strSQL = strSQL & " , 5" & vbCrLf strSQL = strSQL & " , 6" & vbCrLf strSQL = strSQL & " , 7" & vbCrLf strSQL = strSQL & " , 8" & vbCrLf strSQL = strSQL & " , 9" & vbCrLf strSQL = strSQL & " , 10" & vbCrLf strSQL = strSQL & " , 11" & vbCrLf strSQL = strSQL & " , 12" & vbCrLf strSQL = strSQL & " , 13" & vbCrLf strSQL = strSQL & " , 14" & vbCrLf strSQL = strSQL & " , 15" & vbCrLf strSQL = strSQL & " , 16" & vbCrLf strSQL = strSQL & " , 17" & vbCrLf strSQL = strSQL & " , 18" & vbCrLf strSQL = strSQL & " , 19" & vbCrLf strSQL = strSQL & " , 20" & vbCrLf strSQL = strSQL & " , 21" & vbCrLf strSQL = strSQL & " , 22" & vbCrLf strSQL = strSQL & " , 23" & vbCrLf strSQL = strSQL & " , 24" & vbCrLf strSQL = strSQL & " , 25" & vbCrLf strSQL = strSQL & " , 26" & vbCrLf strSQL = strSQL & " , 27" & vbCrLf strSQL = strSQL & " , 28" & vbCrLf strSQL = strSQL & " , 29" & vbCrLf strSQL = strSQL & " , 30" & vbCrLf strSQL = strSQL & " , 31" & vbCrLf strSQL = strSQL & " , 32" & vbCrLf strSQL = strSQL & " , 33" & vbCrLf strSQL = strSQL & " , 34" & vbCrLf strSQL = strSQL & " , 35" & vbCrLf strSQL = strSQL & " , 36" & vbCrLf strSQL = strSQL & " , 37" & vbCrLf strSQL = strSQL & " , 38" & vbCrLf strSQL = strSQL & " , 39" & vbCrLf strSQL = strSQL & " , 40" & vbCrLf strSQL = strSQL & " , 41" & vbCrLf strSQL = strSQL & " , 42" & vbCrLf strSQL = strSQL & " , 43" & vbCrLf strSQL = strSQL & " , 44" & vbCrLf strSQL = strSQL & " , 45" & vbCrLf strSQL = strSQL & " , 46" & vbCrLf strSQL = strSQL & " , 47" & vbCrLf strSQL = strSQL & " , 48" & vbCrLf strSQL = strSQL & " , 49" & vbCrLf strSQL = strSQL & " , 50" & vbCrLf strSQL = strSQL & " , 51" & vbCrLf strSQL = strSQL & " , 52" & vbCrLf strSQL = strSQL & " , 53" & vbCrLf strSQL = strSQL & " , 54" & vbCrLf strSQL = strSQL & " , 55" & vbCrLf strSQL = strSQL & " , 56" & vbCrLf strSQL = strSQL & " , 57" & vbCrLf strSQL = strSQL & " , 58" & vbCrLf strSQL = strSQL & " , 59" & vbCrLf strSQL = strSQL & " , 60" & vbCrLf strSQL = strSQL & " , 61" & vbCrLf strSQL = strSQL & " , 62" & vbCrLf strSQL = strSQL & " , 63" & vbCrLf strSQL = strSQL & " , 64" & vbCrLf strSQL = strSQL & " , 65" & vbCrLf strSQL = strSQL & " , 66" & vbCrLf strSQL = strSQL & " , 67" & vbCrLf strSQL = strSQL & " , 68" & vbCrLf strSQL = strSQL & " , [Sign On Date]" & vbCrLf strSQL = strSQL & " , 70" & vbCrLf strSQL = strSQL & " , 71" & vbCrLf strSQL = strSQL & " , 72" & vbCrLf strSQL = strSQL & " , 73" & vbCrLf strSQL = strSQL & " , 74" & vbCrLf strSQL = strSQL & " , 75" & vbCrLf strSQL = strSQL & " , 76" & vbCrLf strSQL = strSQL & " , 77" & vbCrLf strSQL = strSQL & " , 78" & vbCrLf strSQL = strSQL & " , 79" & vbCrLf strSQL = strSQL & " , 80" & vbCrLf strSQL = strSQL & " , 81" & vbCrLf strSQL = strSQL & " , 82" & vbCrLf strSQL = strSQL & " , 83" & vbCrLf strSQL = strSQL & " , 84" & vbCrLf strSQL = strSQL & " , 85" & vbCrLf strSQL = strSQL & " , 86" & vbCrLf strSQL = strSQL & " , 87" & vbCrLf strSQL = strSQL & " , 88" & vbCrLf strSQL = strSQL & " , 89" & vbCrLf strSQL = strSQL & " , 90" & vbCrLf strSQL = strSQL & " , 91" & vbCrLf strSQL = strSQL & " , 92" & vbCrLf strSQL = strSQL & " , 93" & vbCrLf strSQL = strSQL & " , 94" & vbCrLf strSQL = strSQL & " , 95" & vbCrLf strSQL = strSQL & " , 96" & vbCrLf strSQL = strSQL & " , 97" & vbCrLf strSQL = strSQL & " , 98" & vbCrLf strSQL = strSQL & " , 99" & vbCrLf strSQL = strSQL & " , 100" & vbCrLf strSQL = strSQL & " , 101" & vbCrLf strSQL = strSQL & " , 102" & vbCrLf strSQL = strSQL & " , 103" & vbCrLf strSQL = strSQL & " , 104" & vbCrLf strSQL = strSQL & " , 105" & vbCrLf strSQL = strSQL & " , 106" & vbCrLf strSQL = strSQL & " , 107" & vbCrLf strSQL = strSQL & " , 108" & vbCrLf strSQL = strSQL & " , 109" & vbCrLf strSQL = strSQL & " , 110" & vbCrLf strSQL = strSQL & " , 111" & vbCrLf strSQL = strSQL & " , 112" & vbCrLf strSQL = strSQL & " , 113" & vbCrLf strSQL = strSQL & " , 114" & vbCrLf strSQL = strSQL & " , 115" & vbCrLf strSQL = strSQL & " , 116" & vbCrLf strSQL = strSQL & " , 117" & vbCrLf strSQL = strSQL & " , 118" & vbCrLf strSQL = strSQL & " , 119" & vbCrLf strSQL = strSQL & " , 120" & vbCrLf strSQL = strSQL & " , 121" & vbCrLf strSQL = strSQL & " , 122" & vbCrLf strSQL = strSQL & " , 123" & vbCrLf strSQL = strSQL & " , 124" & vbCrLf strSQL = strSQL & " , 125" & vbCrLf strSQL = strSQL & " , 126" & vbCrLf strSQL = strSQL & " , 127" & vbCrLf strSQL = strSQL & " , 128" & vbCrLf strSQL = strSQL & " , 129" & vbCrLf strSQL = strSQL & " , 130" & vbCrLf strSQL = strSQL & " , 131" & vbCrLf strSQL = strSQL & " , 132" & vbCrLf strSQL = strSQL & " , 133" & vbCrLf strSQL = strSQL & " , 134" & vbCrLf strSQL = strSQL & " , 135" & vbCrLf strSQL = strSQL & " , 136" & vbCrLf strSQL = strSQL & " , 137" & vbCrLf strSQL = strSQL & " , 138" & vbCrLf strSQL = strSQL & " , 139" & vbCrLf strSQL = strSQL & " , 140" & vbCrLf strSQL = strSQL & " , 141" & vbCrLf strSQL = strSQL & " , 142" & vbCrLf strSQL = strSQL & " , 143" & vbCrLf strSQL = strSQL & " , 144 )SELECT [Full Name] " & vbCrLf strSQL = strSQL & " , [2]" & vbCrLf strSQL = strSQL & " , [3]" & vbCrLf strSQL = strSQL & " , [4]" & vbCrLf strSQL = strSQL & " , [5]" & vbCrLf strSQL = strSQL & " , [6]" & vbCrLf strSQL = strSQL & " , [7]" & vbCrLf strSQL = strSQL & " , [8]" & vbCrLf strSQL = strSQL & " , [9]" & vbCrLf strSQL = strSQL & " , [10]" & vbCrLf strSQL = strSQL & " , [11]" & vbCrLf strSQL = strSQL & " , [12]" & vbCrLf strSQL = strSQL & " , [13]" & vbCrLf strSQL = strSQL & " , [14]" & vbCrLf strSQL = strSQL & " , [15]" & vbCrLf strSQL = strSQL & " , [16]" & vbCrLf strSQL = strSQL & " , [17]" & vbCrLf strSQL = strSQL & " , [18]" & vbCrLf strSQL = strSQL & " , [19]" & vbCrLf strSQL = strSQL & " , [20]" & vbCrLf strSQL = strSQL & " , [21]" & vbCrLf strSQL = strSQL & " , [22]" & vbCrLf strSQL = strSQL & " , [23]" & vbCrLf strSQL = strSQL & " , [24]" & vbCrLf strSQL = strSQL & " , [25]" & vbCrLf strSQL = strSQL & " , [26]" & vbCrLf strSQL = strSQL & " , [27]" & vbCrLf strSQL = strSQL & " , [28]" & vbCrLf strSQL = strSQL & " , [29]" & vbCrLf strSQL = strSQL & " , [30]" & vbCrLf strSQL = strSQL & " , [31]" & vbCrLf strSQL = strSQL & " , [32]" & vbCrLf strSQL = strSQL & " , [33]" & vbCrLf strSQL = strSQL & " , [34]" & vbCrLf strSQL = strSQL & " , [35]" & vbCrLf strSQL = strSQL & " , [36]" & vbCrLf strSQL = strSQL & " , [37]" & vbCrLf strSQL = strSQL & " , [38]" & vbCrLf strSQL = strSQL & " , [39]" & vbCrLf strSQL = strSQL & " , [40]" & vbCrLf strSQL = strSQL & " , [41]" & vbCrLf strSQL = strSQL & " , [42]" & vbCrLf strSQL = strSQL & " , [43]" & vbCrLf strSQL = strSQL & " , [44]" & vbCrLf strSQL = strSQL & " , [45]" & vbCrLf strSQL = strSQL & " , [46]" & vbCrLf strSQL = strSQL & " , [47]" & vbCrLf strSQL = strSQL & " , [48]" & vbCrLf strSQL = strSQL & " , [49]" & vbCrLf strSQL = strSQL & " , [50]" & vbCrLf strSQL = strSQL & " , [51]" & vbCrLf strSQL = strSQL & " , [52]" & vbCrLf strSQL = strSQL & " , [53]" & vbCrLf strSQL = strSQL & " , [54]" & vbCrLf strSQL = strSQL & " , [55]" & vbCrLf strSQL = strSQL & " , [56]" & vbCrLf strSQL = strSQL & " , [57]" & vbCrLf strSQL = strSQL & " , [58]" & vbCrLf strSQL = strSQL & " , [59]" & vbCrLf strSQL = strSQL & " , [60]" & vbCrLf strSQL = strSQL & " , [61]" & vbCrLf strSQL = strSQL & " , [62]" & vbCrLf strSQL = strSQL & " , [63]" & vbCrLf strSQL = strSQL & " , [64]" & vbCrLf strSQL = strSQL & " , [65]" & vbCrLf strSQL = strSQL & " , [66]" & vbCrLf strSQL = strSQL & " , [67]" & vbCrLf strSQL = strSQL & " , [68]" & vbCrLf strSQL = strSQL & " , Date() AS SDate " & vbCrLf strSQL = strSQL & " , [70]" & vbCrLf strSQL = strSQL & " , [71]" & vbCrLf strSQL = strSQL & " , [72]" & vbCrLf strSQL = strSQL & " , [73]" & vbCrLf strSQL = strSQL & " , [74]" & vbCrLf strSQL = strSQL & " , [75]" & vbCrLf strSQL = strSQL & " , [76]" & vbCrLf strSQL = strSQL & " , [77]" & vbCrLf strSQL = strSQL & " , [78]" & vbCrLf strSQL = strSQL & " , [79]" & vbCrLf strSQL = strSQL & " , [80]" & vbCrLf strSQL = strSQL & " , [81]" & vbCrLf strSQL = strSQL & " , [82]" & vbCrLf strSQL = strSQL & " , [83]" & vbCrLf strSQL = strSQL & " , [84]" & vbCrLf strSQL = strSQL & " , [85]" & vbCrLf strSQL = strSQL & " , [86]" & vbCrLf strSQL = strSQL & " , [87]" & vbCrLf strSQL = strSQL & " , [88]" & vbCrLf strSQL = strSQL & " , [89]" & vbCrLf strSQL = strSQL & " , [90]" & vbCrLf strSQL = strSQL & " , [91]" & vbCrLf strSQL = strSQL & " , [92]" & vbCrLf strSQL = strSQL & " , [93]" & vbCrLf strSQL = strSQL & " , [94]" & vbCrLf strSQL = strSQL & " , [95]" & vbCrLf strSQL = strSQL & " , [96]" & vbCrLf strSQL = strSQL & " , [97]" & vbCrLf strSQL = strSQL & " , [98]" & vbCrLf strSQL = strSQL & " , [99]" & vbCrLf strSQL = strSQL & " , [100]" & vbCrLf strSQL = strSQL & " , [101]" & vbCrLf strSQL = strSQL & " , [102]" & vbCrLf strSQL = strSQL & " , [103]" & vbCrLf strSQL = strSQL & " , [104]" & vbCrLf strSQL = strSQL & " , [105]" & vbCrLf strSQL = strSQL & " , [106]" & vbCrLf strSQL = strSQL & " , [107]" & vbCrLf strSQL = strSQL & " , [108]" & vbCrLf strSQL = strSQL & " , [109]" & vbCrLf strSQL = strSQL & " , [110]" & vbCrLf strSQL = strSQL & " , [111]" & vbCrLf strSQL = strSQL & " , [112]" & vbCrLf strSQL = strSQL & " , [113]" & vbCrLf strSQL = strSQL & " , [114]" & vbCrLf strSQL = strSQL & " , [115]" & vbCrLf strSQL = strSQL & " , [116]" & vbCrLf strSQL = strSQL & " , [117]" & vbCrLf strSQL = strSQL & " , [118]" & vbCrLf strSQL = strSQL & " , [119]" & vbCrLf strSQL = strSQL & " , [120]" & vbCrLf strSQL = strSQL & " , [121]" & vbCrLf strSQL = strSQL & " , [122]" & vbCrLf strSQL = strSQL & " , [123]" & vbCrLf strSQL = strSQL & " , [124]" & vbCrLf strSQL = strSQL & " , [125]" & vbCrLf strSQL = strSQL & " , [126]" & vbCrLf strSQL = strSQL & " , [127]" & vbCrLf strSQL = strSQL & " , [128]" & vbCrLf strSQL = strSQL & " , [129]" & vbCrLf strSQL = strSQL & " , [130]" & vbCrLf strSQL = strSQL & " , [131]" & vbCrLf strSQL = strSQL & " , [132]" & vbCrLf strSQL = strSQL & " , [133]" & vbCrLf strSQL = strSQL & " , [134]" & vbCrLf strSQL = strSQL & " , [135]" & vbCrLf strSQL = strSQL & " , [136]" & vbCrLf strSQL = strSQL & " , [137]" & vbCrLf strSQL = strSQL & " , [138]" & vbCrLf strSQL = strSQL & " , [139]" & vbCrLf strSQL = strSQL & " , [140]" & vbCrLf strSQL = strSQL & " , [141]" & vbCrLf strSQL = strSQL & " , [142]" & vbCrLf strSQL = strSQL & " , [143]" & vbCrLf strSQL = strSQL & " , [144]" & vbCrLf strSQL = strSQL & " FROM " & "[" & x & "]" & " WHERE ([Full Name]='" & z & "');" DoCmd.RunSQL strSQL بالتوفيق New_1 (6).rar
    2 points
  13. استاذى ... حضرتك اعمل استعلام للكود المطلوب كتابتة ( وكان طويل ) ويمكنك تحويلة لجمل قصيرة يمكنك تنفيذها على شكل كود وذلك من خلال نسخ Sql وتحويلها كود ABA ... ثم نسخ كود للتنفيذ بداخل النماذج او التقارير .... ويارب الصور المرفقة تساعدك في تنفيذ ذلك ... بالتوفيق
    2 points
  14. بالاذن منكم ولاثراء الموضوع! Sub DeleteRow() Dim i As Long Dim lr As Long Dim rr As Range Dim rrr As Range lr = Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 8 Step -1 If Cells(i, 9) <> "VISUALISEUR" Then If rr Is Nothing Then Set rr = Cells(i, 9) Else Set rrr = Cells(i, 9) Set rr = Union(rrr, rr) End If End If Next rr.EntireRow.Delete End Sub
    2 points
  15. اخى الفاضل يمكنك إنشاء استعلام ونسخ جملة Sql وتحويلها الى جملة VBA ونسخها وتنفيذها على شكل كود من خلال أداه من ابدعات الاستاذ/ مصلح الحريص - منتديات الفريق العربي للبرمجة ... بالتوفيق _SQL_To_VBA.rar
    2 points
  16. وعليكم السلام-تفضل يمكنك استخدام هذا الكود Sub DeleteRow() Dim r As Long Dim FirstRow As Long Dim LastRow As Long FirstRow = 8 LastRow = Cells(Rows.Count, "I").End(xlUp).Row - 1 For r = LastRow To FirstRow Step -1 If Cells(r, "i") = "VISUALISEUR" Then Rows(r).Delete End If Next r End Sub VISUAL1.xlsm
    2 points
  17. جرب هذا الكود Option Explicit Sub Get_data() Dim M As Worksheet, J As Worksheet Dim LJ_A%, LM_A% Dim col% Dim RM As Range Set M = Sheets("المبيعات اليوميه") Set J = Sheets("اجمالى المبيعات") col = 5 LM_A = M.Cells(Rows.Count, 1).End(3).Row If LM_A = 1 Then Exit Sub LJ_A = J.Cells(Rows.Count, 1).End(3).Row + 1 Set RM = M.Range("A2:E" & LM_A) J.Range("a" & LJ_A).Resize(LM_A - 1, col).Value = _ RM.Value M.Range("A2:E30").ClearContents M.Range("B2:B30").Formula = _ "=IF(A2="""","""",VLOOKUP(A2,aly,2,0))" End Sub الملف مرفق Ali_Hasn.xlsm
    2 points
  18. وعليكم السلام 🙂 للعلم ، هذا اللي انت كتبته يسمى جملة SQL ، والحد الاقصى لعدد الحروف لهذه الجملة هو 64,000 حرف ، سواء كتبتها في الكود او في الاستعلام 🙂 اما حل مشكلتك ، فيمكن ان تكون كالتالي: dim mySQL as string mySQL = "[Full Name], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22]," mySQL = mySQL & "[23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42]," mySQL = mySQL & "[43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55], [56], [57], [58], [59], [60], [61], [62]," mySQL = mySQL & "[63], [64], [65], [66], [67],[68], [70], [71], [72], [73], [74], [75], [76], [77], [78], [79], [80], [81], [82], [83]," mySQL = mySQL & "[84], [85]" جملة mySQL ممكن ان تحتوي على بيانات بحجم حوالي 2 جيجا 🙂 جعفر
    2 points
  19. برنامج الموارد البشرية HR "مفتوح المصدر" يحتوى على التالي : -بيانات الموظف . -الإجازات . - الأذنونات . - تسجيل الحضور يدوياً . - الخصومات . - السلف . - المكافأت . - تقيييم الموظف . - ساعات إضافية . - تقارير. - متابعة الحضور والانصراف . - تسجل الحضور والانصراف بشكل آلي . - تسجل الحضور بشكل يدوي . وخيارات أخرى . وهذا البرامج من تطويري وجدت جداوله في موقع خارجي . لا تنسونا من خالص الدعاء ،،، HR.rar
    1 point
  20. صديقي الغالي عبدالله الصاري اولا اشكرك علي مجهودك العظيم ولكن كنت اتمني ان يتم الترحيل من كشف الحساب الي المصنف وليس العكس بمعني اخر بدل الاستدعاء يكون ترحيل
    1 point
  21. افتح المصننف1 واضغظ على زر استدعاء الملفان يجب ان يكونا في ملف واحد كشف حساب.xlsm المصنف1.xlsb
    1 point
  22. تعديل رائع و ماذا تريد أكثر من ذلك ؟؟؟؟ لا افهم!.... يجب تغير اتجاه اليوزر (من اليمين لليسار) لتخرج البيانات مرتبة حسب اللغة العربية الصورة الملف مرفق Yasser_R_to_L.xlsm
    1 point
  23. ما هي الصفحة التي تريد ترجيلها الى ملف اكسل احر او الى ملفpdf
    1 point
  24. ألف شكر .... سأقوم بتجريب هذا الكود و أتوقع الوصول إلى ما أريد ان شاء الله
    1 point
  25. الكود به خطأ هو ايه المطلوب من الكود
    1 point
  26. @احمد الفلاحجي مش عارف اشكر حضرتك ازاي ربنا يكرمك ويجعله في ميزان حسناتك الف شكر جزاك الله كل خير ودامك سند لاخوتك @مهتدي الف شكر لمجهود حضرتك ربنا يجازيك خير الجزاء
    1 point
  27. رائع اخى ابو القاسم ان شاء الله ينتظرك مستقبل رائع
    1 point
  28. اتمني يكون المطلوب ملف التوازيع (1).xlsm
    1 point
  29. بارك الله في حضرتك أستاذ : سليم حاصبيا تم تنفيذ ما تفضلتك به علي والملف يعمل بكفاءة بفضل الله ثم بفضل مجهودكم العظيم . شكرا لحضرتك ولفريق العمل وكل القائمين على المنتدى
    1 point
  30. أخي الفاضل، البيانات موجودة بالفعل في الجدول، فك الفلتر هتلاقي الأرقام والمبالغ موجودة
    1 point
  31. على العموم هذا موديول يقوم بعمل تصدير لكل شئ من قاعدة الى اخرى يمكنك تعديل ما تريد حسب احتياجاتك Public Sub ExpObj2ExtDb(sExtDb As String) On Error GoTo Error_Handler Dim qdf As QueryDef Dim tdf As TableDef Dim obj As AccessObject ' Forms. For Each obj In CurrentProject.AllForms DoCmd.TransferDatabase acExport, "Microsoft Access", sExtDb, _ acForm, obj.Name, obj.Name, False Next obj ' Macros. For Each obj In CurrentProject.AllMacros DoCmd.TransferDatabase acExport, "Microsoft Access", sExtDb, _ acMacro, obj.Name, obj.Name, False Next obj ' Modules. For Each obj In CurrentProject.AllModules DoCmd.TransferDatabase acExport, "Microsoft Access", sExtDb, _ acModule, obj.Name, obj.Name, False Next obj ' Queries. For Each qdf In CurrentDb.QueryDefs If Left(qdf.Name, 1) <> "~" Then 'Ignore/Skip system generated queries DoCmd.TransferDatabase acExport, "Microsoft Access", sExtDb, _ acQuery, qdf.Name, qdf.Name, False End If Next qdf ' Reports. For Each obj In CurrentProject.AllReports DoCmd.TransferDatabase acExport, "Microsoft Access", sExtDb, _ acReport, obj.Name, obj.Name, False Next obj ' Tables. For Each tdf In CurrentDb.TableDefs If Left(tdf.Name, 4) <> "MSys" Then 'Ignore/Skip system tables DoCmd.TransferDatabase acExport, "Microsoft Access", sExtDb, _ acTable, tdf.Name, tdf.Name, False End If Next tdf Error_Handler_Exit: On Error Resume Next Set qdf = Nothing Set tdf = Nothing Set obj = Nothing Exit Sub Error_Handler: MsgBox "The following error has occurred." & vbCrLf & vbCrLf & _ "Error Number: " & Err.Number & vbCrLf & _ "Error Source: ExpObj2ExtDb" & vbCrLf & _ "Error Description: " & Err.Description, _ vbCritical, "An Error has Occurred!" Resume Error_Handler_Exit End Sub ويتم التصدير من خلال الكود الاتى ExpObj2ExtDb ("D:\db.accdb") طبعا تغير المسار واسم القاعدة مع الامتداد طبقا للقاعدة التى تريد التصدير اليها وممكن تعمل كود يقوم بسؤال عن مكان القاعدة ليقوم هو بذلك بالنيابة عنك انت وافكارك
    1 point
  32. بالعكس اخوي العزيز يتغير التاريخ عندي .. احتمال يكون اصدار الاوفيس شو اللي يظهر عندك من نتائج .. اخوي العزيز يعني اخوي .. المفروض تبحث عن النتائج التي موجوده عندك .. في الجدول ..
    1 point
  33. بالعودة للكود الأول يمكن تعديله Sub test() Dim ar As Range Dim sh As Worksheet Dim i As Long For i = 1 To Sheets.Count If Sheets(i).Name <> "TOTAL" Then Set sh = Sheets(i) For Each ar In sh.Cells(3, 3).Resize(26).SpecialCells(xlConstants).Areas ar.Offset(, -1) = ar.Offset(, 1).Value ar.Value = 0 Next End If Next End Sub
    1 point
  34. 1 point
  35. بارك الله بك استاذ صالح برنامج لطيف جداً ومجهود رائع ملاحظة اخوك الصغير هي ان فواتير المرتجع مو راهمة وية البرنامج لان الناس ماترجع اكل وخصوصاً اذا كان دجاج مندي ولك جزيل الشكر على الهدية القيمة
    1 point
  36. المفروض ترفع مرفقا بالتقرير حتى يتم فحصه على كل حال تأكد من ان تفاصيل البيانات موجودة في القسم الصحيح من التقرير وهو قسم تفصيل التقرير
    1 point
  37. فكرة كمان Dim CountCharacter As Integer CountCharacter = 255 - Len(MytxtBox.Text) Me.txtCountAllCharacter = CountCharacter
    1 point
  38. مشكووور أخي husamwahab تمنياتي لك بالتوفيق .
    1 point
  39. بسم الله ماشاء الله شغل راقى بجد كده الاكسيس ممكن ينافس برنامج عملاقة بس ممكن النطق باللغة العربية و اظهار الرقم على الشاشة
    1 point
  40. السلام عليكم ورحمة الله وبركاته تفضل اخوي العزيز .. اختار اللي تبغيه .. المعادلة الاولى : =AGGREGATE(15,6,E4:E8/((H3=C4:C8))*(I3=D4:D8),1) الثانية =MINIFS(E4:E8,C4:C8,H3,D4:D8,I3) Book1.xlsx
    1 point
  41. استبدل بـ Sub test() Dim ar, arl As Range Dim sh As Worksheet Dim i As Long For i = 1 To Sheets.Count If Sheets(i).Name <> "TOTAL" Then Set sh = Sheets(i) For Each ar In sh.Cells(3, 4).Resize(26).SpecialCells(xlCellTypeFormulas, 1).Areas ar.Resize(ar.Count - 1).Offset(, -2) = ar.Value ar.Resize(ar.Count - 1).Offset(, -1) = 0 Set arl = ar Next arl.Resize(1).Offset(arl.Count - 2).AutoFill Destination:=arl.Resize(1, 2).Offset(arl.Count - 2, -1) End If Next End Sub
    1 point
  42. جرب هذا الملف تضع في الخلية E1 اي رقم تريد وتطهر لك قائمة منسدلة من 1 حتى هذا الرقم في جال الجطأ الحلية E1 تساوي 1 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address(0, 0) = "E1" _ And Target.Count = 1 _ And Val(Target) > 0 Then If Target < 1 Then Target = 1 Target = Int(Target) Me.Range("E1") = Target Tajriba End If Application.EnableEvents = True End Sub '++++++++++++++++++++ Sub Tajriba() Dim Mon_Array, s Dim y%: y = Range("E1") s = "Row(" & 1 & ":" & y & ")" Mon_Array = Application.Transpose(Evaluate(s)) With Range("A1").Validation .Delete .Add 3, Formula1:=Join(Mon_Array, ",") End With Range("A1") = 1 End Sub Var_dat_val.xlsm
    1 point
  43. السلام عليكم بالمرفق طريقة التحديث والإضافة من جدولين باستخدام أكود Recordset كود التحديث : Dim i As Integer Dim ii As Integer Dim RC As Integer Dim RC1 As Integer Dim A2 As Variant Set rs = CurrentDb.OpenRecordset("Select * From Temp3") rs.MoveLast: rs.MoveFirst RC = rs.RecordCount For i = 1 To RC A2 = rs!f2 ' يجب أن يكون نوع الحقل المربط بين الجدولين رقم Set rst = CurrentDb.OpenRecordset("SELECT * From Temp4 WHERE ID =" & rs.ID & "") rst.Edit rst.ID = rs.ID rst.f1 = rs.f1 rst.f2 = rs.f2 rst.F3 = rs.F3 rst.F4 = rs.F4 rst.F5 = rs.F5 If Len(A2 & "") <> 0 Then rst!F6 = "******" & Right(rs.f2, 4) rst.Update rs.MoveNext Next i Set rst = Nothing Set rs = Nothing MsgBox "OK" كود الإضافة : Dim i As Integer Dim ii As Integer Dim RC As Integer Dim RC1 As Integer Set rs = CurrentDb.OpenRecordset("Select * From Temp4") rs.MoveLast: rs.MoveFirst RC = rs.RecordCount For i = 1 To RC ' يجب أن يكون نوع الحقل المربط بين الجدولين رقم Set rst = CurrentDb.OpenRecordset("SELECT * From Temp5 WHERE ID =" & rs.ID & "") rst.AddNew rst.ID = rs.ID rst.f1 = rs.f1 rst.f2 = rs.f2 rst.F3 = rs.F3 rst.F4 = rs.F4 rst.F5 = rs.F5 rst.F6 = rs.F6 rst.Update rs.MoveNext Next i Set rst = Nothing Set rs = Nothing MsgBox "OK" وبالتوفيق Recordset.mdb
    1 point
  44. برنامج مساقات للمحاسبة للأستاذ الكبير : محمد أجول قام بشرح البرنامج خطوة بخطوة في عدة دروس في قناته على اليوتيوب التالية :- ملفات العمل لبرنامج المساقات المحاسبي : https://goo.gl/My9F7x ملفات العمل للبرنامج الثاني مساقات أولاين : https://drive.google.com/drive/u/2/fo... ما يميز البرنامج مساقات المحاسبي "المرفق" اعتماده في الغالب على الحقول غير المنضمه ولا يتعمد على الحفظ التلقائي من الأكسس يستخدم مكتبة DAO يمكننا تنزل البرنامج واستعراض الأكواد للاستفادة منها في أعمالنا . مساقات_للمحاسبة,_نسخة_قابلة_للتعديل.accdb
    1 point
  45. وعليكم السلام ورحمة الله وبركاتة ت تأكد أنه لا يوجد لديك أخطاء برمجية فأي خطأ في الاكواد يمنع تحويل القاعدة الى صيعة Mde و accde افتح محرر الاكواد وانقر على Debug ثم أنقر على الخيار الأول اذا كانت توجد اخطاء في الاكواد سيتوقف عند الخطأ ::بالتوفيق::
    1 point
  46. السلام عليكم ورحمة الله أخي الكريم، يمكن القيام بذلك باستعمال خاصية الفرز بالطريقة التالية: 1- نقوم بترقيم الأعمدة من A إلى D في السطر الأول (فارغا) ترتيبا تنازليا من 5 إلى 1 2- نحدد الأعمدة من A إلى D 3- نختار من قائمة الأوامر "DATA" أي "بيانات" ثم نختار الخاصية "فرز" "SORT" حسب السطر الأول ونختار في "خصائص" أي "Options" الخاصية من اليمين إلى اليسار Sort right to left أو من اليسار إلى اليمين Sort left to right (حسب طريقة عرض الورقة في الإكسيل)... ثم نوافق على الاختيارات..... أتمنى أن يكون الشرح مفهوما... أخوك بن علية
    1 point
  47. تفضل ترتيب الأسماء2.rar
    1 point
×
×
  • اضف...

Important Information