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

ياسر خليل أبو البراء

المشرفين السابقين
  • Posts

    13,165
  • تاريخ الانضمام

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

  • Days Won

    412

كل منشورات العضو ياسر خليل أبو البراء

  1. الأخ الكريم live8523 جزاكم الله خيرا على كلماتك الرقيقة ، ويكفيني دعوة بظهر الغيب ... الأخ الحبيب nawras مشكور على مرورك العطر .. بالنسبة لطبك اطرح موضوع جديد ، وستجد المساعدة من أعضاء الصرح العملاق . مشكور إخواني على مروركم العطر على موضوعي المتواضع
  2. روعة يا ابن مصر بارك الله فيك إنت كنت فين من زمان ؟؟ مخبي عننا الجمال والروعة دي ليه !!
  3. أخي الفاضل هل الإضافة في الصفوف أم في الأعمدة . إذا كانت في الصفوف فأعتقد مفيش مشكلة أما في الأعمدة وجب عليك تعديل الكود هل ضغطت على الأمر Run الموجود في ورقة العمل بعد الانتهاء من الإضافة؟
  4. الأخ الحبيب ابن مصر مشكور على نصائحك الغالية ، وإن شاء الله مستمر .. بس هي الفكرة لما تكمل وفيه حافز ..حاجة بتزقك هتلاقي إبداع أكتر (مش كدا ولا ايه) الأخ محمد القمجي مشكور على متابعتك الجيدة للحللقات ..بس يا ريت تطبيق عليها حتى تكتمل روعة الحلقات ، لأن الواجبات والتطبيق على الحلقات هيفيدنا بشكل عملي ، وهيضيف لينا كلنا معلومات جديدة ..(مش كدا ولا ايه) الأخ مختار أجبتك عن سؤالك وأضفت معلومتك الجديدة في الموضوع
  5. الأخ الحبيب مختار .. جزيت خيرا على مرورك العطر ، وعلى المعلومة الجديدة أيضا تستخدم Chr(10) أيضاً لإحداث سطر جديد زيها زي الكلمتين اللي ذكرناهم في الموضوع أنا عدلت المشاركة وأضفت معلومتك أما بالنسبة لسؤالك أعتقد إنك فهمت القصة .. كل مرة بنستخدم أي كلمة بنقدر ننزل سطر واحد لو استعملناها مرة واحدة ، ولو استعملتها مرتين هينزل سطرين ، ولو ... كدا تمام
  6. مشكور على مرورك العطر أخي وحبيبي في الله (أ / إ) بس البنزين بيخلص للأسف .. إنت عارف لما تحس إن مفيش متابعة جيدة ، بيخلي الواحد كسلان ، ومش عايز يجدد صراحة المتابعة ضعيفة جدا ومش عارف السبب رغم إني مبسط الموضوع جدا ومش معقده عندك اقتراح بالنسبة لتحسين المتابعه؟ أو ابداء رأي ؟ أو إضافة ؟ هل فيه مشكلة في الحلقات المقدمة ؟؟ احترت صراحة .. بقالي كام يوم مقدمتش حلقة جديدة على أمل إن حد يسأل ع الجديد محدش معبر
  7. بارك الله فيك أخي الحبيب ابن مصر أعتذر انشغلت في الحلقة العاشرة ، وجيت لاقيتك مخلص على الموضوع كالعادة كن حبيبي ترى الإكسيل جميلاً .. تقبل تحياتي
  8. السلام عليكم إخواني الكرام نظراً لعدم المتابعة الجيدة للحلقات .. ظننت أن الأعضاء لم ينتبهوا للحلقات المقدمة عموما تم بحمد الله وعونه وتوفيقه الانتهاء من الحلقة العاشرة ، وهي خاصة بالدالة MsgBox وها هو رابط الحلقة http://www.officena.net/ib/index.php?showtopic=57094&page=6#entry363549 ويا رب تستفيدوا .. وتعملوا الواجب .. الواجب ناس كتير متأخره فيه
  9. الحلقة العاشرة ************ السلام عليكم ورحمة الله وبركاته أقدم لكم اليوم حلقة كاملة الدالة MsgBox (وقد قدم لها الأخ الحبيب حسام عيسى موضوعاً كاملاً ، مما أخرني في تقديم الحلقة) .. عموماً هنتكلم عنها مرة تانية ، وفي الإعادة إفادة.. كلمة MsgBox اختصار للكلمة الإنجليزية Message Box أي صندوق الرسالة .. ودي وظيفتها إنك بتعرض رسالة للمستخدم تفيده بأمر معين .. لما نكتب الدالة MsgBox ، ونضغط مسطرة عشان ناخد مسافة ، بيظهر لنا مستطيل أصفر فيه توضيح لبارامترات الدالة .. كلها اختياري ما عدا البارامتر الأول اللي هو اسمه Prompt ، والبارامتر ده هو عبارة عن النص اللي هيظهر للمستخدم (وطبعاً مينفعش يكون اختياري وإلا مش هيكون فيه رسالة للمستخدم) بس إحنا ممكن نضحك على المحرر ، ونكتب السطر بالشكل ده : MsgBox "" هو كل اللي يهمه أقواس التنصيص .. هودا كل اللي يفهمه ، أما النص اللي بين أقواس التنصيص فدا ميعرفوش وميهموش ، اكتب أي كلام .. MsgBox "واخد على خاطري منكم" دي الرسالة اللي عايز أوصلها لكم أحبابي .. ودا سببه عدم المتابعة الجيدة للحلقات .. عموماً دا مش وقت للعتاب.. طيب واحد هيسأل : طيب كدا موضوع الدالة بسيط ومش محتاج حلقة ؟ أقوله البسيط هنعقده ، والمعقد هنبسطه .. تعالوا معايا نضع قيمة في الخلية D3 (كل اللي بيشرحوا مش عارف ليه مركزين على الخلية A1) أنا بحب التغيير - من باب خالف تعرف - ، وليكن القيمة 1500 عايزين نظهر القيمة الخاصة بالخلية في رسالة : MsgBox Range("D3").Value الرسالة هتظهر وفيها القيمة 1500 ، طيب ممكن نضيف عليها نص .. أكيد ممكن ! ليه لا! MsgBox "القيمة الموجودة يا أستاذ حسام في الخلية هي " & Range("D3").Value نلاحظ هنا إننا استخدمنا المعامل Concatenate اللي هو شكله & ، ودا وظيفته إنه بيدمج النصوص .. طبعاً القيمة اللي موجودة في الخلية D3 حتى لو كانت قيمة رقمية ، هنا مع دالة الرسالة مش بتشوفها رقم ، لكن بتشوفها نص (هنبص بعيون الدالة الجميلة) طيب ممكن نظهر قيمة خلية تانية .. أكيد ممكن ! ليه لا نضع القيمة 2000 في الخلية E4 ونجرب : MsgBox Range("D3").Value & Range("E4").Value هنلاقي إن قيمة الخلية D3 والخلية E4 لازقين في بعض ، دا لأنك مسبتش مسافة بينهم .. طيب المسافة هنعملها إزاي ؟ هو سؤال بسيط بس اعذروني أكيد فيه ناس بتسأله :: هنترك مسافة وبس .. لا .. هنعمل مسافة بالمسطرة بس بشرط تكون المسافة بين أقواس تنصيص زي كدا : MsgBox Range("D3").Value & " " & Range("E4").Value هنا نفس الكلام ربطنا بالمعامل & ، وعشان تكون المسافة مناسبة ضربت على المسطرة 3 مرات (معلش أصلي مضايق ومحتاج أضرب حد ، فملقتش غير المسطرة .. بس كفاية عليها 3 ضربات ..) واحد هيقولي أنا جربت الكود بس أنا مش عاجبني شكلهم جنب بعض ، ممكن نخلي كل قيمة في سطر .. أكيد ممكن ! ليه لا! MsgBox Range("D3").Value & vbNewLine & Range("E4").Value كلمة vbNewLine عشان نقدر ننزل لسطر جديد (وقلت قبل كدا بس محدش بيتابع إن فيه كلمة تانية بتؤدي نفس الغرض اسمها ايه يا شاكر؟ مش بقولكم محدش مذاكر .! اسمها vbCrLf ) يلا زيادة الخير خيرين .. وأضاف الأخ مختار كلمة جديدة أيضاً تؤدي نفس الغرض ألا وهي Chr(10) ربنا يسترها علينا وعليكم دنيا وآخرة. نشوف السطر ده : MsgBox ("الحمد لله الذي بنعمته تتم الصالحات") ايه الجديد يا أستاذ عبد المجيد ؟ الأقواس .. ممكن نستغني عنها ؟ آه ممكن .. ليه لا! .. بس الأقواس دي هنستفيد منها في إنك تخلي جملة MsgBox يمكن وضعها كقيمة في متغير (نصبر شوية هييجي الكلام عليها) .. طيب ايه هي الإضافات اللي نقدر نضيفها (هي زي البهارات حاجة كدا تحلي الأكله .. تخليها أحلى) ... إحنا قلنا البارامتر الأول خاص بالنص ودا إجباري (بس ممكن نخدع المحرر) ، البارامتر الثاني خاص بالأزرار Buttons .. الأزرار دي زي OK و Cancel و Retry وهكذا.. نجرب السطر التالي : MsgBox "هل تحب حلقات افتح الباب؟", vbOKCancel نلاحظ بعد نص الرسالة Prompt عملنا فاصلة , ودي عشان نقول للمحرر إننا هنضيف أزرار Buttons .. أول ما تعمل الفاصلة هتلاقي زي ما اتعودت قايمة فيها القيم اللي ممكن تستخدمها .. طيب لو نفذنا السطر اللي فات هنلاقي إن زر OK أو زر Cancel لو ضغطت عليهم مش هيحصل حاجة غير إنه يقفل الرسالة .. (قلنا نصبر هييجي عليها الكلام يا مستر عبد السلام) نتعرف على الأزرار الموجودة والمتاحة عندنا : vbAbortRetryIgnore vbOKCancel vbOKOnly vbRetryCancel vbYesNo vbYesNoCancel ممكن نجرب القيم دي ... القصة كلها في البادئة vb ثم الأزرار اللي هنستخدمها.. ننتقل لجزئية أخرى : مع نفس البارامتر الخاص بالأزرار ممكن نضيف رموز (علامة تعجب - علامة استفهام - ..) والرموز عشان نضيفها نضع علامة + بعد الأزرار التي سيتم استخدامها .. بالمثال يتضح المقال : MsgBox "هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion ممكن نتعرف على الرموز : vbQuestion vbInformation vbCritical vbExclamation طيب ممكن نستغنى عن الأزرار ونستعمل الرموز فقط ؟ أو ممكن نستغنى عن الرموز ونستعمل الأزرار فقط؟ أكيد ممكن ! ليه لا! (النهاردة واخدين حريتكم ..مفيش تقيد) هسيبكم شوية تجربوا الرموز دي ، وتشوفوا كل رمز شكله ايه؟ - فاصل ونواصل - واحد بعد ما شاف الرسالة ، لاحظ إن فيها عنوان Microsoft Excel فسألني ممكن أغير العنوان ده ؟ رديت عليه وقلت له (طبعاً عارفين الإجابة) عنوان الرسالة هو دا البارامتر التالت .. ود اسمه Title (ونلاحظ إن البارامتر لما يكون اختياري بيوضع بين أقواس بهذا الشكل [ ] ) نجرب السطر التالي : MsgBox "هل تحب حلقات افتح الباب؟", , "منتدى الأحبة" ايه دا بقا إنت عامل فاصلتين ليه؟ يا سيدي ما أنا قلت لك إن البارامتر التاني الخاص بالأزرار والرموز دي اختياري ، بمعنى يمكن الاستغناء عنه ، بس عشان نعديه لازم فاصلة ، وبعد الفاصلة فاصلة تانية ، يقوم المحرر يفهم إنك استغنيت عن البارامتر التاني ، ويشتغل على البارامتر التالت .. اللي هو عنوان الرسالة.. نجرب ونشوف ! ننتقل لأهم نقطة في حلقة اليوم ألا وهي تعيين الرسالة كمتغير ، عشان ببساطة ننفذ كود معين لو المستخدم اختار زر وننفذ كود تاني لو اختار زر تاني (أكيد الكلام يتوه ..خلينا في التطبيق) Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") نخلي بالنا إننا هنا هنستخدم متغير باسم Answer (ممكن تسميه بالاسم اللي يعجبك) ، والمتغير ده هيكون له قيمة (الرسالة مجرد ستارة .. والقيمة مخفية .. والقيمة دي هنعرفها حالاً) لو حبينا ننفذ كود معين في حالة اختيار معين ، هنستخدم الجملة If الشرطية ، يعني ببساطة لو المتغير Answer قيمتة كذا اعمل كذا ، ولو قيمته كذا اعمل كذا .. Sub Query() Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") If Answer = vbYes Then MsgBox "كدا حبيبي وصاحبي وكفاءة" ElseIf Answer = vbNo Then MsgBox "زعلت منك ..روح ربنا يسامحك" End If End Sub أظن المثال واضح ، في حالة إذا كانت قيمة Answer تساوي vbYes ، هينفذ السطر التالي ويظهر رسالة بمحتوى معين ، ولو كانت القيمة vbNo هيظهر رسالة تانية .. واحد هيقولي هو كله رسايل رسايل مفيش شات .. طبعا الأسطر اللي هيتم تنفيذها مش شرط تكون رسالة ، دا مجرد مثال عشان تفهم كيفية استخدام المتغير .. لكن ممكن تنفذ مجموعة أسطر من الأكواد في حالة vbYes ، ومجموعة أسطر أخرى من الأكواد في حالة vbNo ... ركز وخلي بالك من الكود التالي : Sub Query() Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") If Answer = 6 Then MsgBox "كدا حبيبي وصاحبي وكفاءة" ElseIf Answer = 7 Then MsgBox "زعلت منك ..روح ربنا يسامحك" End If End Sub كلنا اللي عملناه شيلنا vbYes وحطينا رقم 6 ، وشيلنا vbNo وحطينا رقم 7 (ايه دا بقا ..طيب هنعرف منين اللي إنت بتقوله ده ..فيه جدول بقيمة كل زر من الأزرار .. يرجى عدم الحفظ) فيه حاجة مهمة نسيت أقول عليها : لو لاحظتو إن الرسائل كلها وعنوان الرسائل بتظهر ناحية اليسار ، عشان نخليها يمين (ربنا يجعلنا من أهل اليمين) نجرب الكود التالي : MsgBox "هل تحب حلقات افتح الباب؟", vbMsgBoxRight, "منتدى الأحبة" آخر جزئية هنتكلم فيها .. مش هنتكلم فيها (فيه ملف مرفق فيه توضيح لآخر جزئية .. أنا بس هشرح نقطة واحدة في الملف المرفق ، وإنتو إن شاء الله المولى هتفهموا الباقي) الأزرار والرموز اللي عدت علينا في الحلقة ، ممكن نستغنى عنها بقيم ..إزاي ؟ MsgBox "هل تحب حلقات افتح الباب؟", vbYesNoCancel ممكن السطر ده يكون بالشكل ده : MsgBox "هل تحب حلقات افتح الباب؟", 3 يعني القيمة 3 = vbYesNoCancel .. مثال تطبيقي : ------------ Sub Query() Dim Answer As String Answer = MsgBox("هل تريد الدخول لتطبيق الإكسيل لتطبيق الأكواد في حلقات افتح الباب؟", vbYesNoCancel) If Answer = vbYes Then MsgBox "تفضل بالدخول .. بيتك ومطرحك ، وإن شاء الله تستفيد" ThisWorkbook.Activate ElseIf Answer = vbNo Then MsgBox "أكيد مشغول عشان ناوي تقفل .. عموماً تصحبك السلامة وفي رعاية الله" ActiveWorkbook.Save Application.Quit End If End Sub وأخيراً أتمنى أن أكون قد وفقت في توصيل المعلومة لكم بشكل مبسط .. دمتم في رعاية الله .. MsgBox Values.rar
  10. جرب التالي Private Sub cmd_mark1_Click() Dim mark As Integer Dim gpa As String Me.TextBox1.Text = InputBox("أدخل العلامةأولا") mark = Val(TextBox1.Text) Select Case mark Case 18 To 15 MsgBox ("ممتاز") Case 15 To 12 MsgBox ("جيد جدا") Case 12 To 10 MsgBox ("جيد") Case 10 To 7 MsgBox ("متوسط") Case 7 To 0 MsgBox ("ضعيف") Case Else MsgBox ("توبيخ") End Sub
  11. هل رأيت المشاركة رقم 3 ورقم 5 ؟
  12. جرب هذا أيضا لربما يفيدك Processes To Sheet.rar
  13. أخي الحبيب جرب الملف التالي List All Windows.rar
  14. أخي الفاضل كل ما لدي هو الكود التالي الذي يقوم بعمل قائمة بالنوافذ المفتوحة (المصنفات المفتوحة) قم بفتح أكثر من مصنف .. ادخل لمحرر الأكواد عن طريق الضغط على Alt+F11 أدرج موديول جديد وأضف الكود التالي Sub ListWindows() Dim wn As Excel.Window For Each wn In Application.Windows Debug.Print wn.Caption Next wn End Sub قم بالضغط على Ctrl + G لإظهار النافذة الفورية .. قم بالضغط على F5 لتشغيل الكود ..(مؤشر الماوس في الكود)
  15. جزاكم الله خيراً أخي في الله مختار حسين ونريد منك مواصلة نشاطك..فأنا أرى فيك مستقبلا باهراً
  16. أخي الحبيب عادل ابو زيد إليك شرح ما أعرفه في الكود وما لا أعرفه يتفضل أحد الكبار لشرحه .. Sub UniqueId() 'تعريف المتغير v Dim v 'عمل حلقة تكرارية للمصفوفة التي تضم ورقتي العمل المراد العمل عليهما ويمكنك إضافة أوراق أخرى For Each v In Array("خروج نقديه", "دخول نقديه") 'استخدام الجملة التالية With ... End With للتعامل مع كل ورقة عمل على حدا With Sheets(v) 'تحديد قيمة للنطاق المسمى deb بحيث يضم كل الخلايا في هذا النطاق Set deb = .Range("G4:G" & .Range("G" & .Rows.Count).End(xlUp).Row) 'حلقة تكرارية جديدة بداية من الصف الأول في النطاق إلى آخر خلية بالنطاق For i = 1 To deb.Rows.Count 'وضع شرط بحيث يتم تجاوز الخلايا الفارغة ولا يتم التعامل معها If deb(i, 1) <> "" Then 'عمل مصفوفة لتخزين القيم بها If InStr(raj & ",", "," & deb(i, 1) & ",") = 0 Then raj = raj & "," & deb(i, 1) End If Next i End With Next v roy = Split(Mid(raj, 2), ",") 'وضع المخرجات أو النتائج في الخلية C4 Sheets(1).Range("C4").Resize(UBound(roy) + 1) = Application.Transpose(roy) End Sub
  17. بارك الله فيك أخي مختار ممكن ترفق الكود في الموضوع بهذا الشكل ليكون الموضوع متكامل ... مجرد تلميح Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2:A10")) Is Nothing Then With Target(1, 2) .Value = Date End With End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2:A10")) Is Nothing Then With Target(1, 2) .Value = Time .EntireColumn.AutoFit End With End If End Sub
  18. أخي الحبيب أبو نبأ تسمح لي أعاكسك في الملف المرفق الخاص بك ذكرت أن ( عدد الصفوف في القائمة الرئيسية اكثر من ثلاثة مليون صف ) استوقفتني هذه العبارة طويلااااااااااً .. فأنا أعمل على أوفيس 2007 و 2013 .. وقلت في نفسي لربما نزل إصدار جديد من الأوفيس بدون أن يبلغني بيل جيتس بالأمر ، فهممت أن أتصل به ، لكني وجدت موبايله غير متاح .. عدد الصفوف 1048576 فقط ..كيف استطعت أن تدخل بيانات أكثر من ثلاثة مليون ونصف ..كيف ذلك ؟ دلني بالله عليك كيف فعلت ذلك؟
  19. تسلم يا أخي إبراهيم سطر بسيط وروعة..أنا دائما أعشق البساطة ..
  20. إثراء للموضوع تفضل أخي الحبيب جرب الملف التالي Sumproduct.rar
  21. الأخ الحبيب عادل أبو زيد إليك في المرفق الملفين معاً.. ملف خاص بكل أوراق العمل .. وملف خاص بورقتي عمل .. عندك اللي يعجبك اتفضله Distinct Names From Multi Sheets.rar
  22. يا عم حسام إنت مخليني مش عارف أكتب الحلقة .. كل ما آجي أكتب أحس إن اللي كتبته مش هييجي حاجة جنب اللي كتبته فامسح واكتب من الأول ... شكلي هلغي الحلقة دي وأخلي موضوعك هو الحلقة اللي عليها الدور وخلاص ..
  23. بارك الله فيك أيها الأخ العراقي وبارك في أهلك ومالك
×
×
  • اضف...

Important Information