اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
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