بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation since 12/11/25 in all areas
-
4 points
-
اعرض الملف إجعل مربع القائمة يتناسق مع بقية تنسيقات النموذج بإستخدام أداة مربع القائمة المخصص {سلسلة الأدوات المساعدة المخصصة} كما يعلم الجميع فإن عنصر التحكم (مربع القائمة) القياسي من عناصر التحكم التي لاتمنحنا خيارات أوسع في التنسيق كمحاذاة النص أو تغيير لون الخط أو لون التحديد وغيرها من التنسيقات التي تجعله يتماشى مع بقية عناصر التحكم بإستخدام هذه الأداة سنحصل على مربع قائمة مخصص يقوم بمنحنا خيارات تنسيق واسعة مرفق لكم مجلد يحتوي على - نسخة توضيحية لوظائف الأداة (أرجو أن يتم فتح هذا الملف في البداية) - مستند وورد يحتوي على تعليمات (يرجى قرائتها بتركيز وتطبيق الخطوات كما وردت) يحتوي هذا المستند في نهايته على تلميحات مهمة ستساعدكم في حال ظهور بعض الأخطاء أثناء العمل - نسخة بإسم القالب والتي وكما تعودنا بأنها ستحتوي على الكائنات الضرورية لعمل الأداة - ملف مضغوط يحتوي على نسخة تدريبية ليتم تطبيق الخطوات الواردة في التعليمات عليها الملاحظة التي أود تقديمها هنا أنه في البداية قد يواجه البعض صعوبة في العمل مع الإداة والذي يمكن تجاوزها بقراءة وتنفيذ التعليمات أكثر من مرة لذلك تم وضع النسخة التدريبية في ملف مضغوط حتى يمكنكم الحصول على نسخة فارغة جديدة في حال أردتم إعادة تطبيق التعليمات للتدرب تحياتي صاحب الملف منتصر الانسي تمت الاضافه 01/09/26 الاقسام قسم الأكسيس3 points
-
Version 1.0.0
14 تنزيل
كما يعلم الجميع فإن عنصر التحكم (مربع القائمة) القياسي من عناصر التحكم التي لاتمنحنا خيارات أوسع في التنسيق كمحاذاة النص أو تغيير لون الخط أو لون التحديد وغيرها من التنسيقات التي تجعله يتماشى مع بقية عناصر التحكم بإستخدام هذه الأداة سنحصل على مربع قائمة مخصص يقوم بمنحنا خيارات تنسيق واسعة مرفق لكم مجلد يحتوي على - نسخة توضيحية لوظائف الأداة (أرجو أن يتم فتح هذا الملف في البداية) - مستند وورد يحتوي على تعليمات (يرجى قرائتها بتركيز وتطبيق الخطوات كما وردت) يحتوي هذا المستند في نهايته على تلميحات مهمة ستساعدكم في حال ظهور بعض الأخطاء أثناء العمل - نسخة بإسم القالب والتي وكما تعودنا بأنها ستحتوي على الكائنات الضرورية لعمل الأداة - ملف مضغوط يحتوي على نسخة تدريبية ليتم تطبيق الخطوات الواردة في التعليمات عليها الملاحظة التي أود تقديمها هنا أنه في البداية قد يواجه البعض صعوبة في العمل مع الإداة والذي يمكن تجاوزها بقراءة وتنفيذ التعليمات أكثر من مرة لذلك تم وضع النسخة التدريبية في ملف مضغوط حتى يمكنكم الحصول على نسخة فارغة جديدة في حال أردتم إعادة تطبيق التعليمات للتدرب تحياتي3 points -
3 points
-
لدي هذا التطبيق يقوم باختبارات ادارية متنوعة ارجو ان تبدو رأيكم فيه مع جزيل الشكر Administrative_Tests.rar3 points
-
ممكن يكون طلبك هنا https://www.youtube.com/watch?v=M1DhpzkT8kA او جرب هذا الكود: Sub Observer_FullSystem() Dim ws As Worksheet, wsReport As Worksheet Dim NamesArr() As Variant Dim UsedRow As Object, UsedCol As Object, UsedAll As Object Dim lrNames As Long, lrRows As Long, lrCols As Long Dim r As Long, c As Long, i As Long Dim Available() As String Dim cnt As Long, MaxAllowed As Long, TotalCells As Long Dim TryCount As Long Dim MainCols As Long: MainCols = 2 ' عدد الأعمدة الأساسية Set ws = ActiveSheet Application.ScreenUpdating = False Randomize ' ===== Backup ===== ws.Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "Backup_" & Format(Now, "ddmmyy_hhmmss") ws.Activate ' ===== قراءة الأسماء ===== lrNames = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row NamesArr = ws.Range("B3:B" & lrNames).Value ' ===== حدود الجدول ===== lrRows = ws.Cells(ws.Rows.Count, 3).End(xlUp).Row lrCols = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column ws.Range(ws.Cells(3, 4), ws.Cells(lrRows, lrCols)).ClearContents ' ===== الحد الأقصى ===== TotalCells = (lrRows - 2) * (lrCols - 3) MaxAllowed = Application.WorksheetFunction.RoundUp(TotalCells / (lrNames - 2), 0) Set UsedAll = CreateObject("Scripting.Dictionary") ' ===== التوزيع ===== For r = 3 To lrRows Set UsedRow = CreateObject("Scripting.Dictionary") For c = 4 To lrCols TryCount = 0 RetryCell: TryCount = TryCount + 1 If TryCount > 300 Then GoTo NextCell Set UsedCol = CreateObject("Scripting.Dictionary") For i = 3 To r - 1 If ws.Cells(i, c).Value <> "" Then UsedCol(ws.Cells(i, c).Value) = 1 Next i cnt = 0 ReDim Available(1 To UBound(NamesArr, 1)) For i = 1 To UBound(NamesArr, 1) If Not UsedRow.exists(NamesArr(i, 1)) _ And Not UsedCol.exists(NamesArr(i, 1)) Then If Not UsedAll.exists(NamesArr(i, 1)) _ Or UsedAll(NamesArr(i, 1)) < MaxAllowed Then cnt = cnt + 1 Available(cnt) = NamesArr(i, 1) End If End If Next i If cnt > 0 Then ws.Cells(r, c).Value = Available(Int(Rnd * cnt) + 1) UsedRow(ws.Cells(r, c).Value) = 1 UsedAll(ws.Cells(r, c).Value) = UsedAll(ws.Cells(r, c).Value) + 1 Else GoTo RetryCell End If NextCell: Next c Next r ' ===== تقرير ===== On Error Resume Next Set wsReport = Sheets("تقرير") On Error GoTo 0 If wsReport Is Nothing Then Set wsReport = Sheets.Add wsReport.Name = "تقرير" Else wsReport.Cells.Clear End If wsReport.Range("A1:D1") = Array("الاسم", "الإجمالي", "أساسي", "احتياطي") For i = 3 To lrNames wsReport.Cells(i - 2, 1) = ws.Cells(i, 2) wsReport.Cells(i - 2, 2) = Application.CountIf(ws.Range(ws.Cells(3, 4), ws.Cells(lrRows, lrCols)), ws.Cells(i, 2)) wsReport.Cells(i - 2, 3) = Application.CountIf(ws.Range(ws.Cells(3, 4), ws.Cells(lrRows, 3 + MainCols)), ws.Cells(i, 2)) wsReport.Cells(i - 2, 4) = wsReport.Cells(i - 2, 2) - wsReport.Cells(i - 2, 3) Next i wsReport.Columns.AutoFit Application.ScreenUpdating = True MsgBox "تم التوزيع + إنشاء نسخة احتياطية + تقرير كامل ?", vbInformation End Sub3 points
-
اعلم هذا وواضح بالملف وعملت في قطاع التعليم التقني والتوجيه الفني 39 سنة واعلم جيدا كيف عمل اللجان لم يكن الامر يتطلب كل هذا على كل حال عودة للملف اليك الملف بالتعديل الاخير مراقبة_ تحويل اللجان الى أسماء.xlsm3 points
-
3 points
-
3 points
-
وعليكم السلام ورحمة الله وبركاته خمل المرفق به مثال لتحويل نطاق نطاق معين محدد بالماوس الى pdf pdf1.xlsb3 points
-
السلام عليكم لم توضخ خلية البحث G1 لها علاقة بالتوزيع ام لا فيكون التوزيع فردي ام للكل على كل حال الملف فيه عدد 2 شيت الاول شيت DATA يقوم بالتوزيع الفردي للمراقب وذلك بالاختيار من الخلية G1 الثاني شيت DATA1 به كود يقوم بتوزيع اللجان على كل المراقبين جرب الملف المرفق متمنيا ان يكون فيه طلبك ملاحظة1_2026.xlsm3 points
-
السلام عليكم ورحمة الله وبركاته الان وضحت الفكرة بارك الله فيك تم عمل كمبوبوكس به اسماء الموظفين الازار المرقمة قي القورم اكوادها موحودة كما هي اعتقد بعد الكمبوبوكس لم تعد في حاجة اليها ان اردت الغائها فابلعنى جرب الملف وان كنت تحتاج الى تعديل في الفورم فابشر تحياتى لك حضور وخروج موظفين.xlsm 4495.xlsm3 points
-
وعليكم السلام ورحمة الله وبركاته اليك الحل بطريقتين الاولى - بالتنسيق الشرطي Sheet1 اللون الاحمر =AND(A1<>""; OR(A2=""; A2=0)) اللون الاخضر =AND(A1<>""; A2<>""; A2<>0) الثانية - كود في حدث الورقة SHEET2 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:ZZ2")) Is Nothing Then Dim r As Range For Each r In Intersect(Target, Range("A2:ZZ2")) If r.Offset(-1, 0).Value <> "" Then If r.Value <> "" And r.Value <> 0 Then r.Offset(-1, 0).Interior.Color = vbGreen Else r.Offset(-1, 0).Interior.Color = vbRed End If Else r.Offset(-1, 0).Interior.ColorIndex = xlNone End If Next r End If End Sub الملف sa1.xlsb3 points
-
المصدر هو الاستعلام والتعديل في الاستعلام .. بدل اخذ Nr من جدول TblDetaché تم اخذه من جدول tbl_Loans2 points
-
2 points
-
2 points
-
تفضل الملف باستخدام الصيغ مع عمل تنسيق شرطي للتأكد من التكرار كشاف دخول اللجان2.xlsm2 points
-
وعليكم السلام ورحمة الله وبركاته InputBox في VBA لا يدعم إخفاء النصوص أو إظهارها كنجوم بشكل مباشر. الحل هو استخدام UserForm مع TextBox خاصية PasswordChar طباعة.xlsm2 points
-
2 points
-
اذا كنت تقصد عمل كلمة مرور للزر في الفورم يمنع الدخول الى ملف الاكسل اليك طلبك كلمة المرور 1234 يمكنك تعديلها من الكود طباعة2.xlsm2 points
-
وعليكم السلام ورحمة الله وبركاته ،، جرب هذا التعديل الذي تم على الجمل الشرطية داخل الاستعلام عند التوزيع .. لجان الامتحانات.zip2 points
-
تفضل استاذ @figo82eg طلبك حسب ما فهمت . ووافني بالرد . الرقم القومى-1.rar2 points
-
2 points
-
2 points
-
2 points
-
2 points
-
اهلا اخي العزيز صاحب الموضوع مشغول .. ولا اخفيك الفكرة راقت لي .. وعملت اضافات .. منها دالة لاختيار رقم عشوائي لذا دعنا نعمل عليه انت وأنا كبرنامج اختبار وقياس قابل لأكثر من رغبة سوف افتح موضوعا جديدا واطرح آخر تعديل ثم انتظر اضافاتك ولمساتك وهكذا حتى يخرج بثوب مناسب ما رأيك ؟2 points
-
بارك الله فيك .. وللمرة المليون أسف على تعب حضرتك وجعله في ميزان حضرتك ... وهذا أملنا في هذا المنتدى العظيم بأساتذته2 points
-
2 points
-
شكراً لك معلمي الفاضل 🤗.. إن شاء الله جاري العمل على التنفيذ بحيث يتم الإخراج من خلال تقرير، ولكن بعد الإنتهاء من بعض التعديلات بحيث سيتم اسناد جدول او استعلام كمصدر سجلات للتقرير ، مع ضم مربعات النص الي حقول بدلاً من الإدخال اليدوي للبيانات المتغيرة مثل الاسم او الدرحة ..... الخ . مع إتاحة التصدير كملف PDF طبعاً . وغيرها من الإضافات 😇 .2 points
-
السلام عليكم تحية صباحية طيبة وبعد، عزيزي الفاضل، اعلم أن هدفك هو تحويل الأرقام إلى أسماء، وهو موجود من عنوان مشاركتك وردودك المتتابعة. لكنني أواجه صعوبة في المضي قدماً؛ لأنك لم تحدد المعايير الدقيقة لعملية التحويل، ولم تتفضل بالإجابة عن الأسئلة التي طرحتها عليك في الردود السابقة. أقر بعجزي عن استيعاب فكرة التحويل بوضوح، وربما تكون سنواتي الـ 63 قد جعلتني أجد صعوبة في استيعاب هذا الأمر. لذلك، أعتذر عن عدم قدرتي على إفادتك في هذا الطلب. أتمنى من الأخوة الأعضاء والخبراء الذين استوعبوا آلية العمل أن يقدموا المساعدة اللازمة لك. مع خالص التقدير.2 points
-
رائع جدا هذه صورة لعملية الاعداد الجميل والشكل النهائي اتمنى اخي ان يتاح الاخراج عبر تقرير .. لما له من المزايا العديدة المفيدة2 points
-
وعليكم السلام ورحمة الله وبركاته .. جرب في زر فتح التقرير الحدث التالي :- DoCmd.OpenReport "تقرير تصفية", acViewPreview, , _ "[اسم_المستفيد] Like '*" & Forms!Index!s & "*' " & _ "OR [رقم/اسم المبنى] Like '*" & Forms!Index!s & "*' " & _ "OR [الادارة] Like '*" & Forms!Index!s & "*'" 100.zip2 points
-
السلام عليكم نصيحه لك وبما انك عضو مميز اهتم بتسميات الجداول والحقول باللغه الانجليزيه حتى تسهل عليك العمل وكتابه الاكواد تفضل بطريقه بسيط عملت لك نموذج المشتريات وتركت لك الاخر لتعمله كى تتعلم بالتوفيقمخزن_1.accdb2 points
-
تمام هي الفكرة نفسها .. كنت احسبها جديدة .. لأني لم اعمل من قبل عمل فيه اشتراك بالمدة وانما كنت ابيع الجمل بما حمل 🐫 .. وكنت اكتفي بان لكل جهاز نسخته2 points
-
2 points
-
السلام عليكم ورحمة الله تم التعديل أيضا (دائما بواسطة المعادلات) على ورقة "جداول الحراسة" التي تحتوي الجداول الفردية للحراس (معذرة لم أنتبه لها إلا الآن)... الحراسة2026 للتصحيح.xlsm2 points
-
االرجاء الانتظار الى الانتهاء من باقى التعديلات CertificateCustomization.zip2 points
-
تم عمل بعض التعديلات عمي جعفر .. مع التنويه إلى أن هذه الأداة لاتقوم بكتابة الأكواد بناءً على الطلبات ! بل وظيفتها تعديل وتحسين الكود الذي تعطيها إياه وتصحيح الأخطاء الموجودة فيه بالإضافة للخدمات الأخرى : ولتحقيق مرونة أكبر للمستخدم ، أضفت حقل خاص بكتابة تعليمات مخصصة توجهها للذكاء الاصطناعي بحيث يراعيها عند معالجة الطلب ، مثال : ( قم بتغيير أسماء المتغيرات لأسماء مقروءة ، أو قم تقسيم جملة SQL لعدة أسطر هكذا ....... ، أو ، أو ) أكتب ما شئت 🙂 وبعد التجربة على الجملة التي أوردتها : strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " & vbCrLf & _ "FROM tblCheckINOut " & vbCrLf & _ "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) " & vbCrLf & _ "ORDER BY tblCheckINOut.id DESC;" كانت النتيجة : Option Explicit Dim strSql As String strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " strSql = strSql & "FROM tblCheckINOut " strSql = strSql & "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) " strSql = strSql & "ORDER BY tblCheckINOut.id DESC;" وكانت هذه هي التعليمات الإضافية : قم بتقسيم جملة SQL لعدة أسطر بهذا الأسلوب : strSql = strSql & " "1 point
-
السلام عليكم عند ادخال رقم التسجيل والضغط على زر البحث يظهر معلومات الموظف وفي حالة ادخال رقم التسجيل خطاء تظهر رسالة تنبيه بعدم وجود هذا الرقم ولدي زر اخر اسمه اضافة وهذا عند ادخال رقم التسجيل وتظهر المعلومات اريد عند الظغط على زر اضافة يتم الحاق المعلومات في النموذج الفرعي البرنامج2025.rar1 point
-
قمت بنقل النظام الى جهاز لابتوب اخر و عليه نفس اصدار الاوفيس و كذلك نفس اصدار الويندوز و كذلك نفس اصدار الواتس اب و اشتغل طبيعي جداً بينما في الجهاز الأول مارضي سأحاول اعاده تثبيت الاوفيس في الجهاز الاول شكراً لك اخي @Foksh على الرد و اعذرني ان ازعجتك بكثره الاسئله1 point
-
نعم هو كذا .. يا سلام شوفت جمال عملك .. على الاقل التسميات تفتح النفس .. وتدل على معانيها وعملها تمام كذا .. انتظرني .. اعمل لك الخطوة اللي بعدها1 point
-
ارى ان تتخذ طريقة اخرى اكثر أمانا لا ينبغي ان يظهر للمتسابق الا بياناته هو فقط يجب ان يملك كلمة سر خاصة به يدخلها مع رقمه الوطني وبكذا لست بحاجة الى تأكيد هل هذا الاسم يخصه ام لا1 point
-
الملف الذي ارفقته فكرته واضحة وهو ليس بنفس فكرة ملفك تحويل اللجان الى اسماء لسبب بسيط ملقك الاخير تحويل الارقام الى اسماء كل اسم له رقم فريد بمعنى لا يحمله اسم اخر ملفك الاول تحويل اللجان الى اسماء الرقم يتكرر لاكثر من اسم تحويل المعادلات الى كود والكود لاستاذنا الفاضل عبدالله باقشير جعله الله في ميزان حسناته تحويل الارقام الى اسماء.xlsb1 point
-
تفضل استاذ @Matin_Murad تفضل هذا مرفق متكامل قد يفي بطلبك حسب مافهمت . أي سؤال أو طلب أنا حاضر . ووافني بالرد. Matin_Murad.rar1 point
-
مساء الخير,, اخي فادي انهيت المشكلتين اناقبل يومين التي ذكرتهم في اول الموضوع بااستعلام بسيط وكود ابسط 😆 1. عملت استعلام حذف في حدث عند التحميل وضعت عليه معيار 0 على حقل no_driver كونه حقل فريد بحذف اي سجل فارغ سابق او حالي .وبهذا انتهت المشكله الاولى التي ذكرتها با اول الموضوع,☝️ 2. استخدمت الكود التالي Me.da_d = Me.dm_b.Form.Controls("qqa") ,, الذي يقوم بااحضار قيمة المجموع في الحقل الغير منضم الموجود في النموذج الفرعي ,ويعمل بكفائه افضل من الكود السابق وبهذا انتهت المشكله الثانيه التي ذكرتها با اول الموضوع,☝️ اشكرك جزيل الشكر فوووكش على مشاركتك ودعمك ومساندتك الدائمه انت وجمييع الاساتذه وخبراء الموقع ❤️1 point
-
1 point
-
ممتاز جدا جدا وانا قمت بتجربة كود جلب الخطوط العربية فقط من النظام وسوف ادمج بينه وبين طريقتى لتمكين المطور او المستخدم من تحديد خطوط معينه ان اراد ذلك فى المستقبل وهذا الكود المنقح Option Compare Database Option Explicit '=== تعريف LOGFONT === Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName(0 To 31) As Byte End Type Private Const ARABIC_CHARSET As Byte = 178 Private Const DEFAULT_CHARSET As Byte = 1 '=== الـ API Declarations === #If VBA7 Then Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hWnd As LongPtr) As LongPtr Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hWnd As LongPtr, ByVal hdc As LongPtr) As Long Private Declare PtrSafe Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA" _ (ByVal hdc As LongPtr, lpLogFont As LOGFONT, ByVal lpEnumFontProc As LongPtr, _ ByVal lParam As LongPtr, ByVal dwFlags As Long) As Long #Else Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long Private Declare Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA" _ (ByVal hdc As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, _ ByVal lParam As Long, ByVal dwFlags As Long) As Long #End If Private m_FontList As Collection '=== الدالة الرئيسية === Public Sub LoadArabicFonts(cbo As Control, Optional IncludeNonArabic As Boolean = False) On Error GoTo ErrorHandler ' التحقق من صحة الـ Control If cbo Is Nothing Then Err.Raise 91, , "Control غير صالح" ' تهيئة القائمة بأمان SafeClearCombo cbo cbo.RowSourceType = "Value List" ' تحميل الخطوط Set m_FontList = New Collection If LoadSystemArabicFonts(IncludeNonArabic) Then PopulateComboBox cbo Else SafeAddItem cbo, "خطوط غير متوفرة" End If Exit Sub ErrorHandler: SafeClearCombo cbo SafeAddItem cbo, "خطأ في تحميل الخطوط" Debug.Print "LoadArabicFonts Error: " & Err.Number & " - " & Err.Description End Sub '=== وظائف مساعدة آمنة === Private Sub SafeClearCombo(cbo As Control) On Error Resume Next cbo.Clear On Error GoTo 0 End Sub Private Sub SafeAddItem(cbo As Control, itemText As String) On Error Resume Next cbo.AddItem itemText On Error GoTo 0 End Sub '=== تحميل الخطوط من النظام === Private Function LoadSystemArabicFonts(IncludeNonArabic As Boolean) As Boolean Dim hdc As LongPtr Dim lf As LOGFONT ' إعداد LOGFONT للخطوط العربية lf.lfCharSet = IIf(IncludeNonArabic, DEFAULT_CHARSET, ARABIC_CHARSET) ' الحصول على Device Context #If VBA7 Then hdc = GetDC(0) #Else hdc = GetDC(0&) #End If If hdc = 0 Then Exit Function On Error GoTo Cleanup EnumFontFamiliesEx hdc, lf, AddressOf EnumFontProc, 0, 0 Cleanup: LoadSystemArabicFonts = (m_FontList.Count > 0) #If VBA7 Then ReleaseDC 0, hdc #Else ReleaseDC 0&, hdc #End If On Error GoTo 0 End Function '=== Callback للخطوط === #If VBA7 Then Private Function EnumFontProc(lpelf As LOGFONT, ByVal lpntm As LongPtr, _ ByVal FontType As Long, ByVal lParam As LongPtr) As Long #Else Private Function EnumFontProc(lpelf As LOGFONT, ByVal lpntm As Long, _ ByVal FontType As Long, ByVal lParam As Long) As Long #End If On Error Resume Next Dim fName As String fName = StrConv(lpelf.lfFaceName, vbUnicode) fName = Left$(fName, InStr(fName, ChrW(0)) - 1) fName = Trim$(fName) ' فلتر TrueType فقط + تجنب التكرار If Len(fName) > 2 And (FontType And 4) = 4 And Not FontExists(fName) Then m_FontList.Add fName, fName ' Debug.Print "Font added: " & fName ' للاختبار End If EnumFontProc = 1 End Function '=== فحص وجود الخط === Private Function FontExists(fontName As String) As Boolean Dim f As Variant On Error Resume Next Set f = m_FontList(fontName) FontExists = (Err.Number = 0) On Error GoTo 0 End Function '=== ملء القائمة مع الترتيب === Private Sub PopulateComboBox(cbo As Control) Dim arr() As String Dim i As Long If m_FontList.Count = 0 Then Exit Sub ' تحويل Collection إلى Array ReDim arr(1 To m_FontList.Count) For i = 1 To m_FontList.Count arr(i) = m_FontList(i) Next i ' ترتيب سريع QuickSort arr, LBound(arr), UBound(arr) ' إضافة للـ ComboBox For i = LBound(arr) To UBound(arr) cbo.AddItem arr(i) Next i End Sub '=== Sort === Private Sub QuickSort(arr() As String, ByVal low As Long, ByVal high As Long) Dim pivot As String, i As Long, j As Long, temp As String If low < high Then pivot = arr((low + high) \ 2) i = low: j = high Do While StrComp(arr(i), pivot, vbTextCompare) < 0: i = i + 1: Wend While StrComp(arr(j), pivot, vbTextCompare) > 0: j = j - 1: Wend If i <= j Then temp = arr(i): arr(i) = arr(j): arr(j) = temp i = i + 1: j = j - 1 End If Loop While i <= j If low < j Then QuickSort arr, low, j If i < high Then QuickSort arr, i, high End If End Sub '=== وظيفة اختبار === Public Function GetArabicFontsCount() As Long Set m_FontList = New Collection LoadSystemArabicFonts False GetArabicFontsCount = m_FontList.Count End Function1 point
-
تفضل يا أبا سليمان بالمعادلات فقط اسحب المعادلات إلى آخر سطر تريده ترتيب حسب التاريخ3.rar تفضل يا أبا سليمان بالمعادلات فقط اسحب المعادلات إلى آخر سطر تريده1 point
-
اخي الكريم ابو أحمد السلام عليكم ورحمة الله وبركاته تم ضبط كود شهر نوفمبر بالمرفقات مع تحياتي Charts Form.rar1 point