بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 11/23/15 in all areas
-
السلام عليكم ورحمة الله وبركاته تحياتى وتقديرى لجميع أحبائى أعضاء وأساتذة هذا الصرح العلمى الهائل أدخل المعادلة الأتية بأى خلية داخل الإكسيل وشاهد النتيجة بنفسك تحياتى =CHAR(225)&CHAR(199)&CHAR(32)&CHAR(197)&CHAR(225)&CHAR(229)&CHAR(32)&CHAR(197)&CHAR(225)&CHAR(199)&CHAR(32)&CHAR(199)&CHAR(225)&CHAR(225)&CHAR(229)&CHAR(32)&CHAR(227)&CHAR(205)&CHAR(227)&CHAR(207)&CHAR(32)&CHAR(209)&CHAR(211)&CHAR(230)&CHAR(225)&CHAR(32)&CHAR(199)&CHAR(225)&CHAR(225)&CHAR(229)7 points
-
كلمة شكر وعرفان الى صاحب القلب الطيب الى صاحب النفس الابيه الى صحاب الابتسامه الفريده استاذى الفاضل السيد المهندس المحترم محمد طاهر مدير جامعه اوفيسنا اتقدم لحضرتك بخالص الشكر والتقدير على تثبيتكم لموضوع سلسلة علمنى كيف اصطاد شروحات الفورم ان قلت شكرى فشكرى لن يوفيكم حقا سعيتم للخير فكان جزاء السعى من رب العالمين لكم مشكورا أسال الله تعالى ان تكون هذه الشروحات علما نافعا ينتفع به4 points
-
بسم الله الرحمن الرحيم اليوم هنعرف ازاي نعمل صلاحيات للوصول لشيتات معينه داخل ملف الاكسيل ولكن اولا نقوم بمراجعه درس اعمل شاشة دخول برنامجك بنفسك وسيبك من التقليد http://www.officena.net/ib/topic/64832-اعمل-شاشة-دخول-برنامجك-بنفسك-وسيبك-من-التقليد/ بعد ما راجعنا الدرس السابق نبدأ من حيث انتهينا الأساسيات الشاشة الرئيسية الصفحات الأخرى وأخيرا صفحة معلومات الدخول والصلاحيات ودي أسماء الصفحات داخل الشيتات وبرمجيا نقوم بتصميم نفس الصفحات السابقة أظن سهلة العملية لحد دلوقتي حان دور الاكواد نبدأ بالاكواد السهلة في كل صفحة غير الرئيسية بها زر رجوع نضع الاكواد كالاتي صفحة ادخال البيانات في زر الرجوع Sub yasser1() index.Activate sheet1.Visible = xlSheetVeryHidden End Sub السطر الاول للرجوع للصفحة الرئيسية السطر الثاني لاخفاء صفحة ادخال البيانات وهي شيت1 وتكرر في الصفحات المتبقية صفحة الاستعلام Sub yasser2() index.Activate sheet2.Visible = xlSheetVeryHidden End Sub صفحة قاعدة البيانات Sub yasser3() index.Activate sheet3.Visible = xlSheetVeryHidden End Sub صفحة المستخدمون users Sub mohamed1() index.Select users.Visible = xlSheetVeryHidden End Sub وقبل ان نترك صفحة اليوزرز نضع هذه المعادلات =IF(J2="";"";VLOOKUP(J2;A2:E8;3;FALSE)) =IF(J2="";"";VLOOKUP(J2;A2:E8;4;FALSE)) =IF(J2="";"";VLOOKUP(J2;A2:E8;5;FALSE)) هذه الدوال تجلب بيانات المستخدم من جدول المستخدمين ومنها نقوم بالتحكم في صلاحياته الآن حان دور الصفحة الرئيسية نضع في اول زر وهو زر ادخال البيانات الكود التالي Sub aseel1() If users.Range("k2") = "yes" Then Application.ScreenUpdating = False sheet1.Visible = xlSheetVisible sheet1.Select Else MsgBox "انت لا تمتلك الصلاحية لدخول هذه الصفحة ", vbCritical, "elmalak_elhazen_yasser@yahoo.com" Application.ScreenUpdating = True End If End Sub زر الصفحة الثانية صفحة الاستعلام Sub aseel2() If users.Range("L2") = "yes" Then Application.ScreenUpdating = False sheet2.Visible = xlSheetVisible sheet2.Select Else MsgBox "انت لا تمتلك الصلاحية لدخول هذه الصفحة ", vbCritical, "elmalak_elhazen_yasser@yahoo.com" Application.ScreenUpdating = True End If End Sub زر الصفحة الثالثة صفحة قاعدة البيانات Sub aseel3() If users.Range("m2") = "yes" Then Application.ScreenUpdating = False sheet3.Visible = xlSheetVisible sheet3.Select Else MsgBox "انت لا تمتلك الصلاحية لدخول هذه الصفحة ", vbCritical, "elmalak_elhazen_yasser@yahoo.com" Application.ScreenUpdating = True End If End Sub زر الصفحة الرابعة صفحة صلاحيات اليوزرز وهنا سنغير الكود سنعطى لهذه الصفحة كلمة مرور خاصة غير باقي الصفحات Sub mohamed() Dim x x = InputBox("يرجى ادخال كلمة المرور.", "Password Required") If x = "123" Then users.Visible = xlSheetVisible users.Select Else MsgBox "كلمة المرور خطأ يرجى اعداة المحاولة" End If End Sub اكواد الصفحات تعتمد علي اول سطر يقوم بمقارنة الخلية الخاصة بالصفحة اذا كانت بها كلمة yes فيسمح بالدخول اما غير ذلك لا يمكن الدخول والجزء الثان من الكود يقوم باظهار الصفحة عند تحقق الشرط والذهاب اليها ينقصنا سطر صغير لاتمام الموضوع نسخ اسم المستخدم عند الدخول الى الخلية المحددة ليتم جلب بيانته عن طريق اسمه وتتم كالاتي يتم وضع الكود في حدث زر الدخول users.Range("j2") = ComboBox1.Value وبكدا يكون انتهى الدرس تقبلوا تحياتي ياسر العربي لو مكسلين تطبقوا احط ليكم مرفق وخلاص وادي مرفق الشرح PDF صلاحيات.rar4 points
-
أخي وحبيبي في الله ياسر العربي لقد أبدعت في هذا الموضوع بشكل كبير جداً .. وطرحك في منتهى الروعة والموضو متميز ومفيد وبحمد الله وتوفيقه قمت بتغطيته بشكل ممتاز .. ولكن اسمح لي ببعض الملحوززات الصغيرة جداً .. قد لا تهم الكثيرين ولكن تهمني أولاً يجب مراعاة بدء انتشار التعامل مع 64 بت ..فمتنساش إخوانك الذين لديهم ويندوز 64 بت وأوفيس 64 بت في الفورم قم باستبدال أسطر الإعلان بهذه الأسطر ليتوافق مع 32 بت و64 بت #If VBA7 Then Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As LongPtr) As Long #Else Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 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 DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long #End If ثانياً أحب التخلص من الزيادات الغير مرغوب فيها فمثلا يوجد موديول 1 فيه أمر بإظهار الفورم 1 ، ولا وجود للفورم ومن ثم لا داعي للموديول (راعي أن هناك من يقتبس وفقط .. بالتالي ستكون زيادة ليس لها داعي) ثالثاً : في كود زر الامر دخول CommandButton1 قمت بوضع السطر التالي If Application.WorksheetFunction.VLookup(ComboBox1.Value, Users.Range("A2:B50"), 2, 0) = TextBox1.Text Then في المرفق الخاص بك جعلت النطاق L50 (لما قمت بتوسيع النطاق بهذا الشكل ؟ لما لم تكتفي بالعمودين اللذين بهما أسماء المستخدمين وكلمات السر رابعاً : حاول استخدام برنامج يقوم بضبط أسطر الكود ليسهل الإطلاع عليه خامساً : لا يسعني إلا أن أقول لك جزيت خيراً .. جزيت خيراً .. جزيت خيراً .. فوالله إن الموضوع رائع وجد مفيد ومتميز وما أردت إلا النقد البناء الذي يسهم في علو شأن الموضوع لا أن أبخسه حقه تقبل وافر تقديري واحترامي4 points
-
السلام عليكم ورحمة الله وبركاته أستاذ جديد ودرس مفيد ...نكن كل احترامنا وتقديرنا لأساتذتنا الذين ينقبون عن النفائس من أمهات الكتب يبحثون بين السطور ليغرسوها في الصدور نبتات رائعة الجمال يسقونها بمداد المحبة التي تغشى القلوب .. أخي الحبيب الصقر برعت وواظبت ببرنامج شرح الفورم .. جزاك الله خيرا أخي الحبيب ياسر برعت كذلك بشرح صلاحيات الدخول وسندخل معك في رحاب دروسك وأنت مضياف ....ماذا بعد الدخول؟ بمعنى ننتظر دروسا أخرى هامة فوطن نفسك على العطاء . لا تؤاخذني على خطأي لأنه ليس على المريض حرج تقبل تحياتي والسلام عليكم.3 points
-
أخي الكريم ياسر العربي ايه علاقة ملفك الجميل والرائع بالموضوع .. صحيح الملف جميل وفكرته جميلة .. لكن ملوش علاقة بالموضوع دي نقطة نقطة تانية (وشكلي كدا هجيب لك النقطة بنقدي) ..اللي يحضر عفريت يصرفه يعني دلوقتي اللي هيفتح ملفك ساعتها هيتم إضافة قائمة مخصصة لديه في أي مصنف يفتحه يعني بقا عفريت ياسر العربي موجود في كل المصنفات ..سواء تحتوي على الكود أو لا ... يبقا اللي يحضر عفريت يصرفه ..يعني تيجي زي الشاطر في حدث إغلاق المصنف وقبل الإغلاق تضع كود يحذف القائمة المخصصة ... لو تحب أساعدك قولي2 points
-
الله أكبر الله أكبر الله أكبر تجمع الأخوة الأحباء على قول لا إله إلا الله محمد رسول الله شرفت بمروركم جميعا أحبائى فى الله حبيبى الغالى / ياسر العربى حبيبى الغالى / محمد الخازمي حبيبى الغالى / عبد العزيز البسكرى حبيبى وأستاذى ومعلمى القدير / ياسر خليل تقبلوا جميعا تحياتى وتقديرى2 points
-
تفضل عملنا جدول جديد مؤقت للطباعة tbl_Temp وفيه الحقول المطلوبة لطباعة الباركود: . فاصبح علينا في الكود ان نحذف جميع سجلات هذا الجدول ، ثم نضيف بيانات الباركود الجديد ، على حسب عدد السجلات المطلوبة ، وبعدها نفتح التقرير ، والذي عملنا مصدره tbl_Temp . والكود اصبح: Private Sub PRENT_Click() If Me.t3 = 0 Then MsgBox ("لابد ان يكون حقل عدد الملصقات اكبر من صفر") End If 'delete the tbl_Temp Records mySQL = "Delete * From tbl_Temp" CurrentDb.Execute (mySQL) 'add the number of Records Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From tbl_Temp") For i = 1 To Me.t3 rst.AddNew rst!SMALL_UNIT_PRICE = Me.SMALL_UNIT_PRICE rst!uuu = Me.uuu rst!uun = Me.uun rst!ITEM_CODE = Me.ITEM_CODE rst!ITEM_BARCODE = Me.ITEM_BARCODE rst!FACTOR = Me.FACTOR rst!ITEM_NAME2 = Me.ITEM_NAME2 rst!SUPP_CODE = Me.SUPP_CODE rst.Update Next i rst.Close: Set rst = Nothing 'now print the Report DoCmd.OpenReport "medicine" End Sub . السبب ان هذه الطريقة اسرع في الطباعة ، لأننا نرسل جميع السجلات الى التقرير مرة واحدة ، فالى الطابعة ، بينما في الطريقة السابقة ، كان هناك سجل واحد فقط في التقرير ، وكنا نفتح ونغلق التقرير عدة مرات لطباعة الباركود الواحد. وهنا اود ان ارفع الى اختنا الفاضلة الدكتورة أم عهود كل تحية واجلال واحترام لبُعد نظرها وبراعتها ، لأني اتذكر في منتدى الفريق العربي للبرمجة ، في موضوع طباعة الباركود ، انها عملت الكود لتحفظ سجلات الباركود في جدول مؤقت ، وانا وبسبب قلة خبرتي قلت انه من الافضل عدم عمل الجدول ، والطلب من التقرير الطباعة مباشرة (مثل ما عملنا سابقا) ، والآن فقط عرفت السبب ، وهو سرعة/بطئ الطباعة جعفر 272.BARCODE.accdb.zip2 points
-
تحديد بداية العمود المراد اخفاءة +سهم شمال فتحدد كل الاعمدة الباقية وعمل كليك يمين و اختيار اخفاء2 points
-
السّلام عليكم و رحمة الله و بركاته بارك الله فيكما الأستاذان القديران : ياسر العربي ياسر خليل أبو البراء جزاكما الله خيرًا و زادها بميزان حسناتكما على الأعمال المقدّمة من طرفكما و الحلول الأكثر من رائعة .. و بعد إذنكما بمشاركتكما بالموضوع من باب الاثراء و التّنويع بالحلول ..إضافة بعمل دوبل كليك لفتح الفورم بكامل الورقة في الورقة رقم 1.. و عمل دوبل كليك لفتح الفورم بنطاق محدّد في الورقة رقم 2 .. و عمل دوبل كليك بالورقة الثالثة لفتح الفورم بخلية محدّدة بذاتها ..الأكواد كلها بحدث الشيتات . فائق إحتراماتي و إعجاباتي دوبل كليك فتح الفورم.rar2 points
-
بعد المقدمه الحلوه فى الدرس السابق اليوم نقدر نتكلم عن الدرس بتاعنا وهو كيفية اضافه عناصر تحكم داخل الــ Frame عند فتح الفورم أو أثناء عمل الفورم وهو نشط مثال رقم 1 :- نشاهد الصوره التاليه ده فورم فى مرحلة التصميم وصممت عليه Frame وكما تلاحظون ان اسمه فى الخاصيه Name وهو Frame1 وهو الاسم اللى هنستخدمه فى كتابة الاكواد انا عايز اعرف ازاى اضيف عناصر تحكم اثناء فتح الفورم على سبيل المثال عايز اعمل كود فى حدث فتح الفورم لكى يظهر الفورم عند الفتح كالتالى شاهد الصوره طيب ايه هو الكود اللى انا عايز اكتبه فى حدث فتح الفورم ؟ حتى يكون الفورم عند الفتح بهذا الشكل عايز اكتب كود اضيف فيه Label واضيف فيه TextBox واضيف فيه ComboBox طيب ازاى نعمل ده ؟ تعالو نبدأ بأضافه ComboBox شاهد الكود ونشرحه Private Sub UserForm_Initialize() With Me.Frame1.Controls.Add("Forms.Combobox.1", "Combobox1") .Left = 20 .Top = 5 .Height = 40 .Width = 150 .BackColor = &HFFFFC0 .TextAlign = fmTextAlignCenter .FontSize = 20 .Font.Bold = True Dim a As Variant a = Array("ناجح", "راسب") .List = a End With End Sub الكود بكل بساطه يكمن فى السطر الاول استخدمنا With علشان اعرف الكود انى انا هتعامل مع الـ Frame1 فكتبت With Me.Frame1 طيب انا عايز ايه من الــ Frame1 عايز اضيف عنصر وهو ComboBox بداخله لذالك استخدمت Controls.Add طيب Controls.Add دى لها قاعدة ثابته اتكلمنا عنها قبل كدا (Controls.Add( ProgID , Name ,Visible ( "Controls.Add("Forms.Combobox.1" , "Combobox1 هنا Visible تكون التعبئة اختياريا وهى تحمل خيارين أما True أو False ويفضل عدم استخدامه ليه يا عمنا ؟ لان طالما فكرت تنشأ عنصر تحكم اثناء عملك على الفورم اذا انت اكيد عايز تظهره للمستخدم مش انك هتخفية ! بعد كدا عملت خصائص للكمبوبوكس الجديد اللى تم انشائه 1- الخاصيه Left ( وهى تعنى بعد هذا العنصر من الضلع الايسر للفريم بمقدار كذا ) انا قلت انه يبعد عن الضلع الايسر بمقدار 20 Left = 20. 2- الخاصيه Top ( وهى تعنى بعد هذا العنصر من الضلع الاعلى للفريم بمقدار كذا ) انا قلت انه يبعد عن الضلع الايسر بمقدار 10 Top= 10. 3- الخاصيه Height ( وهى تعنى كم يكون ارتفاع العنصر ) انا قلت ان ارتفاع العنصر 40 Height= 40. 4- الخاصيه Width ( وهى تعنى كم يكون عرض العنصر ) انا قلت ان عرضه العنصر 150 Width = 150. 5- الخاصيه BackColor( وهى خاصه بتحديد خلفية للعنصر) BackColor = &HFFFFC0. 6- الخاصيه TextAlign( وهى خاصه بتحديد المحاذاه للعنصر) TextAlign = fmTextAlignCenter. 7- الخاصيه Fontsize( وهى خاصه بتحديد حجم الخط للعنصر) FontSize = 20. 8- الخاصيه Font.Bold( وهى خاصه بتحديد سماكة الخط للعنصر) Font.Bold = True. 9- الخاصيه List( وهى خاصه بتعبئة الكمبوبوكس من خلال المصفوفه كما تلعمنا من قبل) طبعا ممكن تضيف خصائص اخرى للكمبوبوكس او تحذف خصائص من الامثله اللى ذكرناها كله حسب رئيتك انت وطبعا طالما فتحنا With أذن لازم نغلقها بــ EndWith ----------------------------------------------------------------------------------------------- بعد كدا عايز اضيف TextBox With Me.Frame1.Controls.Add("Forms.TextBox.1", "TextBox1") .Left = 180 .Top = 5 .Height = 40 .Width = 150 .TextAlign = 2 .FontSize = 20 .Font.Bold = True .BackColor = &HC0FFFF End With وطبعا الكود مش محتاج شرح لانه مفيش فى جديد ولكن هو عايز مهندس معمارى او شغال فى المساحه ليه ؟؟ لان لازم تحدد مكان العنصر فى الفريم وذالك سيكون من خلال الخاصيه Left كم يبعد التكست بوكس عن الضلع الايسر للفريم ؟؟؟؟ بكل بساطه انا فى الكمبوبوكس قلت يبعد 20 ثم عملت عرض الكمبوبوكس 150 اذن مجموعهم يساوى 170 يعنى المساحه بدأ من 0للضلع الايسر للفريم وحتى 170 مستغله أذن لازم يكون بعد التكست بوكس عن الضلع الايسر للفريم بمقدار اكبر من 170 فأنا عملت Left =180 ليكون هناك فاصل مقداره 10 بين نهاية الكمبوبوكس وبداية التكست بوكس الخاصيه Top اللى هى بعد التكست عن الضلع الاعلى للفريم خليتها=5 زى بالظبط الكمبوبوكس نفس البعد حتى يكون هناك تنسيق جمالى وكذالك الخاصيه Height ارتفاع التكست بوكس = 40 زى بالظبط ارتفاع الكمبوبوكس أما العرض Width جعلته 150 ( وتقدر تكبره او تصغره براحتك ) وباقى الخصائص معروفه ولا يوجد فيها شئ جديد ----------------------------------------------------------------------------------------------------- بعد كدا عايز اضيف Label With Me.Frame1.Controls.Add("Forms.Label.1", "Label1") .Left = 340 .Top = 5 .Height = 40 .Width = 150 .SpecialEffect = fmSpecialEffectEtched .TextAlign = 2 .FontSize = 24 .Font.Bold = True .BackColor = 8454016 .Caption = "الصقر" End With لازم تحديد مكان العنصر فى الفريم وذالك سيكون من خلال الخاصيه Left كم يبعد الليبل عن الضلع الايسر للفريم ؟؟؟ بكل بساطه انا عملت التكست بوكس يبعد عن الضلع الايسر بمقدار 180 وعملت عرضه 150 اذن 180+150=330 فأنا عملت Left =340 ليكون هناك فاصل مقداره 10 بين نهاية التكست بوكس وبين بداية الليبل الخاصيه Top اللى هى بعد الليبل عن الضلع الاعلى للفريم وجعلته = 5 نفس الكمبوبوكس والتكست بوكس لكى يكون هناك شكل منسق وجمالى وكذالك الخاصيه Height ارتفاع اليبل = 40 زى بالظبط ارتفاع الكمبوبوكس والتكست بوكس أما العرض Width جعلته 150 ( وتقدر تكبره او تصغره براحتك ) وباقى الخصائص معروفه ولا يوجد فيها شئ جديد شاهد الكود بشكله النهائى Private Sub UserForm_Initialize() With Me.Frame1.Controls.Add("Forms.Combobox.1", "Combobox1") .Left = 20 .Top = 5 .Height = 40 .Width = 150 .BackColor = &HFFFFC0 .TextAlign = fmTextAlignCenter .FontSize = 20 .Font.Bold = True Dim a As Variant a = Array("ناجح", "راسب") .List = a End With With Me.Frame1.Controls.Add("Forms.TextBox.1", "TextBox1") .Left = 180 .Top = 5 .Height = 40 .Width = 150 .TextAlign = 2 .FontSize = 20 .Font.Bold = True .BackColor = &HC0FFFF End With With Me.Frame1.Controls.Add("Forms.Label.1", "Label1") .Left = 340 .Top = 5 .Height = 40 .Width = 150 .SpecialEffect = fmSpecialEffectEtched .TextAlign = 2 .FontSize = 24 .Font.Bold = True .BackColor = 8454016 .Caption = "الصقر" End With End Sub وعند تشغيل الفورم ستجد الفورم كما هو بالصوره ---------------------------------------------------------------------------------------------------------------------- مثال رقم 2 :- لو انا عايز اعمل عدد 10 لليبل وعدد 10 تكست بوكس وعدد 10 كمبوبوكس داخل الفريم واتحكم فى الاسكرول بار شاهد الصوره التاليه أول خطوه لازم افعل خاصيه الاسكرول بار الرأسى للفريم من شاشة الخصائص فى مرحله الخطوه الثانيه هكتب كود فى حدث فتح الفورم واستخدم الحلقه التكراريه For Next Private Sub UserForm_Initialize() Dim Top As Integer Dim i As Integer Top = 5 For i = 1 To 10 هنا مكان كتابة الكود السابق Top = Top + 40 Next Me.Frame1.ScrollHeight = Top End Sub فى أول الكود عملت تعريف لعدد 2 متغير Top & i ثم كتبت ان الـ Top قيمتها = 5 لماذا تساوى 5 ؟؟ (أولا ممكن تكتب اى رقم كما يحلو لك) وهو قيمة الفرق بين الضلع الاعلى للفريم والصف الاول من العناصر لذالك كتبت الــ Top = 5 ثم عملت حلقه تكراريه وسميتها i وقلت ان i تساوى من 1 الى 10 الحلقة لما تشتغل هيكون فى اول لفه له قيمة i تساوى 1 ثم ينتقل الى السطر التالى وهو Top = Top + 40 اذن ناتج المعادله هيكون Top = 5+ 40 لماذا رقم 40؟رقم 40 هو ارتفاع العناصر ( الليبل والتكست بوكس والكمبوبوكس ) يعنى قيمة الــ Top حتى هذه للحظه بعد أول لفه تساوى 45 ثم يصل الكود الى Next يعنى التالى ارجع الى الحلقه For وخلى قيمة i تساوى 2 ثم ينتقل الى السطر التالى وهو Top = Top + 40 اذن ناتج المعادله هيكون Top = 45+40 يعنى قيمة الـ Top حتى هذه اللحظه تساوى 85 وهكذا الحلقه بتلف وكل مره قيمة الــ Top بتزيد حتى اخر لفه للحلقه سيكون 405 وبعد انتهاء الحلقه سياتى الكود الى اخر سطر وهو Me.Frame1.ScrollHeight = Top يعنى ارتفاع الاسكرول بار هو = Top اللى هو 405 طبعا الخاصيه ScrollHeight اتكلمنا عليها قبل كدا بالتفصيل وعرفنا ان وظيفتها تحديد ارتفاع الاسكرول بار طيب تعالو بقى نحط الكود السابق اللى بالمثال الاول مع تعديلات بسيطه جدا شاهد الكود Private Sub UserForm_Initialize() Dim Top As Integer Dim i As Integer Top = 5 For i = 1 To 10 With Me.Frame1.Controls.Add("Forms.Combobox.1", "Combobox" & i) .Left = 20 .Top = Top .Height = 40 .Width = 150 .BackColor = &HFFFFC0 .TextAlign = fmTextAlignCenter .FontSize = 20 .Font.Bold = True Dim a As Variant a = Array("ناجح", "راسب") .List = a End With With Me.Frame1.Controls.Add("Forms.TextBox.1", "TextBox" & i) .Left = 180 .Top = Top .Height = 40 .Width = 150 .TextAlign = 2 .FontSize = 20 .Font.Bold = True .BackColor = &HC0FFFF End With With Me.Frame1.Controls.Add("Forms.Label.1", "Label" & i) .Left = 340 .Top = Top .Height = 40 .Width = 150 .SpecialEffect = fmSpecialEffectEtched .TextAlign = 2 .FontSize = 24 .Font.Bold = True .BackColor = 8454016 .Caption = "الصقر" & i End With Top = Top + 40 Next Me.Frame1.ScrollHeight = Top End Sub ماذا تم تغييره فى الكود اللى كان بالمثال الاول ؟ 1- تغيير هذا السطر فى كل عنصر تحكم على سبيل المثال الكمبوبوكس (With Me.Frame1.Controls.Add("Forms.Combobox.1", "Combobox" & i هنا الخاصيه Name لكل عنصر اسمه ComboBox & i فى اللفه الاولى للحلقه التكرارية سيكون قيمة i تساوى 1 اذن الكمبوبوكس فى الصف الاول هيكون الخاصيه Name اسمه ComboBox1 وفى اللفه التانيه للحلقه التكرارية سيكون قيمة i تساوى 2 اذن الكمبوبوكس فى الصف الثانى هيكون الخاصيه Name اسمه ComboBox2 وهكذا وذالك لكى يكون لكل كمبوبوكس اسم مختلف عن الاخر ونفس الكلام على الليبل والتكست بوكس 2- Top = Top. جعلت قيمة الخاصيه Top ( بعد العنصر عن الضلع الاعلى للفريم ) يساوى Top اللى هو قيمته كل مره بتتغير مع الحلقه التكراريه فى البدايه بيكون قيمته 5 فالعنصر فى الصف الاول هيبعد عن الضلع الاعلى للفريم بمقدار 5 وفى اللفه التانية للحلقه سيكون الــ Top قيمته 45 اذن العناصر فى الصف الثانى يبعدو عن الضلع الاعلى للفريم بمقدار 45 وهكذا ---------------------------------------------------------------------------------------- ارجوا ان اكون وفقت بالشرح والى لقاء اخر ومثال عملى رقم 3 وهيكون مهم جدا جدا جدا انتظرونا تقبلوا تحياتى2 points
-
السلام عليكم ورحمة الله وبركاته عيدكم مبارك وكل عام وانتم بخير شرح امكانيات الفورم وكيفية الاستخدام: 1 - استخدام الفورم لاكثر من قاعدة بيانات في المصنف على ان يكون لكل قاعدة كود لاظهار الفورم يتغير فيه معطياتك في متغيرات kh_SetAddrss .kh_SetAddrss "مثال1", "C10:AO10" اولاً : اسم ورقة البيانات ( افتراضي ) ثانياً : نطاق صف رؤوس اعمدة البيانات ( افتراضي ) ثالثاً : عمود التسلسل ( اختياري ) اذا اردت ادخال رقم تسلسل البيانات الخاص بالفورم تلقائيا في عمود معين سجل عنوان راس العمود . مع ملاحظة انه لا يكون من ضمن نطاق رؤوس اعمدة البيانات كما هو معمول في المثال 2. . kh_SetAddrss "مثال2", "C4:H4", "B4" 2 - تستطيع اضافة قائمة لعمود معين في الفورم باضافة تعليق على عنوان العمود وتكتب القائمة وتفصل بين الكلمات بالعلامة + 3 - ينسخ التنسيقات والمعادلات في السجل الجديد . 4 - يبحث في جميع الاعمدة حسب الاختيار من القائمة في الفورم . 5 - يعطي نتائج صحيحة عند البحث عن تاريخ اذا شيكت الزر البحث عن تاريخ . 6 - امكانيات زر البحث عن تاريخ يتم تحويل اي قيمة تضعها في مربع النص للبحث الى تاريخ بالتنسيق الافتراضي للفورم ,, مع امكانية ادخال رقم صحيح بين 1 الى 31 ليفهم على انه تاريخ اليوم للشهر الحالي والسنة الحالية 7 - ثوابت بامكانك تغييرها حسب طلبك بداية اكواد الفورم 1- تغيير تنسيقات إظهار التاريخ في الفورم في الثابت DtF 2- تغيير عٌرض مربعات الادخال في الثابت iWgt1 ----------------------------------------------------------------------------------------------------- هذه الامكانية غفلنا عن ذكرها : 8 - بامكانك انتقاء الاعمدة التي تريدها عند تسمية النطاق وترتيبها حسب ما تريد مع ملاحظة ان العمود الذي يعتمد عليه في احتساب آخر صف هو العمود الاول من التسمية مثلا: "E15,C15,H15:AX15" اول عمود هو E ----------------------------------------------------------------------------------------------------- المرفق 2003-2007 فورم ادخال و تعديل مرن.rar الاصدار الثاني http://www.officena.net/ib/index.php?showtopic=48811 الاصدار الثالث: http://www.officena....showtopic=519551 point
-
وعليكمالسلام ورحمة الله و بركاته أخي الكريم " عبد العزيز البسكري " الله يجزاك خير ويزيدك علم وبصيرة هذا هو المطلوب خالص دعائي لك1 point
-
يخال انا عفاريتي عرفهم كويس بس بصراحه سيبهم يسرحو شوية وبكره نلمهم بقي انا كدا بفصل شحن وهنام انا بتكلم من الموبيل وانت فاعد تنطلي في كل موضوع سيبت بتاعه الصلاحيات وجيت هنا لاقيت المفاجئة ورايا بردو ماشي اما عملت فيك فصل هظبطلك ملف كويس هههههههه هتدعيلي ومين قالك ان داملوش علاقة بالموضوع دا بالعكس اكتب اسمي واسحب الخليه وهتلاقي معلومات عني دي مش مفاجئة ياوحشش بخصوص المساعدة اخر حاجه بطلبها مساعده الجمهور يعني تريث ولا تتسرع1 point
-
لا غلط .. هي في الأصل 100 فل و 14 (إنت هتكروتنا في التحليل بتاعك)1 point
-
1 point
-
1 point
-
أخي الحبيب ياسر .. معلش أصلها حاجة في الطبع ، والطبع يغلب التطبع حاول تستفيد من الموضوع التالي عشان شكل الكود يبقا منظم وسهل الإطلاع عليه من هنا1 point
-
اخي الغالي وائل الاسيوطي شكرا لمرورك الكريم هذا لان موضوعى بكم يثمر اخي واستاذي محمد حسن المحمد شفاك الله وعافاك وربنا ما يحرمناش من طلاتكم الجميلة لا يوجد اخطاء اذا لا يوجد اعتذار كل الشكر والتقدير لشخصكم الكريم اخي وحبيبي عبد العزيز البسكري يكفيني كلماتك الجميلة وجملك التي تجعلنا نتسابق الى المزيد من العطاء والمساعدة والمساهمة داخل هذه الاسرة الجميلة استاذي واخي وحبيبي ابو البراء نقد بناء بقى ولا مش بناء اديك علمت علينا وخلاص مهو لازم حد يرخم عليا مينفعشي الموضوع يعدي بالساهل كدا علي العموم تكرم حبيبي علي ملاحظاتك فانا والله ما وضعت الموضوع وما جائتني الفكرة الا وانا في العمل وكنت احاول ان الم الموضوع بسرعه وانجزه وطبعا المرفق كان مثال كنت قد وضعت به شاشة الدخول فقمت بحذف معظم الاضافات الغير مهمه داخل موضوعي ولكني فوت بعض الملاحظات وان شاء الله يبقي فيه تركيز اكتر باذن الله اخي الحبيب ياسر فتحي لك مني كل الاحترام علي لمرورك العطر زادك الله من علمه وخلي بالك من شروحاتك اصل زي ما انت شايف في ناس مش بتسيب حد في حالها :) :) مرفق التعديلات صلاحيات - Copy.rar1 point
-
أخي الغالي ياسر فتحي بارك الله فيك على الموضوع الجميل أخي الكريم عبد العزيز نظراً لأنك تستخدم اللغة الفرنسية فيمكنك استخدام الدالة CAR المقابلة للدالة CHAR تقبلوا تحياتي1 point
-
1 point
-
السّلام عليكم و رحمة الله و بركاته إلى أستاذي القدير " ياسر خليل أبو البراء" أو كل من لديه معلومات .. لو تفضّلت إعطائي لمحة بسيطة وجيزة و مختصرة عن الفرق بين 32 بايت و 64 بايت .. منذ مدة و أنا أسمع بهذا لكن لحد الآن لم أستطع فهم الفرق بينهما .. فائق إحتراماتي لشخصك الكريم1 point
-
1 point
-
اخى الحبيب الغالى / ياسر العربى ما شاء الله عليك شرحك وأسلوبك فى توصيل المعلومة رائع زادك الله من العلم الكثير والكثير وأدام عليك الصحة والعافية تقبل خالص تحياتى وتقديرى1 point
-
السلام عليكم جزاكم الله خيرا على دعائكم وحسن سؤالكم. والحمد لله على كل حال والسلام عليكم.1 point
-
السّلام عليكم و رحمة الله و بركاته تمام فهمت المقصود أخي الكريم " محمّد عبد السّلام " .. تفضّل أخي الغالي .. الطّلب الرّخيص فائق إحتراماتي لشخصك الكريم الفاتورة.rar1 point
-
1 point
-
1 point
-
اخى الحبيب والغالى ياسر العربى يسعدنى ان اكون اول المهنئين على هذا الشرح الرائع لا يسعنى الا ان اقول جزاكم الله خيرا اسال الله تعالى ان يزيدك من فضله وعلمه بارك الله فيك واتمنى منك لا تحرمنا من هذه النفحات تقبل تحياتى1 point
-
السلام عليكم أخي إسلام مادام صار عندك فضول في فهم قوة الاستعلام ، اليك هذا الرابط: http://www.officena.net/ib/topic/65067-ما-هي-طريقة-استيراد-بيانات-من-عدة-صفحات-اكسل-الى-جدول-اكسس/?do=findComment&comment=423657 جعفر1 point
-
السلام عليكم . هذا صحيح ، ولكن في نهاية الدالة تستطيع تختار النطاق Range او الورقة/sheet ، فعليه يمكنك ان تعيد الامر اكثر من مرة ، كل مرة لورقة اكسل اخرى (لاحظ اسماء الـSheet): DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet1$" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet2$" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet3$" . ولكن هذا الامر يتطلب منا ان نعرف عدد الاوراق/Sheets ، واسمائها ------------------------------------------------------------------------------------------------------------------------ والآن لشرح ما عملته انا: 1. عملت جدول اسمه tbl_Sheets ، لإدخال جميع المعلومات في جميع الاوراق/Sheets: . وعن طريق الكود (الكود سيكون في نهاية الموضوع) ، يأخذ البيانات ، فيصبح: . ثم يأتي الكود مرة اخرى ، فيملئ حقل ID لكل علامة: . ثم عملت استعلام جدولي CrossTab ، والذي به نستطيع ان نجعل بيانات احد الاعمدة عبارة عن اعمدة متفرقة ، يعني الحقل F1 ، اردنا ان نجعل كل مادة عبارة عن عمود مستقل): . وهذه نتائجه: . والان الى عمل استعلام آخر ، لجمع كل هذه السجلات: . فاصبحت: . الآن وقد اصبحت البيانات جاهزة لإلحاقها بالجدول النهائي Degrees ، نعمل استعلام الحاقي: . والكود الذي يقوم بكل العمل: Private Sub ImportData_Click() 'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet1$" 'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet2$" 'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet3$" Dim blnHasFieldNames As Boolean, blnEXCEL As Boolean, blnReadOnly As Boolean Dim lngCount As Long Dim objExcel As Object, objWorkbook As Object Dim colWorksheets As Collection Dim strPathFile As String, strTable As String Dim strPassword As String ' Establish an EXCEL application object On Error Resume Next Set objExcel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set objExcel = CreateObject("Excel.Application") blnEXCEL = True End If Err.Clear On Error GoTo 0 ' Change this next line to True if the first row in EXCEL worksheet ' has field names blnHasFieldNames = False ' Replace C:\Filename.xls with the actual path and filename strPathFile = Me.txtPath ' "C:\Filename.xls" ' Replace tablename with the real name of the table into which ' the data are to be imported strTable = "tbl_Sheets" '"tablename" ' Replace passwordtext with the real password; ' if there is no password, replace it with vbNullString constant ' (e.g., strPassword = vbNullString) strPassword = vbNullString '"passwordtext" blnReadOnly = True ' open EXCEL file in read-only mode ' Open the EXCEL file and read the worksheet names into a collection Set colWorksheets = New Collection Set objWorkbook = objExcel.Workbooks.Open(strPathFile, , blnReadOnly, , _ strPassword) For lngCount = 1 To objWorkbook.Worksheets.Count colWorksheets.Add objWorkbook.Worksheets(lngCount).Name Next lngCount ' Close the EXCEL file without saving the file, and clean up the EXCEL objects objWorkbook.Close False Set objWorkbook = Nothing If blnEXCEL = True Then objExcel.Quit Set objExcel = Nothing ' Import the data from each worksheet into the table For lngCount = colWorksheets.Count To 1 Step -1 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ strTable, strPathFile, blnHasFieldNames, colWorksheets(lngCount) & "$" Next lngCount ' Delete the collection Set colWorksheets = Nothing '--------------------------------- ' importing is finished 'now organize the table, by adding the ID to all the group Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From tbl_Sheets") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC If rst!F1 = "رقم الهوية" Then 'And Len(rst!ID & "") = 0 Then myID = rst!F2 rst.Edit rst!ID = myID rst.Update Else rst.Edit rst!ID = myID rst.Update End If rst.MoveNext Next i rst.Close: Set rst = Nothing 'append the data DoCmd.SetWarnings False DoCmd.OpenQuery "qry_Append_Sheets" DoCmd.SetWarnings True MsgBox "Done" ' Uncomment out the next code step if you want to delete the ' EXCEL file after it's been imported ' Kill strPathFile End Sub . . ولكن ، يجب عليك ان تحذف بيانات الجداول Degree و tbl_Sheets قبل ان تقوم بأي عمل جعفر 275.ImportDegrees.accdb.zip1 point
-
أخي الكريم مختار ننتظر رد الأخ أبو يوسف ليتضح الأمر أكثر قبل الخوض في غمار التخمين .........!1 point
-
السلام عليكم أعتقد أخى و أستاذى ياسر أن أخانا أبا يوسف تاه قبل منى و منك لذلك مش قادر يوضح المطلوب بسرعة وبايجاز لكن أعتقد أنه فى النهاية يريد الآتى : 1- جلب البيانات من المجلد وهذا ما تحقق ورضى به أخونا أبويوسف 2- حساب عدد تكرار كل مكتب تربية و تعليم فى كل شيت ثم تجميع التكرارات فى شيت مستقل مش كده يا أبو يوسف و لا أنا لسه فى البطاطا ؟!!!!!!!!!!!!!! شوف يابو يوسف ان كان الكلام ده يمشى الحال نكمل و الا قولنا نقف و نشوف سكة تانيه أخى ياسر خلى بالك معاى ( و أنا متأكد أنك معاى و ما بتفوتش ) كبداية لحساب عدد تكرار كل مكتب تربية وتعليم فى كل ورقة أنا عملت كود مبدئى دخلت بيه ( فقط ) فى كل الأوراق لكى أتأكد من وجود النص "مكتب التربية" فى الخلايا المتاحة فى الصف الاول هذا هو الكود Option Explicit Sub countf() Dim SH As Worksheet Dim C As Range, Rng As Range Application.ScreenUpdating = False For Each SH In ThisWorkbook.Sheets If SH.Name <> "Master" Then SH.Activate For Each C In ActiveSheet.Range(Range("A1"), Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)) If Not C.Find("*مكتب التربية*") Is Nothing Then C.Activate ' Set Rng = Range(ActiveCell, ActiveCell.End(xlDown)) Range("M1").Value = "مكتب التربية" Range("N1").Value = "العدد " End If Next C Next SH Application.ScreenUpdating = True End Sub اللى جاى بقى : تعديل الكود ده ليحسب عدد تكرار كل مكتب تربية وتعليم فى كل ورقة ثم ندمجه مع كود جلب البيانات ثم ندخل على مرحلة التجميع النهائية . مش كده اللى عايزه يا أبو يوسف و لا برضه أنا لسه فى البطاطا همتك معاى بقى أخى و أستاذى الغالى ياسر فى عمل CountIf فى الـــ vba أصلى ما عملتوش قبل كده تحياتى لكما1 point
-
1 point
-
أخي الكريم سابيك ..أعتقد أنه تم التنويه من قبل بتغيير اسم الظهور للغة العربية فيرجى الالتزام بالتعليمات إليك الملف التالي - بعد إذن أخي وحبيبي في الله - ياسر العربي ...عله يفي بالغرض UserForm As Keybad YasserKhalil.rar1 point
-
1 point
-
1 point
-
السّلام عليكم و رحمة الله و بركاته أخي الكريم " مصطفى محمود مصطفى " الصورتيْن اللّتيْن أرفقتهما لم أتمكن من فتحهما .. أكيد الخلل يكمن في تنسيق الخلايا ..ربما تنسيق الخلايا عندك على الطريقة الأنجليزيّة الأمريكية التي تظهر الشّهر قبل اليوم .. هذا حسب مفهومي البسيط و المتواضع .. حاول التغيير و التّلاعب بالتّنسيقات ربّما يمكنك إصلاح الخلل .. لحين تكرّم أحد الأساتذة الأفاضل من لديهم الفكرة المناسبة لحل هذه الاشكالية .. فائق إحتراماتي1 point
-
1 point
-
1 point
-
1 point
-
السّلام عليكم و رحمة الله و بركاته بارك الله فيك أستاذنا القدير " محمّد حسن المحمّد " على الدّروس القيّمة .. عمل أكثر من رائع .. و أخيرًا ظهر المستخبّي .. أدعو الله ألاّ يحرمنا منك و من إطلالاتك المثمرة و المميّزة و المفيدة بارك الله فيك .. جزاك الله خيرا و زادها بميزان حسناتك فائق إحتراماتي و إعجاباتي1 point
-
السلام عليكم هذه الصيغة C2<A2>E2 في المعادلة لا يقوم الاكسيل بمعالجتها كما تبدو, فلو استخدمت evaluate formula ستجد الخطوات كالاتي C2<A2>E2 ستتحوا في اول خطوة كا true>E2 فبذلك فبقية الخطوات ستكون خطأ . الافضل استخدام and كما ذكرت في ملفك ,المشكلة بس كانت في علامة < معمولة > جرب المرفق تحياتي Book210+.rar1 point
-
Sub CollectDataFromMultipleWorkbooks() Dim OpenFiles Dim crntfile As Workbook Set crntfile = Application.ActiveWorkbook Dim X As Integer Dim SH As Worksheet Dim Arr, Temp, I As Long, J As Long On Error GoTo ErrHandler Application.ScreenUpdating = False OpenFiles = Application.GetOpenFilename(FileFilter:="Microsoft Excel Files (*.csv;*.xlsx;.xlsm),*.csv;*.xlsx;*.xlsm", MultiSelect:=True, Title:="Select Excel File To Merge!") If TypeName(OpenFiles) = "Boolean" Then MsgBox "You Need To Select At Least One File" GoTo ExitHandler End If X = 1 While X <= UBound(OpenFiles) Workbooks.Open Filename:=OpenFiles(X) Sheets().Move After:=crntfile.Sheets(crntfile.Sheets.Count) X = X + 1 Wend Sheets("Master").Activate For Each SH In ThisWorkbook.Sheets With SH If .Name <> "Master" Then Arr = .Range("A1").CurrentRegion.Value For I = 1 To UBound(Arr) Temp = Split(Arr(I, 1), ";") For J = 1 To UBound(Temp) .Cells(I, J) = Temp(J) Next J Next I .Range("A1").CurrentRegion.Columns.EntireColumn.AutoFit End If End With Next SH ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub أخي الحبيب مختار بارك الله فيك على الكود الرائع الذي قدمته لنا على طبق من ذهب أخي الكريم صاحب الموضوع ..يرجى تغيير اسم الظهور للغة العربية (راجع التوجيهات في الموضوعات المثبتة في المنتدى) جرب الملف التالي بعد إضافة بسيطة لكود الأخ المتميز مختار ليقوم بفصل العمود الواحد لعدة أعمدة تقبل تحياتي Collect Data From Multiple CSV Workbooks Mokhtar V1.rar1 point
-
السلام عليكم ورحمة الله وبركاتة اخي الكريم شاهد المرفق لعلة يكون هو المطلوب. fatorrr.rar1 point
-
خامساً :- كيفية اضافه عناصر تحكم داخل الــ Frame مع التحكم فى الاسكرول بار وذالك عند فتح الفورم او اثناء العمل على الفورم وهو نشط العنوان يبدو انه غريب شوية ومعقد انا بس محتاج من حضرتك تشرب كوباية شاى وتفتح زهنك معايا لان ده شغل محترفين والحمد لله احنا مشينا مشوار طويل فلازم يكون عندك ثقه بنفسك وتقتحم الصعاب وميهمكش طالما انت فى جامعه اوفيسنا بص يا سيدى العنوان ده بختصار ماذا يعنى ؟ طبعا احنا عارفين ان علشان اصمم عنصر تحكم لازم يكون من شاشة التصميم لكن انت عمرك فكرة او خطر ببالك انك تخلق أو تنشئ عنصر تحكم وانت شغال على الفورم مش فى مرحلة التصميم !!!!!! طبعا انتو عارفين انى اناعملى وعلشان افهم لازم اعمل مثال عملى فبالمثال يتضح لنا المقال شوف الصوره دى وخليك معايا اوعى تغمض عنيك هو ده موضوعنا اليوم ازاى نصمم اى عنصر تحكم اثناء فتح الفورم بكود فى حدث فتح الفورم او اثناء عمل الفورم تعالو على سبيل المثال نعمل كود فى حدث فتح الفورم Initialize كدا انا عملت سطر الاعلان عن المتغير وقمت بتسميته Label ( وممكن تسميه اى اسم كيفما شئت ولكن كما قلت افضل تسميته طبقا لاسم عنصر التحكم ) وقلت ان نوع المتغير من النوع MSForms.Label وعايز احول المتغير ده الى كائن بحيث اعرفه واقدر اتعامل معاه فأستخدمت set وهذه الكلمة هى لتحويل المتغير الى كائن القاعده الخاصه بـ Set هى الكائن = المتغير set الكائن = Set Label ما هو الكائن ؟؟؟ هو عنصر تحكم هيتم اضافته على الفورم Controls.Add ( تعنى اضافه عنصر ) القاعدة العامه للـ Controls.Add هى (Controls.Add(ProgID, Name ,Visible الجزء الثالث , الجزء الثانى , الجزء الاول الجزء الاول :- ProgID يكون اجبارى الادخال وهو يكون احدى عناصر الفورم كالتالى الجزء الثانى :-Name هو اسم العنصر اللى هيتم استخدامه فى كتابة الاكواد وهو يقوم بدور الخاصيه Name فى شاشة الخصائص ويكون تعبئة اختياريا ولكن يفضل كتابتة اذا كنت تريد التعامل مع هذا العنصر فيما بعد الجزء الثالث:-Visible ويكون تعبئة اختياريا وهو يحمل خيارين أما True أو False ويفضل عدم استخدامه ليه يا عمنا ؟ لان طالما فكرت تنشأ عنصر تحكم اثناء عملك على الفورم اذا انت اكيد عايز تظهره للمستخدم مش انك هتخفية ! اذن لما نيجى نحول المتغير الى كائن لنستطيع التعامل معه هنستخدم قاعدة Set وهيكون كالتالى Set label = Controls.Add("forms.label.1", "label") هنا فى قاعدة Controls.Add قمت بتعبئة الجزء الاول ProgID وهو "forms.label.1" وتم وضعه بين علمتى تنصيص والجزء الثانى Name هو "label" وتم وضعه بين علامتى تنصيص وهو هيكون اسم العنصر فى كتابة الاكود الجزء الثالث Visible كما قلت انه اختيارى فلم اقم بتعبئته لذالك سيقوم الفيجوال بيسك باستخدام True بشكل افتراضى كدا وصلنا بالكود الى الان كالتالى Private Sub UserForm_Initialize() Dim label As MSForms.label Set label = Controls.Add("forms.label.1", "label") End Sub طيب انا كدا قمت بتصميم العنصر Label وعايز اعمل له خصائص على سبيل المثال اسم الليبل يكون " الصقر " يبعد عن الضلع الايسر للفورم بمقدار 100 عرضه يكون 120 يبعد عن الضلع الاعلى للفورم بمقدار 50 الخلفيه تكون حمراء محازة النص يكون بالمنتصف حجم الخط 20 سماكة الخط عريض التاثير يكون بارز طبعا الكلام ده شرحناه فى دروس الليبل وهيكون كالتالى فى الكود Private Sub UserForm_Initialize() Dim label As MSForms.label Set label = Controls.Add("forms.label.1", "label") With label .Caption = "ÇáÕÞÑ" .Left = 100 .Width = 120 .Top = 50 .BackColor = &HFF& .TextAlign = fmTextAlignCenter .Font = 20 .Font.Bold = True .SpecialEffect = fmSpecialEffectRaised End With End Sub شاهد الصوره عند تشغيل الفورم عايزك تجرب تنشئ عنصر تحكم او عناصر تحكم غير الليبل لازم تجرب بنفسك يا عبدالتواب ناخد مثال اخر مثلا الكمبوبوكس شاهد الكود كالتالى ولاحظ الفرق بنفسك Private Sub UserForm_Initialize() Dim Combobox As MSForms.Combobox Set Combobox = Controls.Add("forms.Combobox.1", "Combobox") With Combobox .Left = 100 .Width = 120 .Top = 50 .BackColor = &HFF& .TextAlign = fmTextAlignCenter .Font = 20 .Font.Bold = True .SpecialEffect = fmSpecialEffectRaised .RowSource = "A2:A10" End With End Sub شاهد الصوره عند فتح الفورم طبعا دى كلها مقدمه للدرس بتاعنا اللى لسه الى الان مبدأناش الشرح فيه ولكن كان لازم نعرف يعنى ايه نضيف عنصر تحكم اثناء عمل الفورم وليس من شاشة التصميم للدرس بقية انتظرونا1 point
-
السّلام عليكم و رحمة الله و بركاته أخي الكريم " أبو عبد الرحمن البغدادي " في محرّر الأكواد ..الذيسْ وورْكْ بوكْ .. أكتب ما يلي : Private sub WorkBook_Open() UserForm1.Show End Sub على أساس أنّ اسم اليوزرفورم لديك هو : UserForm1 فائق إحتراماتي1 point
-
اسم كل مستخدم هو نفسه الباسورد لفتح القاعده يعنى اسم المستخدم : Admin الباسورد : Admin اسم المستخدم : Developer الباسورد : Developer اسم المستخدم : User الباسورد : User اسم المستخدم : Viewer الباسورد : Viewer ملاحظة هامه : الازرار تختلف صلاحية فعاليتها من المستخدمن الادمن والمطور والمستخدم امممممممممم بالطريقه دى مش راح نحتاج لعمل باسورد على زر امر فقط كل مستخدم بكلمة المرور الخاصة به هو فقط وعلى حسب صلاحياته يتعامل مع المتاح له فقط - كما يمكن لكل مستخدم تغيير كلمة المرور الخاصة به قبل فتح البرنامج1 point
-
1 point
-
جهراوي ، اتقدم لك بهذا البرنامج والذي صممته خصيصا لأقدمه هدية لك، وهو عبارة عن دليل هاتف متواضع يستخدم الماكرو علما أنني لا أميل في معظم برامجي إلى استخدام الماكرو حيث أشعر باستخدامها انني مقيد ، وعوضا عن ذلك استخدم VBA، مع ذلك لا أنكر فوائد الماكرو واستخداماته المفيدة في بعض البرامج. تحياتي لك PhoneDirectory.rar1 point