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

أبو حنف

02 الأعضاء
  • Posts

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

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

كل منشورات العضو أبو حنف

  1. هذه المشاركة التي كتبتها لك في أول خلية كتبت رقم اليوم في التاريخ الموجود الخلية التالية الشهر الخلية الأخيرة السنة ثم تعبئة سريعة
  2. مشكلة التاريخ يمكن حلها بواسطة التعبئة السريعة كما بينت لك سابقا في مشاركة أخرى انظر المرفق وانظر ماذا سيوقفك وأخبرني لعلنا نصل لحل calculation - Mar. 2016(2).rar
  3. بعد إذن أخي سليم قم بتحويل المعادلات إلى الأولى =IFERROR(SUBSTITUTE(REPLACE($H27;1;(FIND(")";$H27));"");"-";"");"") الثانية =IFERROR(REPLACE($H27;(FIND(")";$H27)+1);LEN($H27)-(FIND(")";$H27)+1);"");"")
  4. أخي محمد .... حاولت المساعدة ولكن قابلتني بعض المشاكل منعتني من عمل نموذج موحد لكل الشهور منها : 1- تسجيل الموظف دخول وعدم تسجيل خروج أو العكس 2- تسجيل الموظف خروج ودخول في وقت الدوام ( يتم التسجيل على البصمة 4مرات في نفس اليوم (مرتين دخول ومرتين خروج ) !!!!! ولكن فكرة الحل التي جاءتني كالتالي ... ( أردت تسجيلها كود ولكن لن تفلح بسبب ما سبق ) 1- عمل فلتر للأعمدة ثم فلترة الدخول فقط ثم قص ولصق الصفوف في صفحة جديدة 2- عمل فلتر للأعمدة ثم فلترة الخروج فقط ثم قصه ولصق خانة الخروج فقط في الصفحة السابقة مرفق ملف به طريقة جعل التاريخ فقط في خلية ، وتحديد الوقت فقط في خلية أخرى قد تساعدك شيئا ما calculation - Mar. 2016(1).rar
  5. أخي محمد بدون معادلات أو أكواد إليك الحل التالي : قم بكتابة الأسماء التي تريد في العمود a ثم في الخانات b1,c1,d1,e1 قم بتجزئة أول اسم كما تريد مثال ..... الاسم / محمد محمود علي اسماعيل وهو في الخلية a1 الخليةb1 محمد ،، والخلية c1 محمود ،، والخلية d1 علي،، والخلية e1 اسماعيل ثم الخطوة الأخيرة قف في الخلية الثانية من كل عامود ومن شريط القوائم في اكسيل ستجد الزر السحري "تعبئة سريعة" اضغط عليه وسترى النتيجة الفورية تقبل تحياتي
  6. اضافة على حل أخينا سليم هذا حل بسيط بالمعادلات ضع هذه المعادلة في الخلية h1 ثم اسحب لأسفل =CONCATENATE(A1; " ";B1; " ";C1;" "; D1;" ";E1) join_names.rar
  7. ما شاء الله أخ سليم والله معادلة ولا أروع ربنا يزيدك من علمه ...
  8. عذرا لم أرى مشاركة أخى سليم "ملك المعادلات" إلا بعد الرفع ولاثراء الموضوع جرب المرفق ويوجد حل جميل بالأكواد لو أردت معادلة.rar
  9. الأسهل والأسرع والأفضل نسخ المعادلة الموجودة إلى الجدول الذي تريد المعادلة سهلة وبسيطة فقط تمعنها جيدا وستفهما وإذا لم تستطع أخبرني " لا تعطني سمكة ولكن علمني كيف أصطاد " ! ونحن تحت أمرك في أي وقت تقبل مروري
  10. تم عمل قائمة منسدلة لاختيار الأسماء منعا للخطأ book.rar
  11. اخواني عندي مشكلة في الأكواد ولم أستطع التوصل لحل لها الفكرة أني دمجت بين كودين : ( كود تتبع التغييرات + كود تشغيل الشاشة الافتتاحية وتشغيل الملف تلقائيا حتى لو الماكرو في أعلى الأمان ) الكود يعمل معي جيدا ولكن عند فتح الملف أو غلقه يعطي رسالة خطأ ولكن يعمل الكود ويعطيني الخطأ على المتغير For i = 2 To Sheets.Count Option Explicit Dim vOldVal Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range) Dim bBold As Boolean If Target.Cells.Count > 1 Then Exit Sub If ActiveSheet.Name = "change" Then Exit Sub With Application .ScreenUpdating = False .EnableEvents = False End With If IsEmpty(vOldVal) Then vOldVal = "خلية فارغة" bBold = Target.HasFormula VBA.Calendar = vbCalHijri With Sheets("change") If .Range("A1") = vbNullString Then .Range("A1:H1") = Array("الخلية التي حصل فيها تعديل", "القيمة السابقه التي كانت في الخلية", "القيمة الجديدة", "حصل التعديل في الوقت", "حصل التعديل في التاريخ", "حصل التعديل من قبل المستخدم", "تاريخ التغيير", "يوزر") End If With .Cells(.Rows.Count, 1).End(xlUp)(2, 1) .Value = ActiveSheet.Name & " : " & Target.Address .Offset(0, 1) = vOldVal With .Offset(0, 2) If bBold = True Then .ClearComments .AddComment.Text Text:="maicl2010@gmail.com:" & Chr(10) & "" & Chr(10) & "تم إضافة معادلة في هذه الخلية" With Selection.Font .Name = "Traditional Arabic" .FontStyle = "غامق" .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With End If .Value = Target .Font.Bold = bBold End With .Offset(0, 3) = Time .Offset(0, 4) = Date .Offset(0, 5) = Application.UserName End With .Cells.Columns.AutoFit End With vOldVal = vbNullString With Application .ScreenUpdating = True .EnableEvents = True End With On Error GoTo 0 End Sub Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range) vOldVal = Target End Sub Private Sub test() Application.EnableEvents = True End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets("sheet1").Activate Application.ScreenUpdating = False For i = 2 To Sheets.Count Sheets(i).Unprotect (123) Next Application.ScreenUpdating = True End Sub Private Sub Workbook_Open() Sheets("MyDate").Range("E3:IT3").ClearContents For i = 2 To Sheets.Count Sheets("MyDate").Cells(3, i + 3) = Sheets(i).Name Next End Sub
  12. الشروحات كثيرة هنا في المنتدى والطرق كثيرة فقط ابحث بكلمة "فورم ادخال" وهذا شرح الكود الذي استخدمته وقد تعلمته من المنتدى Attribute VB_Name = "Module3" Private Sub CommandButton1_Click() ' سنقوم بشرح مبسط جدا للكود ان شاء الله 'نقوم هنا اولا بوضع المعطيات الثابتى التي ستكون مرجعا لنا في الكود 'بعد ذلك ' iRow السطر التالي لتحديد مرجع العمود وهو هنا Dim iRow As Long 'ws السطر التالي لتحديد مرجع الشيت المطلوب استخدامه وهو هنا Dim ws As Worksheet '================================================ 'ويمكن لنا تغيير المعطيات الثابتة لتكون كما نريد 'ws فمثلا يمكننا تغيير 'SH الي اي متغير مثلا '================================================ ' بطريقة بسيطة وسهله وبعيدا عن التعقيد والمصطلحات الكبيرة 'للتسهيل ليس الا ... واي استفسار الاكيد انني معكم دائما 'سأقوم بشرح الاكواد بابسط طريقة ممكنه 'السطر التالي معناه 'ان يجعل الشيت المطلوب استخدامه هو .... وهو هنا الشيت( ) 'ويجب وضع اسم الشيت المراد ترحيل وتسجيل البيانات ' "" الموجودة بالفورم بين علامتي التنصيص كما في السطر التالي Set ws = Worksheets("Sheet2") '================================================ ' بعد تحديد اساسيات العمل وتحديد الصفحة المطلوب الترحيل اليها ' يجب علينا اولا تحديد الصف الفارع الذي سيتم تسجيل البيانات الجديدة به 'حتي لا يتم الكتابة علي صف واحد كل مرة ولعمل ذلك نقوم بالتالي ... '================================================ ' نقوم بعمل سطر بسيط للعثور علي اول سطر فارغ في الصفحة ' المختارة لعمل عملية الترحيل وهي هنا شيت رقم 2 ' ولعمل ذلك نقوم بوضع السطر التالي ومعناه 'iRow اجعل 'ws في صفحة ' يساوي آخر صف في العمود رقم 1 ' وبذلك تم تحديد العمود الاول للعثور علي اول سطر فارغ فيه iRow = ws.Cells(Rows.Count, 1) _ .End(xlUp).Offset(1, 0).Row '================================================ 'سنقوم في السطور التاليه بوضع اكواد التسجيل او الترحيل 'وذلك بعد تحديد صفحة التسجيل وعمود البداية وتحديد او سطر فارغ فيه '================================================ 'ولترحيل البيانات نستخدم الاسطر التاليه 'وسنقوم بشرح السطر الاول والثاني فقط والباقي مثلهما تماماً '================================================ ws.Cells(iRow, 1).Value = Me.TextBox1.Value ' السطر السابق مقسم الي عدة اوامر وهي كالتالي ' ws اختيار صفحة الترحيل والتي تم اختيارها في بداية الكود 'Cells(iRow, 1).Value هذا الجزء معناه ان قيمة الخليه رقم 1 في الصف الفارغ ' الذي يتم تحديده عن طريق الكود وفي العمود المختار تساوي 'Me.TextBox1.Value هذا الجزء من السطر يعني ان قيمة الخليه رقم 1 كما سبق تساوي 'Me قيمة تكس بوكس رقم 1 في الفورم المستخدم وكلمة 'تعني هنا اليوزفورم المستخدم ws.Cells(iRow, 2).Value = Me.TextBox2.Value ' السطر السابق مقسم الي عدة اوامر وهي كالتالي ' ws اختيار صفحة الترحيل والتي تم اختيارها في بداية الكود 'Cells(iRow, 2).Value هذا الجزء معناه ان قيمة الخليه رقم 2 في الصف الفارغ ' الذي يتم تحديده عن طريق الكود وفي العمود المختار تساوي 'Me.TextBox2.Value هذا الجزء من السطر يعني ان قيمة الخليه رقم 2 كما سبق تساوي 'Me قيمة تكس بوكس رقم 2 في الفورم المستخدم وكلمة 'تعني هنا اليوزفورم المستخدم '================================================ 'وينطبق ذلك علي السطور التاليه مع تحديد الخليه المراد الترحيل لها ' قيمة التكست بوكس المطلوب في الفورم '================================================ ws.Cells(iRow, 3).Value = Me.TextBox3.Value ws.Cells(iRow, 4).Value = Me.TextBox4.Value ws.Cells(iRow, 5).Value = Me.TextBox5.Value ws.Cells(iRow, 6).Value = Me.TextBox6.Value ws.Cells(iRow, 7).Value = Me.TextBox7.Value ws.Cells(iRow, 8).Value = Me.TextBox8.Value '================================================ 'وبهذا تكون قد لنتهت عملية الترحيل حسب عدد التكستات الموجودة في الفورم ' والمطلوب تسجيلها او ترحيلها '================================================ ' ولتسجيل بيانات مرة اخري علي نفس الفورم وهو مفتوح نضع بعض الاسطر البسيطة 'لمسح البيانات القديمة من على الفورم بعد الترحيل للتجهيز لإدخال بيانات جديدة ' كما يلي '================================================ 'ولمسح البيانات القديمة نستخدم الاسطر التاليه 'وسنقوم بشرح السطر الاول فقط والباقي مثله تماماً '================================================ Me.TextBox1.Value = "" ' السطر السابق معناه ان يجعل قيمة التكست بوكس 1 تساوي لاشئ 'Me كلمه ' تعني الفورم نفسه المستخدم في التسجيل والترحيل كما سبق ذكره 'TextBox1.Value وهذا الجزء يعنس قيمة التكست بوكس 1 ' = "" وهذا الجزء يعني ان قيمة التكست بوكس 1 تساوي لاشئ ' حيث ان علامتي التنصيص تعني فراغ او لا شئ '================================================ 'وينطبق ذلك علي السطور التاليه مع تحديد التكست بوكس المراد مسح البيانات الموجوة به ' وما هنا في مثالنا كالتالي '================================================ Me.TextBox2.Value = "" Me.TextBox3.Value = "" Me.TextBox4.Value = "" Me.TextBox5.Value = "" Me.TextBox6.Value = "" Me.TextBox7.Value = "" Me.TextBox8.Value = "" '================================================ 'وبعد مسح البيانات نقوم بوضع جزء بسيط لتحديد التكست بوكس المراد بداية التسجيل منه ' وذلك بوضع مؤشر الكتابه في التكست بوكس المراد الادخال منه '================================================ 'ويتم ذلك عن طريق السطر التالي ' وفيه نحدد ان التكست بوكس 1 هو اساس بداية الادخال بعد مسح البيانات Me.TextBox1.SetFocus ' السطر التالي هو اقفال الكود ونهاية مهمة الزر المحدد 'والمستخدم لعملية التسجيل او الترحيل End Sub Private Sub CommandButton2_Click() End End Sub Private Sub UserForm_Click() End Sub
  13. مع أني لم أفهم ما الداعي لذلك ما دام التعديل والاضافة متاحة للمستخدم فبإمكانه عمل ما يشاء ولكن نظرا لآنك أخي عضو جديد أحببت اهداءك المرفق مبدأيا المرفق متاح به الاضافة فقط اطلع عليه وأخبرني النتيجة حصر البطاقات.rar
  14. أعتذر أخي عن التأخير ! وأعتذر مرة أخرى على المرفق فقد كان لمشاركة أخرى !! أنت عندك أربعة أعمدة : الاسم رقم الهوية رقم البطاقة تاريخ الانتهاء يجب ادخال التاريخ بالميلادي ما الذي تريده متاح للمستخدم التعديل عليه ؟ وهل هناك عمود ثابت لا يتغير ؟ نرجو التوضيح بعض الشئ أخي حتى نسطيع المساعدة
  15. 'بعد إذن أخي أبو حنين ، قم بكتابة هذا في بداية الكود If Me.textbox1.Value = "" Then MsgBox "ضع الرسالة التي تريد ", vbOKOnly, "خطأ" textbox1.SetFocus ElseIf Me.TextBox2.Value = "" Then MsgBox "ضع الرسالة التي تريد ", vbOKOnly, "خطأ" TextBox2.SetFocus ElseIf Me.TextBox3.Value = "" Then MsgBox "ضع الرسالة التي تريد ", vbOKOnly, "خطأ" TextBox3.SetFocus Else
  16. ضع هذه المعادلة في الخلية e3 واسحب لأسفل (LEFT(D3;6)/1000)
  17. عفوا لم أفهم المطلوب جيدا ! هل سيتم عمل اكسيل رئيسي وآخر فرعي يتم التعديل على بعض البيانات أم منع الحذف نهائيا من الاكسيل ؟ يرجى شرح طلبك باستفاضة وحبذا لو أعطيتنا مثال مشروح على الاكسيل عما تريد بالتفصيل حتى نسطيع المساعدة
  18. كنت قرأت من فترة عن صلاحية التعديل على ملف اكسيل وأنه محدود بعدد معين من الادخال ثم بعد ذلك تتوقف المعادلات عن العمل ، وأذكر أنها قد حدثت معي مرة أو مرتين ... لذلك كل فترة أعمل استبدال للملف القديم بنسخة جديدة ! وبانتظار ردود باقي الإخوة ....
  19. الحل بسيط للغاية إلا أن يكون ما فهمته خطأ !! الحل وضع معادلة طرح بين التاريخين فقط .. التاريخ الأساسي-التاريخ المطلوب
×
×
  • اضف...

Important Information