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

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information