بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 10/20/15 in مشاركات
-
الطريقه الٍسادسه :- تعبئه الكمبوبوكس باستخدام الحلقه التكراريه For Each (طريقه احترافيه) لو عندى شيت زى كدا وفيه بيانات وعايز اقوم بتعبئة الكمبوبوكس بالبيانات المظلله باللون الاخضر شاهد الصوره مثال :- مطلوب تعبئة الكمبوبوكس 1 بالبيانات المظلله باللون الاخضر هنعمل الكود التالى With ComboBox1 For Each Data In Sheet1.Range("A2:A" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row) .AddItem Data .List(.ListCount - 1, 1) = Data.Offset(0, 1).Value Next End With نشرح الكود ونمشى وحده وحده ونشوف ازى تم كتابته بالسطر الاول استخدمنا With ComboBox1 يعنى بنقول للكود الشغل بتاعنا هيكون مع الكمبوبوكس 1 ( الكمبوبوكس المطلوب تعبئته ) وطبعا طالما فتحنا With يبقى لازم نقفلها بــ End With زى كدا With ComboBox1 End With السطر التانى استخدمنا الحلقه التكرارية For Each وسميت الحلقه بأسم Data (وممكن تسميها اى اسم او احرف اخرى كما يحلو لك ) Data موجوده فى اى نطاق قلتله موجود فى النطاق من A2 الى اخر خلية بها بيانات فى العمود A ( وطبعا عرفنا ازاى قبل كدا نعرف اخر صف به بيانات فى اى شيت وفى اى عمود ) وكدا الحلقه التكرارية هتبدأ تلف على كل خليه فى النطاق المذكور بدأ من الخلية A2 وطبعا لازم نقفل الحلقه بـ Next For Each Data In Sheet1.Range("A2:A" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row) Next فلحلقه لما تبدأ هيكون Data = A2 Next الكود هيروح للخليه اللى بعدها Data = A3 Next الكود هيروح للخليه اللى بعدها Data = A4 Next الكود هيروح للخليه اللى بعدها وهكذا حتى يصل الى اخر خليه بها بيانات بالعمود وهى A11 كدا الحلقه بتلف بدون فائده او بالادق بدون مهمه تنفذها مجرد فقط انه بيلف انا عايز استفيد من الفه بتاعته دى فنعمل ايه هقوله وانت بتلف اعمل حاجتين خلى Data اللى هى فى اول لفه هتكون قيمتها A2 دخلها فى العمود الاول للكمبوبوكس ( ملحوظه العمود الاول فى الكمبوبوكس بيكون رقمه 0 والخليه المجاورة لها بالعمود B اللى هى B2 دخلها بالعمود الثانى بالكمبوبوكس ( ملحوظه العمود الثانى بيكون رقمه 1 ) وهكذا وهو بيمر على كل خليه بالنطاق هيعمل كدا .AddItem Data .List(.ListCount - 1, 1) = Data.Offset(0, 1).Value ترتيب الاعمده فى الكمبوبوكس بيدأ من 0 وكذالك ترتيب الصفوف بيدأ من 0 AddItem هى العمود رقم 0 فى الكمبوبوكس والعمود ده يساوى Data اللى هى كل خليه هتمر فيها الحلقه اللى هى اسماء العملاء بالعمود A والعمود رقم 1 فى الكمبوبوكس هو (List(.ListCount - 1, 1. هيظهر فيه كود العميل اللى بالعمود B (رقم العمود , صفوف الكمبوبوكس)List. صفوف الكمبوبوكس بتبدأ من 0 زى ما قلت علشان كدا قلت ان صفوف الكمبوبوكس - 1 **** ListCount - 1. طيب العمود رقم 1 عايزين نظهر فيه الكود اللى بالعمود B بالشيت فنعمل ايه Data.Offset(0, 1).Value= هنا استخدمنا الداله offset فى اول لفه للحلقه هيكون Data = A2 فأنا بقوله انتقل من A2 بمقدار صف 0 والعمود 1 ( يعنى ايه صف 0 يعنى نفس الصف والعمود واحد يعنى تحرك وروح للعمود B اخر شئ طبعا الكود ده وقت تنفيذه انت اللى بتحدده ولكن على سبيل المثال انا عايز اكتبه فى حدث تشغيل الفورم فيكون كالتالى Private Sub UserForm_Initialize() With ComboBox1 For Each Data In Sheet1.Range("A2:A" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row) .AddItem Data .List(.ListCount - 1, 1) = Data.Offset(0, 1).Value Next End With End Sub والى لقاء اخر من حلقات سلسلة علمنى كيف اصطاد وطريقه اخرى من طرق تعبئة الكمبوبوكس الطريقه القادمه هنعرف ازاى نجلب البيانات بالكمبوبوكس دون تكرار انتظرونا تقبلوا تحياتى3 points
-
3 points
-
السلام عليكم ورحمة الله وبركاته التنسيقات الرقمية المخصصة تنسيق الارقام السالبة باللون الاحمر ووضعها بين قوسين تقبلوا منى تحياتى وتقديرى تنسيق رقمى سالب(1).rar2 points
-
ADO Connectionاستخدام الاكسيل كقاعدة بيانات عن طريق وسيلة الاتصال اعتقد ان هذا الموضوع سيعطيكم معلومة جديدة في كيفية التعامل مع الاكسل كقاعدة بيانات في البداية الطريقة تعتمد على وسيلة الاتصال Active Data Object ADO وهي وسيلة اتصال بين برنامج كتابة الاكواد و قاعدة البيانات مثلا VB.net and SQL Visual Basic and Access وهي حصرية لبرامج مايكروسوفت فقط ولكي يكون لدينا اتصال كامل يجب ان يكون لدينا Connection String وهو عنوان قاعدة البيانات التي سيتم الاتصال بها، والذي من خلاله سيكون التالي: * فتح اتصال* * جملة الاستعلام* * انهاء الاتصال* وهنا تكمن الميزة بهذه الطريقة، فجملة الاستعلام يجب كتابتها بطريقة SQL dataBase وهنا تنطبق معظم جمل SQL امثلة على الجمل select * from [data] Select Count(Customer) from [data] Select Sum(Customers) from [data] where city ='Ramallah' تعلم كتابة جمل جديدة وغيرها من الجمل التي يعرفها جيدا المبرمجون باستخدام قواعد البيانات SQL,MYSQL,Oracle اكبر فائدة لهذه الطريقة انه يمكن من خلالها تصميم واجهة برنامج على الاكسل او تصميم فورم على الاكسل وحفظ البيانات على ملف اكسل اخر بدون الحاجة الى فتحه ولاستخدام هذه الطريقة يجب تفعيل التالي Tools-References بالمرفق ملف اكسل يحتوي مثال على ما تم ذكره سابقا database.zip2 points
-
اخي مبدئيا تم ايقاف ادخالك لقيمة النسبة المدفوعه وسوف تحسب عنند كتابتك للنسبه والتي ستكتب بالشكل التالي ال 25% تكتب 25 وهكذا وسوف يتم ايضا احتساب المبلغ المتبقي دون تدخلك ايضا فقد تم ايقاف ادخالك له يدويا واهي بداية لمعرفة باقي طلباتك جرب الملف وقول ملاحظاتك Drive 07.rar2 points
-
جرب المرفق تحياتي اي تعديلات نحن حاضرين وزارات المحافظة_ البيانات المكررة المرحلة-444.rar2 points
-
تفضل اخ احمد وجيه وبعد اذن اخي الجبيب ابوعبدالله الحلواني بما انك تستخدم اصدار 2010 قم بعمل حقل جديد في الجدول ونوع بيانات = محسوب ثم ضع التعبير التالي في مربع منشئ التعبير : IIf(Hour([time_])>=7 And Hour([time_])<=15;"A";IIf(Hour([time_])>15 And Hour([time_])<=23;"B";"C")) بالتوفيق2 points
-
ماشاء الله عليك استاذ خالد الرشيدى شرح فى منتهى الجمال والروعه جزاكم الله خيرا وتقبل الله منا ومنكم صالح الاعمال اللهم امين واياكم اخى الكريم2 points
-
أخي الكريم مصطفى بدون أكواد جرب الملف التالي .. تحويل الارقام.rar2 points
-
السلام عليكم أخى العزيز الصقر .. بالنسبة لطرق ملء الكمبوبوكس عن طريق المصفوفات ، انت كنت كتبت الكود ده Private Sub UserForm_Initialize() Dim a As Variant a = Array("سند قبض", "سند صرف") For i = LBound(a) To UBound(a) ComboBox1.AddItem a(i) Next End Sub وملاحظتى اننا من الممكن ان نستغنى عن الدوائر التكرارية ونعملها فى خطوة واحدة وفى الحالة دى هنوفر وقت كتير لو كانت المصفوفة كبيرة Private Sub UserForm_Initialize() Dim a As Variant a = Array("سند قبض", "سند صرف") ComboBox1.List = a End Sub2 points
-
فهمت طلبك حسب توضيحك اطلع على المرفق امل ان يكون به طلبك وزارات المحافظة_ البيانات المكررة المرحلة-222.rar2 points
-
السلام عليكم اخوانى اعضاء المنتدى واساتذة الأكسل الأجلاء لفت انتباهى اثناء مشاركتى فى الردود أو قراءة البرمجيات او الشروح الجميلة لبعض الأساتذة الاجلاء عدم الاهتمام بالتسميات المناسبة ولى رأيي فى هذا الموضوع وهو ما قرأته فى العديد من كتب ومراجع البرمجة واتمنى إذا أعجبكم ان تطبقوه وتحدثوا شروحاتكم المتعلقة به مثلا لكل كود برمجى يفضل ان يكون اسم الكود معبرا عن وظيفته مثل "Move_Data" "Get_Data" ...... بما يسهل على من يتابع الاكواد أو يتعلم منها معرفة الوظيفة مبدئيا لكل كود وايضا عند استعمال الفورم من الافضل ان تغير من مسميات عناصر الفورم وفى هذة الحالة يجب ان يتكون الأسم من جزئين الجزء الأول بادئة مختصرة تعبر عن نوع الكنترول مثل txt للتعبير عن textbox او cmd للتعبير عن commandbutton اما الجزء الثانى فيعبر عن محتوى او وظيفة هذا العنصر مثل ان يكون هناك txtFirstName ، للتعبير عن انها تحتوى الاسم الاول مثلا ، وكمثال اخر cmdUpdateData للتعبير عن زرار cmd وظيفته تحديث البيانات أو cmdClearText هو زرار لتنظيف الحقول النصية وهكذا (تخيل انك لديك العديد من عناصر التحكم TextBox1 , TextBox2 ,TextBox3 , ,jv وتريد ان تعرف ايهما يمثل الاسم الاول و أيهما الاسم الاخير .... اثناء كتابة الكود وبدون ان تنظر الى الفورم ...... وحتى إذا أضفت شكل مربع او دائرى فى شيت الاكسل يجب تطبيق نفس القواعد للدلالة على وظيفته والرابط المدرج به قائمة بالبادئات المفضلة لعناصر التحكم https://msdn.microsoft.com/en-us/library/aa263493(v=vs.60).aspx ما الفائدة : الفائدة فى التقيد بهذة البادئات هو انك عندما تستعملها إضافة الى الوظيفة تسهل على كل من يقرأ البرمجية ان يفهمها بسرعه ويتابع التعديل فيها كطاقم عمل وذلك حالنا هنا فى المنتدى فريق واحد فيجب ان نتكلم لغة واحدة يسهل للجميع فهمها من اول لحظة.2 points
-
السلام عليكم الاستاذ العزيز ابراهيم ابو ليلة .... بارك الله فيك شرح جميل وشيق وسلاسة فى التدرج بالمعلومة ليا طلب صغير (منك او من أحد المشرفين على القسم) ارجو فتح الموضوع من جديد او ترحيل تعقيبات وتعليقات شكر الأخوة الأعزاء فى موضوع مستقل ... بصراحة المعلومات القيمة يجب ان تتسلسل بدون مقاطعة لتفادى التشتيت... كما سبق ان عمل ذلك الاخ العزيز الا ستاذ ياسر ابو البراء فى موضوع افتح الباب وادخل لعالم البرمجة وكذلك الاستاذ حسام عيسى فى موضوعه النشط حاليا عن تصميم الفورم سلسلة علمنى كيف اصطاد ( الفورم ) Forms وتثبيت هذة الموضوعات فى قسم دورات الإكسل2 points
-
الاخوة الافاضل فى هذا الصرح العظيم اتعلمت من اوفيسنا دائما روح الابداع والابتكار والبحث عن ما هو جديد ومفيد فدائما نبحث عن ما هو جديد حتى وان فشلنا فيكفينا شرف المحاوله ومن هذا المنطلق جاء فى بالى فكره وهى عمل تفقيط ولكن بالمعادلات مرفق ملف يمكنك كتابة اى رقم من 1 الى 1000 وشاهد التفقيط بالعربى وجارى تطوير المعادله لتشمل ارقام ما بعد 1000 ولكن حاليا هذه المعادله ممكن تنفع الاخوة المدرسين اللى بيحتاجو تفقيط درجات الطلاب بالشهادات هى تناسبهم جدا ولا يحتاجون الى تفعيل الماكرو ويكون ملف اكسيل عادى امتداد Xls حتى لا اطيل عليكم اتركم مع الملف ومنتظر اقتراحاتكم وارائكم ودعاوتكم اللى مقدرش استغنى عنها تقبلوا تحياتى تفقيط بالمعـادلات.zip1 point
-
السلام عليكم اخي انظر المرفق بة جزء من طلبك وهو البحث اكمل انت باقي المطلوب كما سترى من المثال والجزء الاخر اخي عادل قام بة بارك الله فية والبقية تاتي من باقي الاخوة تحياتي Drive 07.rar1 point
-
السلام عليكم تفضلوا التسخة 64 بيت ... كتبت الكود و جربته على ال Windows7 64bit Office10 64bit ملف للتحميل: https://app.box.com/s/cvjs3lt381ts805zu8v1uzu0ooxu4i80 الكود في ستاندر موديول Option Explicit Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type LOGBRUSH lbStyle As Long lbColor As Long lbHatch As LongPtr End Type Private Declare PtrSafe Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As LongPtr, ByVal hMenu As LongPtr, ByVal hInstance As LongPtr, lpParam As Any) As LongPtr Private Declare PtrSafe Function DestroyWindow Lib "user32" (ByVal hwnd As LongPtr) As Long Private Declare PtrSafe Function FillRect Lib "user32" (ByVal hdc As LongPtr, lpRect As RECT, ByVal hBrush As LongPtr) As Long 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 CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As LongPtr Private Declare PtrSafe Function DeleteObject Lib "gdi32" (ByVal hObject As LongPtr) As Long Private Declare PtrSafe Function SetBkMode Lib "gdi32" (ByVal hdc As LongPtr, ByVal nBkMode As Long) As Long Private Declare PtrSafe Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As String) As Long Private Declare PtrSafe Function SetTextColor Lib "gdi32" (ByVal hdc As LongPtr, ByVal crColor As Long) As Long Private Declare PtrSafe Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As LongPtr, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long Private Declare PtrSafe Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Long Private Declare PtrSafe Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long Private Const WS_CHILD = &H40000000 Private Const WS_CLIPCHILDREN = &H2000000 Private Const WS_CAPTION = &HC00000 Private Const WS_EX_TOPMOST = &H8& Private Const SW_NORMAL = 1 Private Const TRANSPARENT = 1 Private Const SM_CXSCREEN = 0 Private Const SM_CYSCREEN = 1 Private Const COLOR_BTNFACE = 15 Private bWindowExist As Boolean Public Sub Test() If Not bWindowExist Then Call ShowUpdatingMessage( _ Message:="Showing message number : ", _ Title:="Officena", _ HowManyTimes:=10, MessageDelay:=1, _ TOPMOST:=True, TextColor:=vbRed, BackColor:=vbYellow _ ) End If End Sub Private Sub ShowUpdatingMessage( _ ByVal Message As String, _ ByVal Title As String, _ ByVal HowManyTimes As Single, _ Optional ByVal MessageDelay As Single, _ Optional ByVal TOPMOST As Boolean, _ Optional ByVal TextColor As Long, _ Optional ByVal BackColor As Long) Const WIDTH = 250 Const HEIGHT = 120 Dim tRect As RECT Dim tLb As LOGBRUSH Dim t As Single Dim hBrush As LongPtr Dim hwndChild As LongPtr Dim hWndParent As LongPtr Dim hdc As LongPtr Dim iCounter As Integer On Error GoTo CleanUp ' Application.EnableCancelKey = xlErrorHandler hWndParent = CreateWindowEx(IIf(TOPMOST, WS_EX_TOPMOST, 0), "BUTTON", Title, WS_CAPTION + WS_CLIPCHILDREN, _ (GetSystemMetrics(SM_CXSCREEN) - WIDTH) / 2.2, (GetSystemMetrics(SM_CYSCREEN) - HEIGHT) / 2, WIDTH, HEIGHT, 0, ByVal 0, 0, ByVal 0&) hwndChild = CreateWindowEx(0, "STATIC", vbNullString, WS_CHILD, 0, 0, WIDTH, HEIGHT, hWndParent, ByVal 0&, ByVal 0, ByVal 0&) If hwndChild Then bWindowExist = True Application.OnKey "%{F4}", "" ShowWindow hWndParent, SW_NORMAL ShowWindow hwndChild, SW_NORMAL DoEvents hdc = GetDC(hwndChild) SetBkMode hdc, TRANSPARENT If TextColor <> 0 Then SetTextColor hdc, TextColor End If SetRect tRect, 0, 0, WIDTH, HEIGHT tLb.lbColor = IIf(BackColor = 0, GetSysColor(COLOR_BTNFACE), BackColor) hBrush = CreateBrushIndirect(tLb) For iCounter = 1 To HowManyTimes FillRect hdc, tRect, hBrush TextOut hdc, 30, 20, Message, Len(Message) TextOut hdc, 115, 50, CStr(iCounter), Len(CStr(iCounter)) t = Timer Do DoEvents Loop Until Timer - t >= IIf(MessageDelay = 0, 1, MessageDelay) Next End If CleanUp: ReleaseDC hwndChild, 0 DeleteObject hBrush DestroyWindow hwndChild DestroyWindow hWndParent bWindowExist = False Application.OnKey "%{F4}" End Sub1 point
-
جميل أستاذ رمهان أين كانت تلك الفكرة تعجبنى أكوادك المختصرة المبنى كبيرة المهام أ. أحمد اعذرنى لتأخرى فى الرد فقد عادت نوبت عدم قدرتى على الاتصال مرة أخرى أما عن التعديل الأخير الذى قمت به فما هو الا أنى أضفت الكود بحدث بعد التحديث لحقل ما لاأذكر أسمه آﻻن بالفورم الفرعى من شأنه يختبر الوقت الحالى ويسند قيمة الشفت بحقل الشفت بنفس الفورم الفرعى أيضا. الا أن كود أ رمهان مختصر أكثر ويستخدم بداخل الجدول مباشرة بدون واسطة الفورم تحياتى للجميع1 point
-
1 point
-
1 point
-
وهذا حل آخر إثراءً للموضوع الدالة المعرفة Function Kh_Names(FullName As String, ParamArray Index1()) As String Dim I As Integer Dim Kh_Split, MyArray, Arr Dim Kh_String As String, SN As String, RE As String On Error GoTo Err_Kh_Names MyArray = Array("عبد ", "أبو ", "ابو ", "آل ", " الله", " الدين", " الإسلام", " الاسلام", " الحق", " النصر", " العهد", " النور", " بالله") SN = Application.WorksheetFunction.Trim(FullName) For Each Arr In MyArray RE = Replace(Arr, " ", "^") SN = Replace(SN, Arr, RE) Next Kh_Split = Split(SN, " ", , vbTextCompare) On Error Resume Next For I = 0 To UBound(Index1) Kh_String = Kh_String & " " & Kh_Split(Index1(I) - 1) Next On Error GoTo 0 Kh_String = Replace(Trim(Kh_String), "^", " ") Kh_Names = Kh_String Exit Function Err_Kh_Names: Kh_Names = "" End Function Split Full Names UDF Function.rar أخي الحبيب توكل لم أطلع على حلك إلا بعد أن قدمت المشاركة الخاصة بي فأعتذر عن تكرار الحل .. إذا أنها تقريباً نفس الدالة المعرفة المستخدمة تقبل تحياتي1 point
-
ProgressBar اضافة من المهم جدا إضافة هذه الأداة لمشروعك البرمجي تساعد المستخدم بتقدير الزمن المطلوب لتنفيذ المهمة بالملف المرفق مثال ProgressBar.zip1 point
-
في مربّع البحث والاستبدال (CTRL+H)، اضغط على زر "المزيد". في أسفل المربّع المتوسّع انقر على "خاص". ومنه اختر "فاصل أسطر يدوي". ستظهر ^l في مربّع البحث. إن أردت إزالة كلّ هذه الفواصل، فعليك إبقاء خانة "استبدال بـ" فارغة ثمّ النقر على "استبدال الكل". أما إذا أردت الاحتفاظ بالفقرات، فيمكنك أن تنقر في خانة "استبدال بـ"، ثمّ تنقر من جديد على زر "خاص" مع اختيار "علامة الفقرة" هذه المرة. ستظهر عندئذ ^p في تلك الخانة. بعد ذلك انقر على "استبدال الكل". أما إذا أردت الاكتفاء بإزالة هذا الخط الطويل ولا يهمك الإبقاء على ضبط المحاذاة، فيمكنك اعتماد طريقة الأخ hat.1 point
-
بالضبط صحيح كلامك يجب ان نضع شرط بأن لا تكون الخلية المحددة في العمود الاول شكرا لملاحظتك القيمة اشكرك شكرا لك ولك مني كل الاحترام لشخصك الكريم وانه ليس اصرار وتكرار المحاولة بقدر ماهو العمل للحصول على افضل طريقة للحل السليم والمطلوب وهذا فيديو اشرح فيه الفكرة التي قلت بأن اكسل تلقائيا يحافظ على اخر خلية محددة فيه قبل القيام بالحفظ1 point
-
شكرا أستاذ ياسر طريقتك جدا جميلة انا استعملت طريقتي على اكثر من جهاز ولم احتاج الى ملف dll يبدو انه متوفر بكل بمعظم نسخ الاوفس وانا استعمله تقريبا بكل يوزر فورم اعمله فلا احتاج الا الى سطر واحد لاظهاره وسطر اكتب به القيمة التي اريدها ان تكون عند اجراء الحدث1 point
-
أسعد الله أوقاتكم، حل السؤال كالتالي: نحدد الصف/ الصفوف المطلوب نقلها، نضغط على لوحة المفاتيح Shift + Alt ونبقى ضاغطين عليهما، ومن ثَمَّ الضغط على المؤشر لأعلى أو لأسفل، سنجد أن الصفوف ستتحرك إما لأعلى أو لأسفل. مع الاحترام والتقدير1 point
-
1 point
-
1 point
-
السلام عليكم ورحمة الله وبركاته الدرس الثاني عشر 12-Window Events وسوف نتناول فى هذه الدرس الاتى تغيير التسمية التوضيحية لإسم نافذة المصنف النشط تنشيط نافذة معينه مفتوحه إخفاء أو إظهار نافذة مصنف مفتوح إغلاق نافذة مصنف فتح نافذه جديد لمصنف معين تكبير أو تصغبر أو الوضع العادى لنافذة مصنف عمل زووم لنافذة معينه إخفاء علامات التبويب لأوراق العمل فى مصنف معين إخفاء رؤوس الأعمدة والصفوف فى مصنف معين إخفاء شريط التمرير الأفقي فى مصنف معين إخفاء شريط التمرير العمودي فى مصنف معين عرض جميع صيغ المعدلات فى مصنف معين إخفاء خطوط الشبكةفى مصنف معين تلوين خطوط الشبكة فى مصنف معين عمل معاينة لفواصل الصفحات فى مصنف معين إخفاء القيم الصفرية فى مصنف معين اظهار اسم الورقة الحالية في رساله اظهار عنوان الخلية النشطة فى مصنف معين في رساله اظهار عنوان مدى محدد في رساله تجميد الألواح داخل فى مصنف معين عمل انقسام فى مصنف معين معرفة عدد الأجزاء المنقسمة فى مصنف معين ................................................................................................................................................................................. تغيير التسمية التوضيحية لإسم نافذة المصنف النشط لاحظ هنا ان اسم المصنف المفتوح امامك هو LEARN--VBA.xlsb طب لو احنا عايزين نغيره ونخليه مثلا مش مهم تكون محترفvbaالمهم تكون عندك معلومات عنvba.xlsb سيكون شكل الكود Sub A_Window_Caption() ActiveWindow.Caption = "مش مهم تكون محترفvbaالمهم تكون عندك معلومات عنvba.xlsb" End Sub تنشيط نافذة معينه مفتوحه كما يتضح من الصوره ان هناك اكثر من نافذة اكسيل مفتوحه ولكن المصنف النشط هو 9-sky201.xlsb فلو افترضنا اننا نريد اننا عايزين نخلى المصنف النشط هو LEARN--VBA.xlsb ليصبح هكذا سيكون شكل الكود Sub Windows_Activate() Windows("LEARN--VBA.xlsb").Activate End Sub إخفاء أو إظهار إطار نافذة مصنف مفتوح كما يتضح من الصوره اننا لدينا اكثر من مصنف مفتوح فلو اردنا اخفاء نافذه المصنف 9-sky201.xlsb سيكون شكل الكود Sub Windows_Visible() ' اخفاء Windows("9-sky201.xlsb").Visible = False ' اظهار 'Windows("9-sky201.xlsb").Visible = True End Sub إغلاق نافذة مصنف فلو اردنا اغلاق نافذة المصنف 9-sky201.xlsb سيكون الكود كالاتى Sub Windows_CLOSE() Windows("9-sky201.xlsb").Close = True End Sub فتح نافذه جديد لمصنف معين فى الصوره يتضح ان المصنف LEARN--VBA.xlsb مفتوح مره واحده ولفتحه مرتين هكذا لاحظ فى الصوره انه تم اضاف شيت جديد باسم افتراضى LEARN--VBA.xlsb:2 وتم تميز المصنف الاول باسم LEARN--VBA.xlsb:1 وعند غلق اى من المصنفين يتم اعادة اسم المصنف كما كان LEARN--VBA.xlsb سيكون الكود كالاتى Sub NewWindow_() Windows("LEARN--VBA.xlsb").NewWindow End Sub تكبير أو تصغبر أو الوضع العادى لنافذة مصنف سيكون الكود كالاتى Sub WindowState_() 'الوضع العادى Windows("LEARN--VBA.xlsb").WindowState = xlNormal 'تكبير 'Windows("LEARN--VBA.xlsb").WindowState = xlMaximized ' تصغير 'Windows("LEARN--VBA.xlsb").WindowState = xlMinimized End Sub عمل زووم لنافذة معينه سيكون الكود كالاتى Sub WindowZOOM_() Windows("LEARN--VBA.xlsb").Zoom = 80 End Sub إخفاء علامات التبويب لأوراق العمل فى مصنف معين لاحظ اختفاء اسماء الشيتات بعد تنفيذ الكود سيكون الكود كالاتى Sub DisplayWorkbookTabs_() ' اخفاء Windows("LEARN--VBA.xlsb").DisplayWorkbookTabs = False ' اظهار 'Windows("LEARN--VBA.xlsb").DisplayWorkbookTabs = True End Sub إخفاء رؤوس الأعمدة والصفوف بمصنف معين سيكون الكود كالاتى Sub DisplayHeadings_() ' اخفاء Windows("LEARN--VBA.xlsb").DisplayHeadings = False ' اظهار 'Windows("LEARN--VBA.xlsb").DisplayHeadings = True End Sub إخفاء شريط التمرير الأفقي فى مصنف معين سيكون الكود كالاتى Sub DisplayHorizontalScrollBar_() ' اخفاء Windows("LEARN--VBA.xlsb").DisplayHorizontalScrollBar = False ' اظهار 'Windows("LEARN--VBA.xlsb").DisplayHorizontalScrollBar = True End Sub إخفاء شريط التمرير العمودي فى مصنف معين سيكون الكود كالاتى Sub DisplayVerticalScrollBar_() ' اخفاء Windows("LEARN--VBA.xlsb").DisplayVerticalScrollBar = False ' اظهار 'Windows("LEARN--VBA.xlsb").DisplayVerticalScrollBar = True End Sub عرض جميع صيغ المعدلات فى مصنف معين سيكون الكود كالاتى Sub DisplayFormulas_() ' اخفاء Windows("LEARN--VBA.xlsb").DisplayFormulas = False ' اظهار 'Windows("LEARN--VBA.xlsb").DisplayFormulas = True End Sub انتظرو باقى الدرس1 point
-
اخى اسامه البراوى منور والله شرف كبير ليا وجودك معانا على العموم هيا الفكره حلوه اكيد بس ممكن بعد اخر درس اشوف وقت فاضى كده وروح جاى فاتح موضوع جديد وعامل الدروس كلها فى نفس الموضوع على العموم فكر معايا تقبل تحياتى1 point
-
استاذى الحبيب / اسامه البراوى شاكر جدا اهتمامك بالموضوع واضافاتك الرائعه جزاكم الله خيرا تقبل تحياتى1 point
-
السلام عليكم اخي ابو البراء كود جميل ورائع اختصر لي كثيرا من الجهد جعله الله في ميزان حسناتكم وفقكم الله السلام عليكم اخي محمد الخازمي كود اخر هورائع كذلك ينفعني عند البدء بتنزيل المعلومات جعله الله في ميزان حسناتكم وفقكم الله1 point
-
السلام عليكم ورحمة الله وبركاته هذه اول مشاركة لي في هذا المنتدي شيت اكسيل للحضور والانصراف حضور وانصراف.rar1 point
-
السلام عليكم استاذ محمود هذا كود انا استخدمة في عملي من اكواد الاستاذ " سليم حاصبيا " ادخال رقم. . استاذ ياسر كود جميل اضفته لمكتبتي Option Explicit Sub ConvertAll() Dim I As Long For I = 7 To Cells(Rows.Count, "F").End(xlUp).Row If Cells(I, "F") = 1 Then Cells(I, "F") = "الأولى" ElseIf Cells(I, "F") = 2 Then Cells(I, "F") = "الثانية" ElseIf Cells(I, "F") = 3 Then Cells(I, "F") = "الثالثة" ElseIf Cells(I, "F") = 4 Then Cells(I, "F") = "الرابعة" ElseIf Cells(I, "F") = 5 Then Cells(I, "F") = "الخامسة" ElseIf Cells(I, "F") = 6 Then Cells(I, "F") = "السادسة" ElseIf Cells(I, "F") = 7 Then Cells(I, "F") = "السابعة" ElseIf Cells(I, "F") = 8 Then Cells(I, "F") = "الثامنة" ElseIf Cells(I, "F") = 9 Then Cells(I, "F") = "التاسعة" ElseIf Cells(I, "F") = 10 Then Cells(I, "F") = "العاشرة" Else Cells(I, "F") = Cells(I, "F") End If Next I End Sub1 point
-
أخي الكريم مصطفى كان من الممكن بعد أن تضع المعادلة أن تنسخ النتائج ثم تقوم بلصق خاص في العمود F ثم لصق القيم عموماً تفضل الكود التالي عله يفي بالغرض Option Explicit Sub ConvertAll() Dim I As Long For I = 7 To Cells(Rows.Count, "F").End(xlUp).Row If Cells(I, "F") = 1 Then Cells(I, "F") = "الأولى" ElseIf Cells(I, "F") = 2 Then Cells(I, "F") = "الثانية" ElseIf Cells(I, "F") = 3 Then Cells(I, "F") = "الثالثة" ElseIf Cells(I, "F") = 4 Then Cells(I, "F") = "الرابعة" ElseIf Cells(I, "F") = 5 Then Cells(I, "F") = "الخامسة" ElseIf Cells(I, "F") = 6 Then Cells(I, "F") = "السادسة" ElseIf Cells(I, "F") = 7 Then Cells(I, "F") = "السابعة" ElseIf Cells(I, "F") = 8 Then Cells(I, "F") = "الثامنة" ElseIf Cells(I, "F") = 9 Then Cells(I, "F") = "التاسعة" ElseIf Cells(I, "F") = 10 Then Cells(I, "F") = "العاشرة" Else Cells(I, "F") = Cells(I, "F") End If Next I End Sub Convert Numbers YasserKhalil.rar1 point
-
السلام وعليكم استاذى الحبيب / محمد الريفى عمل رائع كالعادة .. وفقكم الله لما فيه الخير دائما واذا سمحت لى .. سأعرض اسلوب اخر لشرح فكرة الفيديو علها تمثل اضافة ولاننا استخدمنا الدالة Match .. نتذكرها معاً1 point
-
السلام عليكم الاخ العزيز .. الصقر اثناء تصفحى لشروحاتك الجميلة فى هذا الموضوع وشرحك للمربع النصى استوقفنى الجملة التالية: *** الاختيار رقم 3 وهو عمل ScrollBars للـ TextBox1 بشكل رأسى واخر افقى بصراحه حاولت استخدمه لكن لم يظهر معى بشكل افقى وراسى وتفسير ذالك هى الخاصيه Multiline لانها تحمل خيارين اما الادخال يكون على سطر واحد وبالتالى فان الاسكرول بار الرأسى لا يوجد له فائده وأما الادخال على عدة اسطر متتاليه وبالتالى ان الاسكرول بار الافقى لي له فائده هذا والله اعلم ( مش عايز افتى فى شئ لا اعلمه واترك الامر للخبراء ) السكرول الأفقى له فائدة فى الأسطر المتعددة .. MultiLine ولكن لا تظهر هذة الفائدة الا إذا كانت الخاصية الأخيرة من خصائص صندوق النص وهى WordWarp غير مفعلة False فى الحالة دى لو انت كاتب سطر اطول من عرض المربع النصى مش ها يظهر باقى السطر ولا حتى السكرول الافقى .. ولكن عند الضغط داخل النص للتحرير يظهر السكرول الافقى الذى يمكنك من مشاهدة باقى السطر انما لو كانت True فإن السطر الطويل بيكمل فى اللى بعده وفى الحالة دى لن يظهر السكرول الافقى لعدم الحاجة اليه1 point
-
اسف لم اكن رايت المرفق ! ولكن تظل فكرة ان يكون الفترة حقل محسوب افضل من حفظها كقيمة بالجدول وخصوصا ربطها بحدث عند عنصر واجد في النموذج ! هذا ويظل صاحب الراية هو الاستاذ ابو عبدالله ! بالتوفيق1 point
-
انا مسجل من فترة طويلة واكثييييييييييييييييييييييير استفدت من المنتدى وانشاء الله راح افيد بعد ما صار عندي خبرة متواضعة واحلى من هيك منتدى واحلى من هيك أعضاء ما في1 point
-
يا عم ياسر مش عايزين حاجه فيها صداع عايزين حاجه بسيطه وسلسه دون تعقيد او ان البنادول عليك ميبقاش صداع وغرامة فلوس مشكور يا غالى على مرورك ومشاركتك القمة تقبل تحياتى1 point
-
أخي الكريم حسام السلام عليكم ورحمة الله وبركاته لدي دالة تفقيط بالمعادلات لرقم واحد هي من أعمال المنتدى الكريم...جزى الله خيراً من اجتهد لإنشائها تستطيع من خلالها كتابة أي رقم أعمل عليها حالياً..أقدمها لكم لتحديثها لتصلح لتفقيط عدة أعداد فيستفيد منها المعلمون والمحاسبون كما ذكرت هي رائعة بحق ولكنها تقتصر على تفقيط رقم واحد ...فهل بالإمكان التعديل عليها بعد إذن صاحب الفكرة الأساسية الذي لا أعرفه... والسلام عليكم. دالة تفقيط بالمعادلات تصلح لرقم واحد.rar1 point
-
السلام عليكم ورحمة الله وبركاته أخي الصقر جزاكم الله خيراً ..لخدمتكم لشريحة رائعة من الناس كنت منهم ذات يوم قبل المآسي التي حلت بنا ولكن إن سمح مقامكم الكريم .ماذا لو حصل الطالب على درجة صفر وهذا ما لانرجوه من طلابنا الأحبة؟! ... ثم لكي لا يعطي رسالة خطأ عند وجود فراغ في العمودA قمت بتعديل بسيط أرجو أن تقبله مني بما يخص درجة الصفر ولعدم إعطاء خطأ...ليس تطاولاً على علمائنا بل وجهة نظر أرجو قبولها.. والسلام عليكم. تفقيط بالمعـادلات.rar1 point
-
1 point
-
مشكور حبيبي نورت بيتك التاني اوفيسنا انت من فلسطين الله ينصرها بس كنت عاوز اقولك فلسطين حره حبيبي العرب كلهم هما يلي محتلين1 point
-
الطريقه الرابعه :- استخدام لغة البرمجه هى بنظرى من اهم الطرق واسهلها وهى تكون من خلال البرمجه فقط ولا يمكن تنفيذها من شاشة الخصائص فى مرحله التصميم شاهد الصوره التالية هتعرف ما هى الطريقه الكود هو بشكل مكبر عباره عن سطر واحد فقط ComboBox1.RowSource = "sheet1!a2:b" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row تعالو نفصص كل كلمة فى هذا السطر ونعرف ازاى نكتبه comboBox هو اسم الكمبوبوكس المراد تعبئته بالبيانات . تكتب من خلال جعل الكيبورد انجلش ثم نضغط على حرف ز بالعربى RowSource هى الخاصيه المسئوله عن تعبئة الكمبوبوكس بالبيانات = نكتب علامه = " نفتح قوس تنصيص " ويكتب من خلال شفت+حرف ط بالعربى Sheet1!a2 وهى اول خلية بالجدول المراد عرض بياناته فى الكمبوبوكس (ونلاحظ اننا كتبنا اسم الشيت متبوع بعلامة تعجب ! ثم اسم الخلية) : تعنى الى b اسم اخر عمود بالجدول " قفل قوس التنصيص طالما فتحنا قوس اذن لازم نقفله & علامة و أو بمعنى and Sheet1.Cells(Rows.Count, "a").End(xlUp).Row اخر خليه بها بيانات بالعمود A طيب عرفنا ازاى نكتب الكود فما هو وقت تنفيذ الكود السطر ده هيتم وضعه فى اى حدث ( والله دى بقى حضرتك اللى تحددها حسب برنامجك انت ولكن على سبيل المثال نضع هذا الكود فى حدث فتح الفورم شاهد الكود Private Sub UserForm_Initialize() ComboBox1.RowSource = "sheet1!a2:b" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row End Sub فعند فتح الفورم وتهيئته يتم تعبئة الكمبوبوكس بالبيانات ممكن نكتبه بشكل تانى لو حابب تعرف اكتر من طريقه شوف الكود وبعدين اشرحه لك Private Sub UserForm_Initialize() Lr = Sheet1.Cells(Rows.Count, "a").End(xlUp).Row ComboBox1.RowSource = "sheet1!a2:b" & Lr End Sub قمت بعمل متغير وسميته Lr وممكن تسميها انت بأى اسم كما تحب وقلت ان المتغير ده عباره عن اخر خلية بها بيانات بالعمود A وبالتالى كتبة المصدر بتاع البيانات كالتالى sheet1!a2:b" & Lr" تم الاستعاضه بـ Lr بدلا من السطره ده Sheet1.Cells(Rows.Count, "a").End(xlUp).Row ويمكن كتابة الكود بشكل اخر ( ملحوظه هذا التنوع بالكتابه هو فقط من حيث اسلوب كتابة الكود لكن المضمون واحد) Private Sub UserForm_Initialize() With ComboBox1 .RowSource = "sheet1!a2:b" & Sheet1.Cells(Rows.Count, "a").End(xlUp).Row End With End Sub الى هنا انتهى درس اليوم اعتقد انه بسيط وممتع يارب اكون وفقت بالشرح وتستفيدو منه عايز اشوف تجاربكم على الدرس على رابط الردود الخاص بالموضوع اتمنى لكم التوفيق وانتظرونا فى طريقه جديده قريبا بأذن الله1 point
-
اخي marfipo اشعر باستعجالك ولكن بالصبر ياتي كل شئ اخي جرب المرفق واخبرني بالنتيجة تحياتي Situations CHB (Marché).rar1 point
-
الاخ الامير انا لم اربط الاجابة على سؤالك بتغيير الاسم لقد قمت بالرد عليك لكن يبدو ان الرد لم يسجل لان النت كان بطيئ المهم انا لا احبذ النقل من الورد الى البوربوينت فهناك طريقتين لذلك الاولى ببرنامج والثانية من داخل البوربوينت لكن كلاهما يظهر الصفحة والكلمات بطريقة غير منظمة وكبيرة وتحتاج الى تعديل ياخد وقت مع عدد الصفحات 100 اليك هذا الرابط موجود فيه طريقه اخرى افضلها وهى ربط الورد بالبوربوينت بمعنى اذا ضغطت على ايقونة الورد بالبوربوينت يظهر جميع الصفحات للورد كاملة بنفس التنسيق وفى انتظار ردك فى المشاركة 33 http://www.officena.net/ib/index.php?showtopic=46472&page=21 point
-
أخي الحبيب سليم جزيت خيرا وأسعدك الله كما أسعدتني بهذه الكلمات الطيبة قل بفضل الله وبرحمته فبذلك فليفرحوا .. الوسيلة هي توفيق من الله وليس من العبد ، وليس للعبد أن يملك الوسيلة ..والحمد لله أن وفقني الله إلى هذه الوسيلة وهذا الأسلوب سدد الله خطاك ووفقك الله ورعاك أخي في الله سليم (ذو الهمة العالية والنشاط الملحوظ)1 point
-
أخي الكريم Morestudy Thank you very much for your nice words معلش طلبت معايا شوية إنجليزي ..أشكرك أخي الحبيب على كلماتك المشجعة ، والحمد لله بدأت تمطر وبقبت إنت أول واحد استفاد ربنا ييسر الأمور .. بس بالنسبة لخفة الظل دي عملية نسبية .. يعني فيه ناس شايفه إنه خفة ظل وناس تانية أكيد هتشوفه إنه أسلوب رخم وغلس ومش مفيد (الاختلاف في الرأي لا يفسد للكود قضية) أنا يهمني في النهاية والبداية المبتدئ الذي يخشى أن يخطو خطواته الأولى فهو بمثابة الطفل الصغير الذي يتعلم السير فهو يريد أن يجد من يمسك بيديه حتى يستطيع ويتجرأ على المشي ، وبعد أن يتقن فن المشي ساعتها يستغني عن مد له يد العون هههه يعني كدا زي ما بيقول الشاعر علمته رمي السهام فلما اشتد ساعده رماني ..1 point
-
بسم الله الرحمن الرحيم هذه طريقة أستخدمها لتصحيح الأخطاء في الأسماء أو العناوين يمكن أستخدامها في الترجمة للغة أخرى وتكون مجدية جدا عنما يكون عندك كم كبير من الأسماء وتوجد بها بعض الأخطاء فيتم تجميع الكلمات التي في هذه الأسماء في عمود واحد ثم تكتب تصيحها أو ترجمتها في العمود المقابل فتحصل على الترجمة أو التصحيح باستخدام دالة معرفة ترجمة.rar1 point
-
الاخ الكريم هنا مرفق ( جمع مشاركة الاساتذة " ابو احمد " عبد الله المجرب & جمال الفار ) بحيث تكون المشاركتين في ملف واحد ( مع فارق طبيعة العمل ) التاريخ والوقت من خلية الى ثلاث خلايا وبالعكس مع فرق الوقت والتاريخ مع ملاحظة انه تم اضافة دالات لنفس المشاركات ولكن لجهة الوقت وليس التاريخ شكرا للجميع وفقك الله ابو الحارث التاريخ والوقت من خلية الى ثلاث خلايا وبالعكس مع فرق الوقت والتاريخ.rar1 point