ehabaf2 قام بنشر مارس 14 قام بنشر مارس 14 السلام عليكم الاخوة الفاضل كل عام وحضراتكم و الاسرة بالف خير و صحة و سعادة رمضان كريم محتاج كود VBA عند تعديل ما تم كتابته فى الخلية يتم تلوين الخلية باللون الاسود و النص باللون الابيض يعنى اذا كتبت اي حاجة في الخلية ثم قمت بالتعديل على ما تم كتابته يتم تلوين الخلية علشان اعرف ان الخلية ديه تم التعديل على محتواها و هل ممكن بعد كده الغى الفورمات ديه بس بكلمة سر يعني محدش يعرف يلغيها غيرى الف الف شكر لحضراتكم و كل عام و حضراتكم بالف بخير وصحة و سعادة
abouelhassan قام بنشر مارس 14 قام بنشر مارس 14 جرب اخى الكريم Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target If Not Intersect(cell, Me.UsedRange) Is Nothing Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color End If Next cell End Sub كل عام وانتم بخير وصحه وسلامه 1
ehabaf2 قام بنشر مارس 14 الكاتب قام بنشر مارس 14 السلام عليكم استاذنا الفاضلabouelhassan الف الف شكر لمجهود حضرتك بس فى تعديل انا عاوز الخلية تتلون لما اجي اعدل فيها يعني اكتب اول مرة عادى متتلونش اما لو عدلت تتلون الخلية الف الف شكر لحضرتك و كل سنة وحضرتك و الاسرة الكريمة بالف خير و سعادة
abouelhassan قام بنشر مارس 14 قام بنشر مارس 14 تفضل أن شاء الله طلبك Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target If Not Intersect(cell, Me.UsedRange) Is Nothing Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color End If Next cell End Sub
abouelhassan قام بنشر مارس 14 قام بنشر مارس 14 2 ساعات مضت, بلانك said: هو نفس الكود السابق اسف رمضان كريم Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target If Not Intersect(cell, Me.UsedRange) Is Nothing Then If cell.Value <> "" Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color End If End If Next cell End Sub 1
بلانك قام بنشر مارس 14 قام بنشر مارس 14 اسف على الطلب مرة اخري ولكن احول اوضح لحضرتك ماذا اريد .. عند وضع اي قيمة في اي خلية لاتتغير لون الخلفية ولا الخط في اول مرة وعند حفظ الملف وتغير اي خلية بها بيانات تتحول الى اللون الاسود والخط الابيض اما الخلايا التي لمتتغير قيمتها تبقى كما هي ..... ( ملوحظة فكرة Track Changes )
ehabaf2 قام بنشر مارس 14 الكاتب قام بنشر مارس 14 استاذنا الفاضل abouelhassan رمضان كريم و الف شكر على مجهود حضرتك للتوضيح المطلوب عند وضع اي قيمة في اي خلية لاتتغير لون الخلفية ولا الخط في اول مرة وعند حفظ الملف وتغير اي خلية بها بيانات تتحول الى اللون الاسود والخط الابيض اما الخلايا التي لم تتغير قيمتها تبقى كما هي الكود اللى حضرتك كتبته الخلية تتغير لونها مع اول مرة بكتب فيها و اكرر الف شكر لمجهو حضرتك 1
abouelhassan قام بنشر مارس 14 قام بنشر مارس 14 فهمت ان شاء الله يكون طلبك Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target If Not Intersect(cell, Me.UsedRange) Is Nothing Then If cell.Value <> cell.Text Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color End If End If Next cell End Sub
بلانك قام بنشر مارس 15 قام بنشر مارس 15 اسف للمرة المليون على تعب حضرتك لم يصل للحل المطلوب الكود المطلوب نفس بل هو الموجود في تبويب ( Reviwe >>>> Track Changes ) تعقب التغييرات في ملف الاكسل إنظر للصورة
abouelhassan قام بنشر مارس 15 قام بنشر مارس 15 اسف اخى ممكن تجرب هذا الكود أن شاء الله يضبط Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim rng As Range Set rng = Me.Range("E:H,J:K") For Each cell In Target If Not Intersect(cell, rng) Is Nothing Then If cell.Value <> cell.Text Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color Else cell.Interior.ColorIndex = xlNone ' No color cell.Font.ColorIndex = xlAutomatic ' Automatic font color End If End If Next cell End Sub للاختبار اخى الكريم هذا الكود يقوم بتحديد نطاق الخلايا المراد مراقبتها (E:H و J:K)، وعند تغيير أي قيمة في هذه الخلايا، يتم تغيير لون الخلفية إلى الأسود ولون النص إلى الأبيض. إذا لم يحدث أي تغيير في القيمة، ستظل الخلية كما هي. ويمكنك تعديل النطاق كما تحب إذا نجح الكود تحياتي
بلانك قام بنشر مارس 16 قام بنشر مارس 16 اخي العزيز abouelhassan اريد من الكود ان لا يعمل والخلايا فارغة ولكن عند وضع قيم او نص والحفظ وغلق الملف ثم عند فتحة وتغير اي قيمة او تص يبدا بتغير الخلية باللون الاسود مع الخط الابيض كما ذكرت ( الفكرة معرفة من دخل للملف وغير من قيم الخلايا سواء نص او ارقام) ارجو باني قد وضحت الفكرة !!!!!!!!!
abouelhassan قام بنشر مارس 16 قام بنشر مارس 16 سامحنى اخى احاول المساعدة قدر الامكان والله جرب هذا الكود يستخدم مجموعة من الخلايا لتخزين حالتها قبل وبعد التغييرات. عند فتح الملف، يتم تسجيل قيم الخلايا غير الفارغة. عندما تُغلق الملف، يتم مسح حالة الخلايا. وعند تغيير القيم في الخلايا، يتم التحقق مما إذا كانت القيمة الجديدة غير فارغة ومختلفة عن القيمة السابقة، حيث يتم تغيير لون الخلفية إلى الأسود ولون النص إلى الأبيض وتحديث حالة الخلية Dim cellState As New Collection Private Sub Workbook_Open() Dim ws As Worksheet Dim cell As Range For Each ws In ThisWorkbook.Worksheets For Each cell In ws.UsedRange If Not IsEmpty(cell.Value) Then cellState.Add cell.Value, cell.Address End If Next cell Next ws End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) cellState.Clear End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target If Not Intersect(cell, Me.UsedRange) Is Nothing Then If Not IsEmpty(cell.Value) And cell.Value <> cell.Text Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color If cellState.Contains(cell.Address) Then cellState.Remove cell.Address End If cellState.Add cell.Text, cell.Address End If End If Next cell End Sub
بلانك قام بنشر مارس 16 قام بنشر مارس 16 وضعت هذا الكود في حدث الملف يعطي خطأ ووضعته في حدث الورقة يعطي خطأ اخر وعند وضع قيم كنص بالخلابا لايعمل كود عمل فورمات للخلية عند التعديل.xlsm
abouelhassan قام بنشر مارس 16 قام بنشر مارس 16 (معدل) يبدو أن هناك خلط في الاستخدام. يجب وضع الكود في وحدة VBA للمصنف (Module) بدلاً من وضعه في حدث الملف أو حدث الورقة. قم باتباع الخطوات التالية: 1. افتح المصنف واذهب إلى عارض المشروع (عن طريق الضغط على ALT + F11). 2. في عارض المشروع، انقر بزر الماوس الأيمن على أحد الأوراق في الجزء الأيسر، ثم اختر "Insert" > "Module" لإضافة وحدة جديدة. 3. انسخ والصق الكود في الوحدة الجديدة. 4. أغلق نافذة VBA واحفظ التغييرات. 5. أعد فتح الملف وجرب تغيير قيم في الخلايا لرؤية التأثير. تم تعديل مارس 16 بواسطه abouelhassan
abouelhassan قام بنشر مارس 16 قام بنشر مارس 16 الكود يعمل عندى اخى وللتأكيد جرب التحديث Dim cellState As New Collection Private Sub Workbook_Open() Dim ws As Worksheet Dim cell As Range For Each ws In ThisWorkbook.Worksheets For Each cell In ws.UsedRange If Not IsEmpty(cell.Value) Then cellState.Add cell.Value, cell.Address End If Next cell Next ws End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) cellState.Clear End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim cell As Range For Each cell In Target If Not Intersect(cell, Sh.UsedRange) Is Nothing Then If Not IsEmpty(cell.Value) And cell.Value <> cell.Text Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color If cellState.Contains(cell.Address) Then cellState.Remove cell.Address End If cellState.Add cell.Text, cell.Address End If End If Next cell End Sub أعتذر عن ذلك. دعوني أوضح الكود بشكل أدق. يمكنك استخدام هذا الكوديرجى وضع هذا الكود في وحدة VBA جديدة كما ذكرت سابقًا، ثم قم بحفظ الملف وأعد فتحه وجرب تغيير القيم في الخلايا. إذا لم يعمل، فقد يكون هناك مشكلة في الإعدادات الخاصة بالملف. يمكنك محاولة إعادة الكود بعد حفظ الملف باسم جديد وفتحه للتحقق من عمل الكود.
بلانك قام بنشر مارس 17 قام بنشر مارس 17 abouelhassan للاسف لم يعمل عندي علما الويندوز عندي 10 والاوفيس 2010 ولا اعرف السبب وعلى العموم انا بشكرك على تعبك معي ورمضان كريم 1
abouelhassan قام بنشر مارس 17 قام بنشر مارس 17 ان شاء الله هيعمل على office 2010 Dim cellState As New Collection Private Sub Workbook_Open() Dim ws As Worksheet Dim cell As Range For Each ws In ThisWorkbook.Worksheets For Each cell In ws.UsedRange If Not IsEmpty(cell.Value) Then cellState.Add cell.Value, cell.Address End If Next cell Next ws End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) cellState.Clear End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim ws As Worksheet Set ws = Target.Worksheet For Each cell In Target If Not Intersect(cell, ws.UsedRange) Is Nothing Then If Not IsEmpty(cell.Value) And cell.Value <> cell.Text Then cell.Interior.Color = RGB(0, 0, 0) ' Black color cell.Font.Color = RGB(255, 255, 255) ' White color If cellState.Contains(cell.Address) Then cellState.Remove cell.Address End If cellState.Add cell.Text, cell.Address End If End If Next cell End Sub 1
بلانك قام بنشر مارس 17 قام بنشر مارس 17 abouelhassan برجاء مني لا تتعبك نفسك وشكرا جزيلا على تعبك . العيب قد يكون من نسخة الاوفيس وفقك الله
أفضل إجابة حسونة حسين قام بنشر مارس 17 أفضل إجابة قام بنشر مارس 17 وعليكم السلام ورحمه الله وبركاته جرب هذا التعديل كود عمل فورمات للخلية عند التعديل.xlsm 2 1 1
بلانك قام بنشر مارس 18 قام بنشر مارس 18 حسونة حسين جزاك الله خيرا بالفعل هذا هو المطلوب والكود عمل معي ورمضان كريم عليك والشكر موصول للاخ abouelhassan غلى تعبه معي 2
ehabaf2 قام بنشر مارس 19 الكاتب قام بنشر مارس 19 السلام عليكم استاذنا الفاضل abouelhassan الف الف شكر لتعب حضرتك و مجهودك ربنا يجعله فى ميزان حسناتك السلام عليكم استاذنا الفاضل حسونة حسين الف الف شكر لتعب حضرتك و مجهودك الكود يعمل بكفاءة و ينفذ المطلوب ربنا يحفظك و يعزك ويبارك فيك 1 1
بلانك قام بنشر مارس 22 قام بنشر مارس 22 هل اطمع في كرم الاستاذ حسونه في تكملة الكود لمعرفة قيمة الخلية القديمة؟؟؟
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.