أبو وليد قام بنشر يناير 12, 2015 قام بنشر يناير 12, 2015 Private Sub Worksheet_Calculate() Dim c As Range Application.EnableEvents = False On Error Resume Next For Each c In Range("J7:J" & Cells(Rows.Count, "J").End(xlUp).Row) If c = "DDD" Then c.Offset(, 1).Value = "NNN" If c.Offset(, 2) = "" Then c.Offset(, 2).Value = c.Offset(, -4).Value c.Offset(, 25).Value = c.Offset(, -8).Value c.Offset(, 26).Value = c.Offset(, -7).Value c.Offset(, 27).Value = c.Offset(, -6).Formula c.Offset(, 28).Value = c.Offset(, 2).Value c.Offset(, 30).Value = c.Offset(, 1).Value c.Offset(, 31).Value = c.Offset(, 41).Value c.Offset(, 29).Value = c.Offset(, 40).Formula End If End If Next c Application.EnableEvents = True End Sub السلام عليكم مساء الخير ممكن شرح لهذا الكود
ibn_egypt قام بنشر يناير 12, 2015 قام بنشر يناير 12, 2015 Private Sub Worksheet_Calculate() تعريف المتغير C كنطاق Dim c As Range تعطيل EnableEvent لتسريع العملية ولتعطيل ال Event Handler وهو مفيد في الحلقات التكرارية والتى بها عمليات حسابية وتغير في البيانات Application.EnableEvents = False عند عند ظهور خطأ استمر في الكود On Error Resume Next لكل خلية في النطاق من J7 والى اخر صف به بيانات For Each c In Range("J7:J" & Cells(Rows.Count, "J").End(xlUp).Row) لو قيمة الخلية تساوي DDD If c = "DDD" Then جعل قيمة الخلية في العمود الذي يليها اى K تساوي NNN c.Offset(, 1).Value = "NNN" لو القيمة بعد عمودين من الخلية التى نحن فيها .. اى لو اننا في J7 فلو L7 فارغة If c.Offset(, 2) = "" Then جعل قيمة الخلية بعد عمودين .. تساوي قيمة الخلية قبل اربع اعمدة من الخلية التى نحن بها فلو اننا في J7 فان قيمة L7 تساوي قيمة F7 c.Offset(, 2).Value = c.Offset(, -4).Value وهكذا بقي في باقي الاسطر القادمة الخلية اللى انت واقف عليها لو هترجع عمود منها يبقي -1 عمودين -2 هتطلع لقدام عمود يبقي بالموجب 1 لو عمودين يبقي 2 .. الصورة المرفقة ستوضح الأمر c.Offset(, 25).Value = c.Offset(, -8).Value c.Offset(, 26).Value = c.Offset(, -7).Value هنا لا يساوي القيم ولكن يجعل قيمة الخلية مساوية للمعادلة الموجودة c.Offset(, 27).Value = c.Offset(, -6).Formula c.Offset(, 28).Value = c.Offset(, 2).Value c.Offset(, 30).Value = c.Offset(, 1).Value c.Offset(, 31).Value = c.Offset(, 41).Value c.Offset(, 29).Value = c.Offset(, 40).Formula End If End If Next c بعد ان تنتهي الحلقة التكرارية تفعيل ال Events مرة أخى Application.EnableEvents = True End Sub السلام عليكم مساء الخير ممكن شرح لهذا الكود الصورة الموضحة تحياتي
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.