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

Foksh

الخبراء
  • Posts

    4835
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    221

كل منشورات العضو Foksh

  1. شكراً لك مهندسنا الغالي على متابعتك .. الفكرة السابقة ، عملت على جهاز ولم تعمل على جهاز آخر .. لذا قد يكون التعديل بحذف مصدر صف الليست بوكس lstAPI . وحفظ النموذج واعتماده بدون مصدر صف له . وسيتم تحميلها عند فتح النموذج تلقائياً . ويمكن لنا أن نضع السطر التالي :- Me.lstAPI.RowSource = "" في حدث عند اغلاق النموذج .. وبالتالي لن يتم تعيين قيمة لمصدر صف الليست بوكس عند اغلاقه . أيضاً تحديث الدالة CX_CreateTables المسؤولة عن إنشاء الجداول ، بحيث تقوم بإظهار الجداول بعد إنشائها :- Private Sub CX_CreateTables() On Error GoTo EH Dim db As DAO.Database Dim ws As DAO.Workspace Dim td As DAO.TableDef Set db = CurrentDb Set ws = DBEngine.Workspaces(0) ws.BeginTrans If Not CX_TableExists(T_REG) Then db.Execute "CREATE TABLE " & T_REG & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_REG & " PRIMARY KEY, " & _ "ToolName TEXT(64) NOT NULL, " & _ "ToolVersion TEXT(32) NOT NULL, " & _ "InstalledOn DATETIME, " & _ "OfficeVersion TEXT(16), " & _ "Is64Bit YESNO)", dbFailOnError db.Execute "CREATE UNIQUE INDEX UX_" & T_REG & "_ToolName ON " & T_REG & " (ToolName)", dbFailOnError End If If Not CX_TableExists(T_OBJ) Then db.Execute "CREATE TABLE " & T_OBJ & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_OBJ & " PRIMARY KEY, " & _ "ObjName TEXT(128) NOT NULL, " & _ "ObjKind TEXT(32) NOT NULL, " & _ "Lines LONG, " & _ "LastScan DATETIME)", dbFailOnError db.Execute "CREATE UNIQUE INDEX UX_" & T_OBJ & "_ObjNameKind ON " & T_OBJ & " (ObjName, ObjKind)", dbFailOnError db.Execute "CREATE INDEX IX_" & T_OBJ & "_Kind ON " & T_OBJ & " (ObjKind)", dbFailOnError End If If Not CX_TableExists(T_PROC) Then db.Execute "CREATE TABLE " & T_PROC & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_PROC & " PRIMARY KEY, " & _ "ObjName TEXT(128) NOT NULL, " & _ "ObjKind TEXT(32) NOT NULL, " & _ "ProcName TEXT(128) NOT NULL, " & _ "ProcKind TEXT(32) NOT NULL, " & _ "StartLine LONG, " & _ "ProcLines LONG, " & _ "LastScan DATETIME)", dbFailOnError db.Execute "CREATE INDEX IX_" & T_PROC & "_Obj ON " & T_PROC & " (ObjName, ObjKind)", dbFailOnError db.Execute "CREATE INDEX IX_" & T_PROC & "_Proc ON " & T_PROC & " (ProcName)", dbFailOnError End If If Not CX_TableExists(T_API) Then db.Execute "CREATE TABLE " & T_API & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_API & " PRIMARY KEY, " & _ "ApiName TEXT(128), " & _ "Category TEXT(64), " & _ "Description LONGTEXT, " & _ "Code LONGTEXT, " & _ "Is64Bit YESNO)", dbFailOnError db.Execute "CREATE UNIQUE INDEX UX_" & T_API & "_ApiName ON " & T_API & " (ApiName)", dbFailOnError End If ws.CommitTrans For Each td In CurrentDb.TableDefs If Left(td.name, 4) = "zCX_" Then DoCmd.SelectObject acTable, td.name, True End If Next td Exit Sub EH: On Error Resume Next ws.Rollback ShowError "CX_CreateTables" End Sub
  2. وعليكم السلام ورحمة الله وبركاته .. هل جربت أن تحدد الشرط للحقل StuSery داخل الاستعلام مصدر التقرير أن يساوي Is Null
  3. الفكرة التي تم تنفيذها أعلاه ، تتعامل مع حركات الصور داخل النموذج ، وليس الهدف منها وضع نص أو زر أو عنصر يرمش عند تحديث بيانات 😅 . بل كان تعاملي مع الدالة داخل نموذج يضم 150 صورة مع خلفية النموذج . انظرو الصورة لقبل وبعد تنفيذ الدالة .
  4. هل تقصد هذه الفكرة ؟؟ لغز.zip
  5. تنفيذ الفكرة البسيطة بطريقتي على ويندوز 10 😅 وبما أنك اعتمدت على DWM المدمجة في الويندوز 11 و حتى الويندوز 10 ولكن بميزات إضافية ليست في الويندوز 10 . لذا استخدمت اسلوب الحيلة على النموذج لتطبيق فكرة الإنحناء للنموذج وتغيير لون شريط العنوان ونصه باستخدام مستطيل و ليبل . طبعاً مع تحديد قيمة حدود النموذج = None وهي نقطة مهمة في التنفيذ والإستجابة الصحيحة . طبعاً فكرتي ليست بجمال فكرتك بالتنفيذ الملف بعد التطبيق .. أداة تخصيص شريط العنوان - محدثة.zip
  6. لاحظت نقطة قد سقطت سهواً ، وهي ضبط العنصر Label61 = ليبل ، ليكون خلف أزرار الفرز Btn_SortDec و Btn_SortAsc أو بتصغير عرضه قليلاً وبكم بالك الله أستاذ محمد فرحات شكراً لمرورك أخي كمال ، بارك الله بك ، وزادكم من العلم والإيمان .. شكراً لمرورك
  7. تمت التجربة على ويندوز 10 نسخة برو نواة 64 ، ولم تعمل ، كما توقعتم. بعد التجربة على ويندوز 11 ، الفكرة جميلة جداً ، وتعمل بشكل رائع ، أما ويندوز 10 فهي فعلاً لم تعمل كما هو متوقع . ولكن بعد إجراء بعض التحسينات ، لاحظت انها عملت بشكل بسيط لبعض الخصائص في ويندوز 10 .
  8. أخواني وأساتذتي ومعلمينا ( دون استثناء ) ابدأ موضوعي هذا بسؤال يلامس ( نقاط الألم ) لدى المبرمجين :- هل سبق لك أن ورثت قاعدة بيانات اكسيس بآلاف السطور البرمجية وشعرت بالضياع مع كثرة الدوال والأكواد ؟ هل تبحث عن طريقة سحرية لتنظيف مشروعك من الأكواد الميتة والإجراءات غير المستخدمة ؟ هل تواجه مشاكل في توافق أكواد Windows API بين إصدارات Office 32-bit و 64-bit ؟ أهلاً بك في عالم Access Code Explorer - أول وأقوى مدير متكامل لمشاريع Access/VBA في العالم العربي . هذه ليست مجرد أداة ، بل مشروع متكامل يحول الـاكسيس الخاص بك إلى بيئة تطوير محترفة (IDE) بمعنى الكلمة . 1️⃣ القسم الأول : التحليل والاستكشاف (Analysis & Exploration) :- مستكشف الكائنات الذكي : شجرة متكاملة تعرض كل مكونات المشروع من ( جداول ، استعلامات ، نماذج ، تقارير ، موديولات و كلاسات ) بطريقة منظمة وقابلة للطي والفتح ( نظام الشجرة في ليست بوكس ). البحث العميق : ابحث عن أي نص برمجي أو كلمة في جميع الإجراءات والاستعلامات دفعة واحدة . الأداة ستظهر لك النتائج وتضع علامة مرجعية على السطر الذي تم العثور عليه داخل الكود ! عرض SQL بشكل احترافي : عند اختيار أي استعلام ، ترى كوده مع تصنيف لنوعه ( استعلام تحديث ، إضافة ، حذف ، توحيد ... إلخ ) وإمكانية تحويله إلى كود VBA جاهز بنقرة واحدة . إحصائيات دقيقة : عرض عدد الجداول ، الاستعلامات ، النماذج ، التقارير ، الموديولات ، الكلاسات ، وإجمالي سطور الأكواد في مشروعك . الأداة قادرة على اكتشاف إصدار الأوفيس ونواته ، وإصدار الويندوز ونواته أيضاً في التعليق التوضيحي للنموذج عند فتحه . 2️⃣ القسم الثاني : أدوات الصيانة والتحسين ( Maintenance & Optimization ) :- 🧹 كشف وإزالة الإجراءات غير المستخدمة ( Dead Code ) :- يقوم بتحليل علاقات الاستدعاءات بين الإجراءات ( Call Graph ) . يحدد بدقة الإجراءات التي لا يتم استدعاؤها من أي مكان . ميزة الأمان : يقوم بإنشاء نسخة احتياطية تلقائية لجميع الإجراءات قبل حذفها ! 3️⃣ القسم الثالث : مصحح الأكواد الشامل (VBA Fixer) :- إزالة الأسطر الفارغة المكررة . حذف الإجراءات الفارغة . تعطيل أو إزالة أوامر Debug.Print و Stop . إعادة تنسيق الكود بالكامل ( Code Formatting ) مع مسافات بادئة ذكية . اكتشاف وإصلاح أخطاء معالج الأخطاء ( On Error Goto ) الميتة . إضافة ( On Error GoTo 0 ) المفقودة بعد استخدام ( On Error Resume Next ) . توحيد وإصلاح أسطر Option Explicit و Option Compare في كل الموديولات والكائنات . اكتشاف المتغيرات غير المستخدمة . ( سيتم إضافته قريباً ) وضعان للتشغيل : 🌐 الوضع الشامل : لتحليل وإصلاح المشروع بأكمله . 🎯 الوضع الفردي : لتحليل وإصلاح إجراء واحد فقط ( الذي تحدده في القائمة ) . 4️⃣ القسم الرابع : ثورة إدارة Windows APIs :- 📚 مكتبة APIs مدمجة : تحتوي على عشرات من أشهر دوال Windows API مصنفة حسب الوظيفة ( Window, File, Registry, Process, Memory, Network... ). 🧠 كشف وحل مشاكل التوافق ( API Compatibility Checker ) :- يكتشف تلقائياً الـ APIs المكررة في جميع أنحاء المشروع . يحدد لك أفضل مكان للاحتفاظ بالـ API ( يفضل الموديولات العامة ) . يكشف مشاكل الـ 64-bit : يجد جميع الدوال التي تفتقد إلى PtrSafe أو تستخدم Long بدلاً من LongPtr . 💉 حقن وإدراج الـ APIs بذكاء : على سبيل المثال ؛ إذا استخدمت دالة CreateFile في كودك ولم تعلن عنها ، الأداة تكتشف ذلك وتقوم بإضافتها تلقائياً إلى موديول مركزي Mod_Foksh وتحويلها إلى Public لتكون متاحة في كل مكان . 📝 شرح وأمثلة استخدام : لكل API في المكتبة شرح مبسط وأمثلة جاهزة للنسخ واللصق . 5️⃣ القسم الخامس : واجهة مستخدم ذكية :- أزرار تحكم سريعة : طي/ فتح كل المجموعات بنقرة واحدة ، ترتيب الإجراءات تصاعدي/تنازلي . قوائم منظمة (Menus) : تم تقسيم الأدوات إلى قائمتين (Menu01, Menu02) لتجنب ازدحام الواجهة . مؤشرات بصرية : أثناء عمليات الإصلاح الطويلة ، ترى أي جزء يعمل حالياً من خلال تغير لون التسميات التوضيحية . ☢ متطلبات التشغيل (Requirements) :- مايكروسوفت اكسيس 2010 أو أحدث (يفضل 2013/2016/365) . ♻ طريقة التثبيت ( Installation ) :- قم بفتح قاعدة البيانات التي ترغب في تحليلها . فقط قم باستيراد ( نسخ و لصق ) النموذج Frm_Foksh إلى مشروعك . قم بفتح النموذج . الأداة ستقوم تلقائياً بإنشاء الجداول اللازمة عند أول تشغيل . استمتع بالمستوى الجديد من التحكم ! ‼ تعليمات الأمان ( Safety Instructions - مهم جداً ) :- ⚠️ تنبيه هام قبل استخدام أي ميزة للحذف ( مثل Delete Unused Procedures ) ، الأداة تقوم تلقائياً بإنشاء نسخة احتياطية بصيغة txt في نفس مجلد قاعدة البيانات الحالية . يُنصح دائماً بأخذ نسخة احتياطية كاملة من ملف قاعدة البيانات قبل تجربة أدوات التعديل الجماعي . إذا كان مشروعك محمي بكلمة مرور ، الأداة لن تتمكن من قراءة الأكواد حتى تقوم بإلغاء الحماية مؤقتاً . 📸 واجهة الأداة المتواضعة :- قد لا تخلو الأداة من بعض الأخطاء البسيطة حالياً في الواجهة ، ولكن الوظائف جميعها تعمل بشكل سليم . والأخطاء الواردة قد تكون في ضبط عناصر الواجهة ليس إلا . ⛔ لا تحاول التغيير في الأكواد الخاصة بالنموذج ، ما لم تكن على دراية كافية بما تقوم به من تعديلات ⛔ ملف الأداة للتحميل :- Access KitTools - Master 1.0.accdb.zip
  9. أهلاً بكم في التحدي الثاني من سلسلة "الفعاليات والتحديات الشهرية". بعد الإستفتاء والإستطلاع الذي تم ؛ وقع اختيار المصوتين على الموضوع :- 2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات .. وعليه ، فأن هذا التحدي محفوف بالإثارة والمتعة الكبيرين لأنه سيكون مفتوح الأفق من أوسع أبوابه بحيث ستكون :- 📖 قصة التحدي :- طلب منك عزيزي المشارك ( المصنع التقني نفسه ) بناء نظام تسجيل دخول محترف وعالي الجودة برمجياً وتصميمياً كواجهة ، يتمتع بمزايا تمنح المسؤول منح الصلاحيات للمستخدمين بطريقة قوية ومتينة . 🛠️ المطلوب :- إنشاء جدول باسم tbl_Users للمستخدمين ، وأي جداول أخرى تحتاجها لإدارة الصلاحيات . 🚫 شروط التحدي :- يجب عليك ضبط إعدادات التحدي ، بحيث يكون هناك جزء لإدارة المستخدمين وكلمات المرور ، والصلاحيات بالطريقة التي تريدها وتراها في مخيلتك الواسعة . دون أي قيود في تنفيذ الفكرة . 🚫 قوانين المشاركة :- السقف مفتوح للمشاركين بالطريقة والوسيلة والأسلوب الذي يراه مناسباً لتنفيذه الفكرة . استخدام واجهة جذابة لواجهة تسجيل الدخول . أو واجهة الإعدادات والصلاحيات . مدة الإشتراك بتقديم الأعمال والأفكار سيكون 30 يوماً من تاريخ الموضوع اليوم 10-03-2026 ، وتنتهي بإذن الله بتاريخ 10-04-2026 ♻ كيف تشارك ؟ قم برفع ملف مرفق فقط . وتذكر أنك عزيزي المشارك تملك الحق في 3 محاولات لإجاباتك خلال التحدي الواحد فقط .
  10. في ظل التفاعل المتواضع ، تم اعتماد الفكرة :- 2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات .. للتطبيق والتنفيذ وطرحها في موضوع مستقل إن شاء الله . شكراً من القلب لكل من تفاعل ولكل من مر من هنا . سيتم الإعلان عن الفكرة والمطلوب تنفيذها وشروطها وجميع معطياتها في موضوع قريب منفصل
  11. ⏳ باقي من الوقت ساعات قليلة حتى نهاية وقت الإستفتاء ..
  12. فكرة برضو .. لكن يكفيني نجاح التجربة بنسبة 101% 😉
  13. جربت الفكرة ؟؟؟؟ مش هتخسر حاجة
  14. فعلاً ليس هناك رد 🤣 مش عارف إذا فكرتك اللي جربت عليها منطقية حتى اعتمدها للتعديل أم لا 😅 ، هو في منطق في هذا الكود ؟؟ Private Sub Form_Timer() Me.ClockTxt.Requery Me.cTimeTxt.Requery End Sub
  15. وعليكم السلام ورحمة الله وبركاته .. ارفق ملفك أخي الكريم لتلافي اختلاف الإجابات عن طبيعة ملفك .
  16. أخواني وأساتذتي ومعلمينا ( دون استثناء ) بعد المعاناة التي تواجه كل مبرمج أو هاوي أو محترف في التعامل مع الصور داخل آكسيس ، بوجود الترميش أو الوميض . وكنت قد طرحت تساؤلاً حول آلية تجنب هذه المشكلة عند تعامل آكسيس مع الصور داخل النماذج الحركية . خرجت بهذه الفكرة البسيطة والتي آمل أن تكون الحل الشافي لهذه المعضلة - كما عودناكم دائماً - بإيجاد الحل السحري لها . الفكرة تم ترجمتها بأسلوب بسيط بحيث نجعل النموذج يقوم برسم الأحداث دفعة واحدة بدلاً من رسم كل حركة بشكل منفصل أثناء التعامل مع الصور . الدالة المستخدمة :- '********************************************** '*** *** '*** FFFFFF OOO KK KK SSSS HH HH *** '*** FF O O KK KK SS HH HH *** '*** FFFFF O O KKK SS HHHHHH *** '*** FF O O KK KK SS HH HH *** '*** FF OOO KK KK SSSSS HH HH *** '*** *** '********* Anti Flicker By Foksh 2026 ********* Option Compare Database Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongPtrA" _ (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongPtrA" _ (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr Private Declare PtrSafe Function SetWindowPos Lib "user32" _ (ByVal hWnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal uFlags As Long) As Long #Else Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function SetWindowPos Lib "user32" _ (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal uFlags As Long) As Long #End If Private Const GWL_EXSTYLE As Long = -20 Private Const WS_EX_COMPOSITED As Long = &H2000000 Private Const SWP_NOMOVE As Long = &H2 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOZORDER As Long = &H4 Private Const SWP_FRAMECHANGED As Long = &H20 Public Sub Form_SetComposited(ByVal frm As Access.Form, ByVal EnableIt As Boolean) On Error Resume Next #If VBA7 Then Dim h As LongPtr: h = frm.hWnd Dim ex As LongPtr: ex = GetWindowLongPtr(h, GWL_EXSTYLE) If EnableIt Then If (ex And WS_EX_COMPOSITED) = 0 Then Call SetWindowLongPtr(h, GWL_EXSTYLE, (ex Or WS_EX_COMPOSITED)) End If Else If (ex And WS_EX_COMPOSITED) <> 0 Then Call SetWindowLongPtr(h, GWL_EXSTYLE, (ex And Not WS_EX_COMPOSITED)) End If End If Call SetWindowPos(h, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED) #Else Dim h32 As Long: h32 = frm.hWnd Dim ex32 As Long: ex32 = GetWindowLong(h32, GWL_EXSTYLE) If EnableIt Then If (ex32 And WS_EX_COMPOSITED) = 0 Then Call SetWindowLong(h32, GWL_EXSTYLE, (ex32 Or WS_EX_COMPOSITED)) End If Else If (ex32 And WS_EX_COMPOSITED) <> 0 Then Call SetWindowLong(h32, GWL_EXSTYLE, (ex32 And Not WS_EX_COMPOSITED)) End If End If Call SetWindowPos(h32, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED) #End If End Sub مع ترك المساحة بالتفعيل أو التعطيل حسب الحاجة . بحيث يتم الاستدعاء لها في حدث عند التحميل للنموذج بهذا الأسلوب البسيط :- Form_SetComposited Me, True أو التعطيل بهذا الشكل :- Form_SetComposited Me, False الملف مفتوح المصدر . لمن يرغب بالتجربة على مشروعه ، فضلاً وكرماً منه بإخباري بالنتيجة أن كانت ناجحة أم لا . علماً أنه تم استخدام الفكرة نفسها في إنشاء لعبة الأونو في هذا الموضوع مسبقاً ، والنتيجة كما شاهدتموها في أداء اللعبة والتعامل مع الصور بشكل دقيق لتخرج اللعبة كتجربة دون أي ترميش أو وميض عند حركة الصور داخل النماذج . Anti Flicker.accdb
  17. شو رأيكم نخلي اللعبة تنتقل لمستوى أكبر ، بحيث نخليها قابلة للّعب على الشبكة المحلية ؟؟؟
  18. 🤔 يعني تريد ألغاء الدمج للخلايا التي تم دمجها ، مع إعادة القيم لكل خلية !!! تمام ، جرب هذا الماكرو أ واستعمله في حدث عند النقر لأي زر مثلاً :- Sub UnMergeFoksh() Dim ws As Worksheet Dim r As Long, c As Long Dim mArea As Range Dim cellText As String Set ws = ActiveSheet Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual For r = 4 To 20 For c = 2 To 36 If ws.Cells(r, c).MergeCells Then Set mArea = ws.Cells(r, c).MergeArea cellText = ws.Cells(r, c).Text mArea.UnMerge mArea.NumberFormat = "@" mArea.Value = "'" & cellText mArea.HorizontalAlignment = xlCenter mArea.VerticalAlignment = xlCenter End If Next c Next r Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End Sub طبعاً اعتقد انك هنا ستستغني عن حدث عند التغيير للورقة السابق .. ويصبح ملفك كالتالي للحدثين مع إضافة زرين . merge cell.xlsm
  19. وعليكم السلام ورحمة الله وبركاته .. بداية أعتقد أن التنسيق الشرطي سيكون عقبة ومشكلة كونه - على حد علمي - لا يوم بالدمج للخلايا كما تريد . لذا ؛ لجأت لإستخدام دالة بسيطة كالتالي :- Sub MergeFokshCells() Dim ws As Worksheet Dim lastRow As Long Dim dayRanges As Variant Dim i As Long, j As Long, startCol As Long Dim d As Long Application.DisplayAlerts = False Set ws = ActiveSheet lastRow = 20 dayRanges = Array(Array(2, 8), Array(9, 15), Array(16, 22), Array(23, 29), Array(30, 36)) For i = 4 To lastRow For d = LBound(dayRanges) To UBound(dayRanges) j = dayRanges(d)(0) Do While j <= dayRanges(d)(1) If ws.Cells(i, j).Value <> "" Then startCol = j Do While j < dayRanges(d)(1) And ws.Cells(i, j).Value = ws.Cells(i, j + 1).Value j = j + 1 Loop If j > startCol Then ws.Range(ws.Cells(i, startCol), ws.Cells(i, j)).Merge ws.Cells(i, startCol).HorizontalAlignment = xlCenter ws.Cells(i, startCol).VerticalAlignment = xlCenter End If End If j = j + 1 Loop Next d Next i Application.DisplayAlerts = True End Sub وتستطيع استدعائها بحدث عند التغيير مثلاً داخل الورقة ، بالشكل التالي :- Private Sub Worksheet_Change(ByVal Target As Range) Call MergeFokshCells End Sub أو حتى في حدث عند الفتح إن أردت بنفس الأسلوب :- Private Sub Workbook_Open() Call MergeFokshCells End Sub جرب وأخبرني بالنتيجة ، طبعاً بعد حفظ الملف بصيغة . جرب دون أرفاقي الملف لتتعرف على النتيجة .
  20. تنفيذاً لما ذكرته لك :- قمت بتغيير عنصر الصورة القديم الى عنصر صورة غير منضم فقط . والحدث في بعد التحديث للكومبوبوكس :- Private Sub cmbUser_AfterUpdate() On Error GoTo Err_Handler Me.txtFullName = DLookup("fullname", "tblUsers", "username = '" & Me.cmbUser.Column(1) & "'") Me.imgPhoto.Picture = DLookup("Photo", "tblUsers", "username = '" & Me.cmbUser.Column(1) & "'") Exit Sub Err_Handler: MsgBox "حدث خطأ : الصورة غير موجودة في المجلد", vbCritical + vbMsgBoxRight, "خطأ" Me.imgPhoto.Picture = "" End Sub أما فكرة الأستاذ خليفة فهي جميلة لأنها تقوم ببناء المسار الكامل للصورة أولاً . ثانياً أسهل لإضافة حقول أخرى في المستقبل ، لو حبيت تطور الفكرة . ثالثاً تتعامل مع جميع الإحتمالات . وانا افترضت أن مسار الصور في الحقول ثابت وغير قابل للعبث لكني اقترحت الفكرة من باب التوسع في الخيارات saad1.zip
  21. وعليكم السلام ورحمة الله وبركاته.. ابسط طريقة هي استخدام الدالة Dlookup بشرط رقم الموظف الفريد . لم اطلع على الملف ، هي مجرد فكرة.
  22. تمهيداً للتحدي الثاني ، وللإنتقال إلى مرحلة أكبر عن المستوى الأول . وإنطلاقاً من باب المشاركة للجميع . سنتجه للأخذ بترشيحكم لموضوع من بين 3 مواضيع ، ليتم طرحه كسؤال التحدي الثاني . 1️⃣ إنشاء مؤقتة الصلوات .. 2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات .. 3️⃣ إنشاء نظام قارئ للنصوص متعدد الخصائص ..
  23. المشاركة التي كان لها نصيب الإعجاب في إجابتها ، كانت للأخ @Debug Ace . في هذه المشاركة هنا
×
×
  • اضف...

Important Information