اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر
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

السلام عليكم

 

مساء الخير

 

ممكن شرح لهذا الكود

 

 

قام بنشر
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

السلام عليكم

 

مساء الخير

 

ممكن شرح لهذا الكود

 

 

الصورة الموضحة

 

NbKXlK.jpg

تحياتي :fff: 

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information