بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 07/10/22 in مشاركات
-
بعد إذن أخي الحبيب قاسم تفضل جرب مثالك بعد الضغط على العناوين بالضغط المزدوج ..... واعلمنا بالنتيجة ..... kan_reportsetting.accdb3 points
-
يمكن رفع الملف على OneDrive ومشاركة الرابط مع الجميع مع فتح الملف بأوفيس 2016 وما بعده بالتوفيق2 points
-
وعليكم السلام-انتبه من فضلك فلا يمكن مشاركة اى ملف اكسيل على جوجل طالما يحتوى على أكواد VBA وشكراً !!!2 points
-
بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته اليوم جئتكم بفكرة جديدة وإبداعية لتحديث نسخة الواجهات FE لدى المستخدمين بدون الاستعانة بملفات وبرامج خارجية 🙂 وذلك بالاستعانة بملفي الواجهات FE وملف قاعدة البيانات ( الجداول ) BE فقط 😊 وقد قمت بشرح الفكرة ومحاولة تبسيطها قدر الإمكان من خلال الشرح الآتي مستعيناً بالله وتوفيقه .. :: أصل المشكلة :: أولاً : من المعلوم أنه يفضل أن يكون البرنامج مقسم إلى ملفين ( الواجهات FE - وقاعدة الجداول BE ) وذلك لكي يعمل عليه أكثر من مستخدم. FE: هي اختصار لـ Front End النهاية الأمامية .. أي ملف الواجهات و BE: هي اختصار لـ Back End النهاية الخلفية .. وهو ملف الجداول ملف الـ BE غالبا ما يكون مخزن في السيرفر بطريقة يمكن لجميع المستخدمين من الوصول إليه حيث أن البيانات جميعها يتم تخزينها فيه. ويتم توزيع ملفات الـ( FE) على أجهزة المستخدمين ، وهي محور حديثنا لهذا اليوم الرائع الجميل .. 😊 مختصر الكلام : أنه كثيرا ما يعاني مصممو البرامج من إعادة توزيع ملفات الواجهات ( FE ) على أجهزة المستخدمين عندما تكون هناك تحديثات جديدة على البرنامج أو معالجة لأخطاء في البرنامج ... الطريقة والفكرة التي سنتحدث عنها اليوم تقوم بحل هذه المعاناة وجعل البرنامج يقوم بتوزيع الـ (FE) نيابة عنك أوتوماتيكيا وبدون أي جهد يطلب من المستخدمين .. 😉 :: شرح الفكرة وآلية العمل :: الفكرة التي سأطرحها قائمة على الاتصال بملف الجداول الـ (BE) والاستعانة به ليقوم بتوزيع ملف التحديث الجديد على أجهزة المستخدمين بعد أن يستبدل القديم بالجديد .. حيث أننا سنحتاج إلى : 1 - جدول في قاعدة الـ (BE) ومتصل بنسخة الـ (FE) كذلك، لتخزين روابط مواقع كل ملف ( FE - BE - New Update ). 2- ماكرو Autoexec وضيفته تشغيل الكود الذي سيفحص وجود تحديثات جديدة من عدمه عند بدء تشغيل البرنامج ، ويوضع في نسخة الـ (FE). 3- سنحتاج لإضافة نموذج في نسخة الجداول الـ (BE) مهمته تشغيل الكود الذي سيحدث نسخة الـ (FE). والكود يعمل عند حدث (عند التشغيل - ON OPEN ). 4- سنحتاج لجدول (محلي) يبقى في نسخة الواجهات الـ (FE) فيه حقل تاريخ عبارة عن سجل واحد يكتب فيه تاريخ الإصدار للنسخة الحالية. وهذا شرح مصور مبسط لآلية العمل : الصورة (1) : محتويات الملفات الأساسية المستخدمة في العمل. الصورة (2) : المرحلة الأولى : فحص وجوود تحديثات جديدة من خلال ملف الواجهات FE الصورة (3) : رسالة تأكيد للبدء في التحديث الصورة (4) : الخطوة الثالثة : إغلاق ال(FE) وفتح ال(BE) الصورة (5) : إستبدال النسخة القديمة بالجديدة وإعادة تشغيل البرنامج 🙂 هذا كل شيء ببساطة 😅🖐️ :: الأكواد المستخدمة :: أولاً : الكود المستخدم في ملف الواجهات الـ (FE) : Public Sub UpdateUsersFE(CurrentVerDate As Date, NewVerDate As Date, _ txtOldFEPath As String, txtNewFEPath As String, _ txtBEPath As String, txtBEUpdateForm As String, _ DoTheUpdaet As Boolean) On Error Resume Next ' ************************************************** Check If the Manager Send The Update Order If DoTheUpdaet = True Then ' Continue The Code Else MsgBox "لا يوجد تحديث جديد" Exit Sub End If ' ************************************************** Check Version Date If CurrentVerDate < NewVerDate Then ' Continue The Code ' MsgBox "سوف يتم التحديث إن شاء الله" ' Exit Sub Else ' MsgBox "لديك آخر إصدار" Exit Sub End If ' *************************************************** Confermation Msg. If MsgBox("لديك تحديث جديد للبرنامج، متابعة؟", vbYesNo, "Apply New Update?") = vbYes Then Else: Exit Sub End If ' ************************************************** Open the BE and the Update Form Dim objAdb As Object Set objAdb = CreateObject("Access.Application") objAdb.OpenCurrentDatabase (txtBEPath) objAdb.DoCmd.OpenForm txtBEUpdateForm objAdb.Visible = False ' ************************************************** Close FE Database DoCmd.Quit Set objAdb = Nothing End Sub Public Function testUpdate() Dim BackEndPath As String, FrontEndPath As String, UpdatePath As String, CurrentVerDate As Date, NewVerDate As Date, StartUpdating As Boolean CurrentVerDate = DFirst("[VersionDate]", "[FE_Tbl_Version]") NewVerDate = DFirst("[LastUpdateDate]", "[BE_Tbl_Updates]") BackEndPath = DFirst("[BackEndPath]", "[BE_Tbl_Updates]") FrontEndPath = DFirst("[FrontEndPath]", "[BE_Tbl_Updates]") UpdatePath = DFirst("[UpdatePath]", "[BE_Tbl_Updates]") StartUpdating = DFirst("[StartUpdating]", "[BE_Tbl_Updates]") Call UpdateUsersFE(CurrentVerDate, NewVerDate, FrontEndPath, UpdatePath, BackEndPath, "BE_Frm_StartUpdating", StartUpdating) End Function ثانياً : الكود المستخدم في ملف الجداول الـ (BE) : #If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If Private Sub Form_Open(Cancel As Integer) Call UpdateFE End Sub Public Sub UpdateFE() Dim FrontEndPath As String, NewUpdatePath As String FrontEndPath = DFirst("[FrontEndPath]", "[BE_Tbl_Updates]") NewUpdatePath = DFirst("[UpdatePath]", "[BE_Tbl_Updates]") 'On Error Resume Next '********************************************************************(Waite for 3 seconds until FE Closed ) Sleep 3000 '********************************************************************(Copy the New Update to the User PC) Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject") 'Kill FrontEndPath 'Sleep 1000 fs.CopyFile NewUpdatePath, FrontEndPath, True '********************************************************************(Open the new FE for the user) 'Sleep 1000 Dim objAdb As Object Set objAdb = CreateObject("Access.Application") objAdb.OpenCurrentDatabase (FrontEndPath) objAdb.Visible = True objAdb.DoCmd.RunCommand acCmdAppMaximize '*********************************************************************(Close BE) DoCmd.Quit Set objAdb = Nothing End Sub :: (مهم جدا ) قبل التجربة والتطبيق :: ستجدون في المرفقات ثلاثة ملفات: - ملف الواجهات القديم (FE-MyApplication) - ملف الجداول (BE-MyApplicationDatabase) -وملف الواجهات المحدث (FE-NewUpdateV2.0) أولاً : يجب إعادة ربط ملفي الواجهات (القديم + التحديث ) بملف الجداول (يدوياً ) .. وهي خطوة مهمة للعمل .. ( يمكنك عملها أوتوماتيكيا بالأكواد في برنامجك لاحقاً ، لم أشأ تعقيد الأمور هنا 😅) ثانياً : يجب عليك تحديث روابط أماكن الملفات الثلاثة في جدول (BE_Tbl_Updates) وذلك من خلال النموذج (FE_Frm_UpdateInfo) الموجود في نسخة الواجهات. والآن يمكنك الانطلاق والبدء في تجربة البرنامج 😉👊 قم بتشغيل البرنامج FE-MyApplication وانتظر لترى النتيجة 😊👌 ملاحظة : لإعادة التجربة مرة أخرى بعد التحديث ، قم بتأخير تاريخ النسخة الأمامية من جدول (FE_Tbl_Version) إلى تاريخ سابق للتاريخ المخزن في قاعدة البيانات . *************************************************************** هذا كل شيء ولا تنسوا أن تنوروني بآرائكم ومقترحاتكم ولا تنسوني من صالح دعواتكم 😊 :: التحميل :: FrontEnd Updator V1.0.rar1 point
-
1 point
-
طيب انا اعمل ايه دلوقتي ... كل نموذج انا عملته واضح مصدر سجلاته طيب ممكن تبعتلي مثالك على الخاص ... ان كان هذا لا ينافي قوانين المنتدى انا قلبي معك اخي ابو الحسن واود مساعدتك ... بس بصراحة مش فاهم ايه الحكاية1 point
-
هههههه.. دة موضوع تاني اخي ابو الحسن يجب ان نلتزم بقوانين المنتدى ... ان كان ما اجبتك عنه مطابق لمطلبك ...فيجب اغلاق الموضوع.. وفتح موضوع اخر وانا بخدمتك ... حتى لا تتلخبط علي الاسئلة .. فأنا شيخ كبير وفهمي على قدي ... لكني احب التعلم1 point
-
1 point
-
1 point
-
اعتقد اننا تطرقنا لهذه الجزئية في الموضوع السابق الاستعلام الموجود هو استعلام عام ..يظهر جميع الحسابات ..ويجمع المتشابه باسم الحساب ومصدر التمويل فقط اما اذا اردنا التجميع بأسم الحساب فيجب عمل استعلام اخر نرفع منه مصدر التمويل..ونعمل استعلام يجمع المتشابه في مصدر التمويل ونرفع منه اسم الحساب وكل واحد لديه زر خاص ..والا كيف نستطيع التمييز بينهم اونعمل زر واحد ونعمل 3 حقول اختيار نعم/لا ..وحين التعليم على اي حقل سيفتح لنا مانريده ان كنت ترغب بالطريقة الاخيرة حتى اشتغل عليها1 point
-
1 point
-
1 point
-
وجزيت خيرا اخي تفضل ولكن هناك بعض الاشياء يجب شرحها كما شرحت الاخرى مثلا: كرة قدم جاري اي عمود توجد وماهو الشرط كذلك باقي المعطيات الاخرى داتا-1.xlsm1 point
-
الاخ الفاضل ... ا / محمد صالح كل عام وانت بخير وجميع المشرفين والمسئولين عن هذا الصرح العظيم المنفعة للكل واولهم انا شخصيا احتمال الحجم كبير عشان البرنامج شامل وبه كم من التقارير وكشوف الاحصاء وكذلك المعادلات . وانا ارحب باي تعديل لديكم لتقليل الحجم.1 point
-
الله يعطيك العافيه ويجزاك خير الحمد لله طبقت الشرح واشتغل الارسال بدون مشاكل الف شكر لك استاذي الفاضل1 point
-
أهلا أهلا أهلا بكبير المعلمين وحامل المسك 😊 زين بخرت المكان قبل لا نروح فيها 😂 أشكرك على المرور والتعليق أستاذنا @jjafferr الحقيقة وأنا أنشيء هذا الموضوع وأعمل البرنامج والتجارب عليه وأعالج الأخطاء اللي ظهرت لي ، دارت في بالي الكثير من الأفكار والمقترحات اللي يمكن تطبيقها على نفس الفكرة ، ومنها ضمنها تشغيل وحدة نمطية في ال BE بدل الفورم ( مثل ما ذكرت ) ولكن رأيت أن الفورم أسهل حتى في استدعاء البيانات من الجدول ، وفي النهاية الفكرة فيها إضافة كائنات أخرى غير الجداول في قاعدة البيانات ( موديول ، ماكرو ، .... الخ ) . وكذلك دمجها مع الكثير من الأفكار اللي تم طرحها سابقا في المنتدى مثل ( إعادة الإتصال التلقائي ) ، و ( إنشاء إختصار وأيكونة في سطح المكتب ) ، وووو وغيرها .. فقررت أخلي المجال مفتوح لإبداعات الشباب أنت الآن نورتني لفكرة الحصول على مكان الFE مباشرة قبل التحديث واستخدامه للتبديل ، فكرة عبقرية ولكن ما خطرت في بالي لأن الوضع معي في العمل هو أنني أنصب ال FE بنفسي للمستخدمين وما أخليهم يعبثو بموقعه لأنهم لو تورطوا وما عرفو يربطوه بال BE بيرجعولي في النهاية 😁 لحد الحين النقطتين 1 و 2 الحمدلله ما صارت معي ، الشبكة أمورها طيبة .. بالنسبة للنقطة هذي طبعا العمل كله على المبرمج ، فقط الرسالة اللي تطلع أول شي أنا مقرر ألغيها تماما في برامجي ، فقط وضعتها هنا على سبيل التجربة علشان أحس أن الكود شغال 😅 ، وإلا فالمستخدم ما بيحس أصلا بأنه تغير شي ، كله بالصامت . وبإذن الله ممكن أطور الكود ليأخذ عنوان ال FE لكل مستخدم على حده . هو يصلح .. بس تضل الطريقة اللي ذكرتها تحمل في طياتها البلاوي 😅🖐🏼️1 point
-
السلام عليكم ورحمة الله اخى الكريم يبدو انك لم تقرأ ورقة التعليمات جيدا حتى تحصل على افضل اداء للبرنامج التعامل مع الفترات صباحى ومسائى باحدى الطريقتين : الاولى وهى الاسهل بعد عملية الفرز تقوم بنفسك فى عمود الفترة بشيت الشعبة و تكتب كلمة صباحى ثم تقوم بالسحب حتى اخر تلميذ فى الفترة ثم تكتب كلمة مسائى و تقوم بالسحب حتى اخر تلميذ فى الشيت اما الثانية فهى فى ورقة الاعدادات لابد من كتابة الرقم المطلوب للفترة الصباحية فى الخلايا من F13 الى F16 ثم الضغط على زر توزيع الفترات على العموم لو عندك خلفية فى الاكواد يمكن بدلا من ارسال الملفات و بالطبع لن يكون الاصلى يمكن ارسال الفقرة المراد اصلاحها فى الكود بحيث تقوم انت بتعديلها مباشرة فى الملف الاصلى بدون ارسال الملف اليك الملف بعد التعديل كنترول ثانية بالقومى.xlsm1 point
-
السلام عليكم 🙂 هذه طريقتي لتفكيك الحقل الى حقول 🙂 نأخذ المرفق كالمثال من هذا الرابط : . هكذا تبدو السجلات ، بالعين المجردة : . والمطلوب ان نقسم بيانات السجل الواحد الى: الاسم ورقم التسلسل (وخلينا نستخدم السجل الاول كمثال) ، ونريد النتيجة تكون : . هناك طريقتين لفرز هذه البيانات : عن طريق كود ليقرأ الحروف/الارقام/العلامات واحدا واحدا ، ثم بوضع شروط اذا جصلنا على رقم ، فنتوقف ونحفظ الجزء الاول ، ثم نواصل ... ، وهذه العملية مرهقة وتحتاج الى تفاصيل كثيرة ، عن طريق الكود ، ولكن بإستخدام الدالة Split ، ويشترط فيها ان نعرف اين (بعد اي حرف/رقم/علامات) نقسم السطر ، ولنسمية شرط القطع . سنتعامل مع الطريقة الثانية وهي الاسهل 🙂 لمعرفة شرط القطع ، يمكننا ان نتعامل مع الحروف/الارقام/العلامات مباشرة ChrW ، او نتعامل مع ارقام هذه (الحروف/الارقام/العلامات) AscW ، وانا لا استغني عن هذه الصورة المرفقة لعملي ، الحرف Chr ، ومقابله رقمه Dec : . وبالنسبة للحروف العربية ، هذا رابطها : https://sites.psu.edu/symbolcodes/languages/mideast/arabic/arabicchart/ او https://www.ssec.wisc.edu/~tomw/java/unicode.html#x0600 وقد قمت باخذ البيانات من الموقع ورتبتها في صفحة واحد : فمثلا اول حروف اسم ابراهيم : ا = 1575 ، ب = 1576 ، ر = 1585 ، بمعنى AscW(ا) = 1575 , AscW(ب) = 1576 , AscW(ر) = 1585 والعكس يكون ChrW(1575) = ا , ChrW(1576) = ب , ChrW(1585) = ر . للحصول على الاسم ، نريد ان يكون لدينا شرط القطع بعد الاسم وقبل بداية الرقم (اي في المنطقة 1) ، للحصول على التسلسل ، نريد ان يكون لدينا شرط القطع بعد التسلسل وقبل بداية الاسم التالي (اي في المنطقة 2) ، لمعرفة شرط القطع يجب علينا ان نحلل البيانات التي يراها الكمبيوتر ، وذلك بتحويل الحروف/الارقام/العلامات الى AscW ، هذا الكود يقوم بهذه العملية: Public Function Split_Names() Dim rst As DAO.Recordset Dim x() As String Dim i As Long Dim a As String Set rst = CurrentDb.OpenRecordset("Select * From MyTxt_from_pdf") Do Until rst.EOF For i = 1 To Len(rst!Field1) a = Mid(rst!Field1, i, 1) 'الحروف/الارقام/العلامات a = a & "(" & AscW(a) & ") " 'رقمها AscW Debug.Print a Next i Loop rst.Close: Set rst = Nothing End Function ونناديه من نافذة الكود هكذا (يجب ان يكون الكيبور باللغة الانجليزة عند كتابة علامة الاستفهام) : . ونرى ان النتيجة للسجل الاول فقط : . وبعد التدقيق ، نلاحظ ان في نهاية الارقام نرى ان AscW التالية متكررة 8236 ثم 8236 ثم 32 ثم 32 ، وبذلك يمكننا استعمال هذه كشرط القطع بعد الاسم ا(1575) ق(1602) ل(1604) ح(1581) ا(1575) د(1583) م(1605) ح(1581) ي(1610) ا(1575) م(1605) و(1608) د(1583) د(1583) س(1587) ه(1607) ?(8236) ?(8236) ?(8236) -32 -32 -32 -32 -32 -32 . بعد الرقم 3(1635) 2(1634) ?(8236) ?(8236) ?(8236) ?(8236) -32 -32 -32 -32 . وعليه نستعمل هذا الكود ، ونرى نتيجته (للسجل الاول) : Do Until rst.EOF x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32)) 'Name + ID For i = LBound(x) To UBound(x) Debug.Print x(i) Next i rst.MoveNext Loop ونتيجته ?ابراهيم احمد يحيى احمد? ??3 ?ابتهاج سامح نسيم اقلديوس? ??2 ?ابتسام محمد عبدا حماده? ??1?? . والآن خلينا نفكك الاسم من الرقم : Do Until rst.EOF x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32)) 'Name + ID For i = LBound(x) To UBound(x) 'Debug.Print x(i) x2 = Split(x(i), ChrW(8236) & ChrW(32) & ChrW(32)) For j = LBound(x2) To UBound(x2) Debug.Print x2(j) Next j Next i rst.MoveNext Loop والنتيجة ?ابراهيم احمد يحيى احمد ??3 ?ابتهاج سامح نسيم اقلديوس ??2 ?ابتسام محمد عبدا حماده ??1?? . ونلاحظ من القائمة اعلاه ، ان علامات الاستفهام ارقامها ?(8235) ?(8234) ?(8236) . الخطوة الاخيرة هي تنظيف النتيجة من علامات الاستفهام هذه عن طريق الامر Replace ، والتخلص من المسافة الزائدة قبل وبعد النتيجة عن طريق الامر Trim ، وبعدها نريد ان نحفظ الاسم في اول حقل ، والرقم في الحقل الثاني: LBound دائما تساوي صفر Do Until rst.EOF x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32)) 'Name + ID For i = LBound(x) To UBound(x) 'Debug.Print x(i) x2 = Split(x(i), ChrW(8236) & ChrW(32) & ChrW(32)) For j = LBound(x2) To UBound(x2) 'Debug.Print x2(j) a = Replace(x2(j), ChrW(8234), "") a = Replace(a, ChrW(8235), "") a = Replace(a, ChrW(8236), "") a = Trim(a) 'If j / 2 = Int(j / 2) Then If j = 0 Then 'even Debug.Print "Name: ", a Else 'odd Debug.Print "ID: " & a End If 'Debug.Print a Next j Next i rst.MoveNext Loop والنتيجة Name: ابراهيم احمد يحيى احمد ID: 3 Name: ابتهاج سامح نسيم اقلديوس ID: 2 Name: ابتسام محمد عبدا حماده ID: 1 Name: احمد السيد على محمد ID: 6 Name: ابراهيم كمال ابراهيم محمد ID: 5 Name: ابراهيم سمير عياد عطاا ID: 4 Name: احمد حسن احمد رسلن ID: 9 Name: احمد حجازى على محمد ID: 8 Name: احمد السيد محمد عبدالرحمن ID: 7 . -------------------------------------------------------- وفي سياق هذا الموضوع ، كان عندي مشروع القرآن الكريم ، وحفظه في قاعدة البيانات بعدة طرق: كل صفحة عبارة عن سجل ، وفي جدول آخر ، كل سطر في سجل ، وفي جدول آخر ، كل آية في سجل وقمت بتنزيل القرآن الكريم من مجمع الملك فهد لطباعة المصحف الشريف : https://fonts.qurancomplex.gov.sa/wp02/حفص والمرفق يحتوي على الخط العثماني ، والذي تم عمله في المجمع ، ولذا فهو يحتوي على حروف/ارقام/علامات AscW تختلف عن غيرها من الخطوط ، والطريقة الوحيدة لتفكيك الاسطر كانت بإتباع خطوات شبيهه بالخطوات اعلاه 🙂 جعفر1 point
-
السلام عليكم، أحياناً تواجهنا مشكلة في الأكسس وهي تحول الارقام الى العربية خصوصاً اذا كان بجانب الرقم حروف عربية لذلك دعونا نختصر الوقت على العميل ونقوم بتعديل تنسيقات التاريخ والارقام..الخ برمجياً بدون الطلب من العميل تعديلها يدوياً اقدم لكم فنكشن للتعديل، يمكنكم التعديل والإضافة بحسب ماتجدوه مناسباً. Public Sub EditControlPanelInternational() 'Define a key registry path Dim strComputer Dim objRegistry Dim strKeyPath Dim strValueName Dim getValue Dim regKeyPath Dim strLocaleName, strCountry, strshortDateValue, strlongDateValue, strshortTimeValue, strlongTimeValue, strfirstDayOfWeekValue Const HKEY_CURRENT_USER = &H80000001 strComputer = "." Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") regKeyPath = "Control Panel\International" strLocaleName = "en-US" strCountry = "United States" strshortDateValue = "yyyy-MM-dd" strlongDateValue = "dddd, MMMM d, yyyy" strshortTimeValue = "h:mm tt" strlongTimeValue = "h:mm:ss tt" strfirstDayOfWeekValue = "6" srtnativedigits = "0123456789" objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "LocaleName", strLocaleName objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sCountry", strCountry objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sShortDate", strshortDateValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sLongDate", strlongDateValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sShortTime", strshortTimeValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sTimeFormat", strlongTimeValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "iFirstDayOfWeek", strfirstDayOfWeekValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sNativeDigits", srtnativedigits Debug.Print "Successfully changed system regional settings." End Sub للأمانة الفنكشن من كتابة saf لذلك انا قمت بإضافة السطر srtnativedigits = "0123456789" objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sNativeDigits", srtnativedigits لتغيير تنسيق الأرقام من عربي إلى انجليزي ومن ثم قمت بنقله لكم.1 point
-
1 point
-
أكرمك الله أخي عبد الله هذا أمر لتشغيل on screen keyboard الموجودة ضمن نظام تشغيل الويندوز ويمكن الوصول إليها من start--->run--->osk ولكن لم نعرف هل هذا هو المطلوب أم لا؟؟1 point
-
تفضل أخي أحمد لحساب التقدير يمكنك كتابة هذه المعادلة في اي عمود بعد اللغة العربية =IF(D3>="غ","دون",IF(D3>=85,"ممتاز",IF(D3>=75,"جيد جيداً",IF(D3>=65,"جيد",IF(D3>=50,"مقبول","دون"))))) وطبعاً يمكنك تكرارها مع باقي المواد وبالنسبة لاحتساب الغائبة راسبة يمكنك استعمال المعادلة التالية =SUMPRODUCT(--($C$3:$C$12="أنثى"),--($D$3:$D$12<50),--($B$3:$B$12=1))+SUMPRODUCT(--($C$3:$C$12="أنثى"),--($D$3:$D$12="غ"),--($B$3:$B$12=1))1 point
-
بعد إذن الإخوة يمكنك استخدام هذا الكود أخي الكريم عند الضغط على زر في النموذج Shell "cmd /c osk", 0 وهو الخاص بتشغيل لوحة المفاتيح الموجودة في الويندوز1 point
-
ويمكنك عملها بالكود كما يلي Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim WS As Worksheet For Each WS in Worksheets WS.PageSetup.LeftHeader = "أي حاجة" Next WS End Sub طبعا يمكنك تحديد المكان الذي تريد الكتابة به كما تريد leftheader centerheader rightheader وكذلك leftfooter centerfooter rightfooter أتمنى أن يكون الكود مفيداً لإخوتي1 point
-
أخي الكريم : أبا نصار وأخي سعيد بيرم تستحقان الترقية إلى أكثر من ذلك وفقكما الله وكما قلت سابقاً الترقية تعني مزيداً من الاجتهاد ممن تتم ترقيتهم فالمكسب لنا نحن أعضاء أوفيسنا1 point
-
سؤال وجيه أخي عبد القادر يمكنك عدم الإعلان عن المتغيرات في vba وتكتفي فقط بتعيين قيمتها وسوف يتم إنشاء هذا المتغير عند قراءة سطر التعيين ولكن الأصح والأسلم من الوقوع في الخطأ هو الإعلان عن كل متغير وتحديد نوعه في جملة الإعلان تصور معي مثلا أنك لا تعلن عن المتغيرات ولا أنواعها: ثم عينت قيمة لمتغير اسمه student ثم بعدها قمت بتغيير قيمة هذا المتغير ولكن بخطأ إملائي مثلا student=tudent+10 (لاحظ الخطأ الإملائي في اسم المتغير) في هذه الحالة سيتم إنشاء متغير جديد باسم tudent وسيتم وضع 0 فيه ثم يتم إضافة 10 عليه وبالتالي تكون قد تغيرت قيمة student الأصلية إلى 10 فقط في حين أنك تريد أن تزيد على الرقم الأصلي 10 طبعاً تقول أنه يسهل عليك اكتشاف موضع الخطأ يدويا في حالة سطور قليلة من الكود ولكن كيف يتم متابعة الخطأ في الملفات التي تحتوي على أكواد كثيرة نأتي للصورة الصحيحة: إذا حدث هذا وأنت قد قمت بتنشيط require variable deceleration في نافذة الخيارات لمحرر الفيجوال بيسك أو كتبت Option Explicit في أعلى الموديول سيتم الانتقال مباشرة إلى موضع الخطأ ويسهل تصحيحه بإذن الله1 point
-
الأخ الكريم عبد الفتاح هذه المعادلة تقوم بعد الذكور فقط بينما الأخ أحمد يسأل عن عدد الإناث اللائي يقل مجموعهن عن 50 وهن من فصل 1 يعني عدّ بثلاثة شروط1 point
-
أخي الكريم تعني هذه الإشارة -- أنك تقوم بتحويل الناتج إلى 0 و 1 في كل قوس وذلك حتى نحصل على العدد الذي وافق الشروط وللتأكد من ذلك حدد القوس الأول مثلا والخاص بعدد الإناث ثم اضغط f9 من لوحة المفاتيح ماذا تلاحظ؟ اضغط ctrl+z للتراجع عن الخطوة الأخيرة1 point
-
بالإضافة لحل أخي الكريم عبد الله ضع هذه المعادلة في الخلية التي تريدها =SUMPRODUCT(--($C$3:$C$12="أنثى"),--($D$3:$D$12<50),--($B$3:$B$12=1)) وجرب أخي أحمد وأخبرني بالنتيجة1 point