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

ابو تراب

الخبراء
  • Posts

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

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

  • Days Won

    5

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

  1. وعليكم السلام هلا بالغالي ابو حنين اذا كنت تريد التاريخ فقط فقد غيرت لك المعادلة بحيث يسهل لك وضع عدد الاشهر بسهولة دون الحاجة لتحويل الى سنوات مرفق ملف مع التوضيح Book3.zip
  2. بالمناسبة اذا اردت المحافظة على التنسيق الحالي اي 2015/01/19 بدلا عن 19/01/2015 فيمكنك استخدام المعادلة التالية =1*VALUE(TRIM(RIGHT(B4,LEN(B4)-SEARCH("/",B4)+5))+DATE(2,1,0))
  3. اها هنا اتحمل فرجت عليا من وسع بحلين :D الفكره اللى اشتغلت بيها ممتاززززه الهمتنى فى شغل تانى كنت عايز اعمله بس اعتقد ان داله ا-جمال صريحه على الشغل بتاعى دا مشكووور جدااا على الفكره اللى ضيفتهالى :) اسعدني انك استفدت من الفكرة .. بالطبع معادلة الاستاذ جمال مختصرة و انيقة و صحيحة على كلا و اثراء للموضوع هذا حل اخر بأستخدام IF الشرطية 777.zip
  4. جميل ان نحاول هذه محاولة اخرى تفضل عذرا حذفت الملف و اعدت رفعه بعد اكتشاف خطأ .. 111.zip
  5. اهلا استاذ عبدالله لم انتبه انك قد رددت على الموضوع تحياتي لك
  6. جرب المرفق لمزيد من المعلومات راجع الرابط التالي http://www.officena.net/ib/index.php?showtopic=57295 الملف.zip الملف.zip
  7. هلا بالغالي ابو حنين .. الفضل يعود للاستاذ بن علية حاجي و الاستاذ طارق محمود ... انا لم افعل شيئا هذه محاولة للشرح
  8. ماشاء الله تبارك الله اعجبتني المعادلة فعلا قمت فقط باضافة بسيطة جدا الا وهى الدالة Trim وذلك لتجاوز الخطأ من وجود الفراغ و ذلك في حالة وجود تاريخ ليوم بين 1 الى 9 مثلا: ahmed.moh 8/1/2015 1:09 PM =1*VALUE(TRIM(RIGHT(B3,LEN(B3)-SEARCH("/",B3)+3))+DATE(2,1,0))
  9. اهلين و سهلين بالاستاذ الغالي ابو حنين .. افرحنا مرورك الكريم لك منا كل الود
  10. هلا و غلا بالاستاذ ابن مصر .. اسعنا مرورك الكريم و كلمات المشجعة تقبل تحياتي
  11. هههههههههههههههه ... هلا بالاستاذ الفاضل الصقر اسعد الله ايامك كما سعدتنا بمرورك الجميل تقبل تحياتي
  12. الاستاذ ياسر سعيد بمرورك العطر و اهتمامك بالموضوع الفرق الاساسي بين القيمتين هو التاريخ..ف ال Value تعيد تاريخ منسق بينما ال value2 تعيد قيمة .. بالاضافة ان سرعة التنفيذ لصالح ال Value2 مثال على اختبار الفرق بين ال Value و Value2 في محرر الاكواد Sub test() Debug.Print Range("B5") '= 17/01/2015 20:44:09 Debug.Print Range("B5").Value '= 17/01/2015 20:44:09 Debug.Print Range("B5").Value2 '= 42021.8639923611 End Sub ارفقت الجدول للتجريب عليه تحياتي Text Value and Value2.zip
  13. الاستاذة ايناس .. شاكرا لك مرورك الكريم و كلماتك الطيبة
  14. السلام عليكم ورحمة الله وبركاته اعضاء منتدانا الافاضل في الصورة ادناه محاولة اظهار الفروقات بين Text و Value و كذلك Value2. الصورة ايضا مرفقة عند التعامل مع اكواد ال VBA غالبا ما يتبادر للذهن عن الفرق بين Value و ال Text و من ثم تزداد الحيرة عند اكتشاف Value2. لهذا فان التحليل البسيط اعلاه يوضح الفروقات بينها. ملاحظة: ===== - يمكن القول ان ال Value2 هى التي تحمل القيمة الفعلية للخلية ... ولهذا ينصح التعامل معها فهى اكثر امانا و اسرع في التنفيذ مقارنها ب Value و Text - بالنسبة لقيمة التاريخ فأن كلا القيمتين لـ Value2 متساوية. اذا اردت التاكد فيمكنك وضع المؤسر على الخلية و قراءة الرقم كاملا من شريط المعادلات. - الـ Text فهى بأختصار تظهر قيمة الخلية منسقة formatted فمثلا يمكن ان تظهرها بتنسيق نسبة، تاريخ، رقم، عملة، تنسيق خاص بك ... الخ. - الـ Textمهمة في الVBAوذلك للحصول على قيمة منسقة يمكن التعامل بها بطريقة التي تناسبك . - الا انه وجب التنبية على احد عيوب ال Text هو امكانية الحصول على قيمة #### في حالة ان عرض العمود ليس كافيا. احد الحلول هو استخدام الاجراء AutoFit الخاصة بالعمود. - ال Value هى نفس ال Value2 الا انها تختلف عنها في قيم التاريخ حيث تظهر التاريخ منسقا عند التعامل مع ال VBA وتختلف ايضا في قيم التاريخ و العملة و بيدو لي النسبة ايضا عند ارجاع القيم الى الااكسل حيث تظهر منسقه ايضا. اسال الله تعالى ان يتقبل منى ومنكم صالح الاعمال
  15. ما شاء الله تبارك الله ولا قوة الا بالله جزاك الله خيرا استاذ الجموعي على العمل الاكثر من رائع... colors give life flavor
  16. هلا يمكنك وضعه في مديول جديدة بالمناسبة يمكنك استخدام الكود التالي فهو يطابق الدالة التي وضعتها #If Win64 Then Public Declare PtrSafe Function sndPlaySound _ Lib "winmm.dll" Alias "sndPlaySoundA" ( _ ByVal lpszSoundName As String, _ ByVal uFlags As Long) As Long #Else Public Declare Function sndPlaySound32 _ Lib "winmm.dll" Alias "sndPlaySoundA" ( _ ByVal lpszSoundName As String, _ ByVal uFlags As Long) As Long #End If
  17. استبدله بالكود التالي: #If VBA7 And Win64 Then Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _ Alias "PlaySoundA" (ByVal lpszName As String, _ ByVal hModule As LongPtr, ByVal dwFlags As LongPtr) As LongPtr #Else Private Declare Function PlaySound Lib "winmm.dll" _ Alias "PlaySoundA" (ByVal lpszName As String, _ ByVal hModule As Long, ByVal dwFlags As Long) As Long #End If
  18. وعليكم السلام بالإضافة الى ان كلا الامتدادين يمكن عن طريقهم تشغيل الماكر الا ان الفرق في الحجم و سرعة التنفيذ يصب لصالح xlsb .. اما من ناحية تركيبة الملفين فكلاهما ملفات zip و عند تغيير الامتداد الى zip يمكنك ملاحظة ان ملف xlsm يحتوي على مجموعة من ملفات XML بينما الامتداد xlsb لدية مجموعة من ملفات bin والسؤال البديهي هو لماذا نحتاج لمفات xlsm اذا كانت ملفات xlsb لديها ميزتي الحجم و السرعة الجواب على حسب علمي هو ان ملفات xlsm لديها القدرة على تبادل البيانات مع البرامج التي تستخدم ال xml كواسطة نقل البانات من و الى البرامج الاخرى... مثلا برامج خدمات الوب web services و برامج الجوالات و ربما حتى بعض المكتبات الخارجية يمكن ان تستخدم ملفات xml لنقل البيانات . في النهاية ما اره هو انك اذا كان الحجم و السرعة مهمة جدا و انت تريد برنامج للاكسل فقط فيمكنك استخدام ملفات xlsb اما اذا اردت ملف الاكسل ان يكن اكثر انفتاحا على البرامج الاخرى و خصوصا البرامج التي تحتاج ل xml فخيار الامتداد xlsm هو الامثل والاريح
  19. الاستاذ الفاضل ياسر البنا بالاضافة ما تفضل به الاستاذ ياسر هذا شرح لاحتساب الفرق بين تاريخين ... و لتحديد يوم الجمعة فقط يمكنك اختيار الرقم 16 بدلا عن الرقم 7 لمزيد من التوضيح راجع المشاركة رقم 24 http://www.officena.net/ib/index.php?showtopic=57923&page=2#entry371785
  20. هلا بالاستاذ ياسر اعتقد السبب هو عبارة Application.ScreenUpdating ...الكود ينفذ بسرعة و يمكن الاستغناء عنها و خصوصا ان القائمة ليست كبيرة .. الغائها سينهي ال flickering في الشاشة تحياتي
  21. ما شاء الله عليك استاذ ياسر حلول القائمة المنسدلة المتناقصة لقدمتها ممتازة و الحل بالكود اروع فكرة استخدامك لـل Evaluate ذكية فعلا على كلا لاثراء الموضوع فقط هذه محاولة لتوليد القائمة ايضا بدون حلقات التكرر مستفيدا من فكرة استخدام Evaluate...حاولت جعلها عامة قدر الاستطاعة مرفق ملف لتجريب Option Explicit Const Main_SHEET As String = "Main" Const LISTS_SHEET As String = "Lists" Sub CreateDecreasingValidationList(List As Range, ValidationList As Range) Dim ListValues As String Dim FirstCell As String Dim ValidationAddress As String ' احصل على عنوان الخلية الاولى في القائمة FirstCell = Replace(List(1, 1).Address, "$", "") ' احصل على المسار الكلي لعنوان للشيت الرئيسية ValidationAddress = "'" & ValidationList.Worksheet.Name & "'!" & ValidationList.Address Application.ScreenUpdating = False ' استخدم العمود التالي لعمود القائمة لاجراء الاختبار With List.Offset(, 1) ' حدث معادلة مدى البحث .Formula = "=IF(ISNA(VLOOKUP(" & FirstCell & "," & ValidationAddress & ",1,FALSE))," & FirstCell & ","""")" ' هنا نحول قيمة الخلاياء من معادلات الى قيم فقط .Value = .Value ' احصل على القيم و افصل كل قيمة بفاصلة منقوطة ListValues = Join(Application.Transpose(.Value), ",") ' حدث قائمة التقييم On Error Resume Next With ValidationList.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=ListValues End With ' احذف قيم الاختبار .ClearContents End With Application.ScreenUpdating = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count = 1 And Not Intersect(Target, Range("A2:A16")) Is Nothing Then CreateDecreasingValidationList Sheets(LISTS_SHEET).Range("A2:A16"), Sheets(Main_SHEET).Range("A2:A16") End If End Sub Decreasing Validation List.zip
  22. وعليكم السلام بعد اذن الاستاذ سليم هذه محاولة اخرة test2.zip
  23. حياك الله اخي الغالي الاستاذ KHMB و شكر الله لك على كلماتك المشجعة و متابعتك ما نقدمه لاشئ مما يقدم من اساتذتنا الافاضل والاعضاء الكرام نسال الله من لا تطيب الدنيا الا بذكره القبول لنا و لكم و جميع المسلمين وصلى الله على سيدنا محمد قرة اعيينا و رضي الله عن ساداتنا ابوبكر و عمر و عثمان و علي كرم الله وجهه
×
×
  • اضف...

Important Information