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

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

قام بنشر

السلام عليكم

تفضل أخي الملف وبه ماطلبت

الأخ الحبيب والأستاذ الكبير والعالم الذي أتعلم منه دائما

لا يسعني إلا أن أنحني أمامك تقديرا لك

عمل رائع كعادتك دائما مبدع يا باشمهندس

قام بنشر

السلام عليكم

ممكن لو سمحت شرح الكود ان امكن
وبالاخص
 n = LR - 17
 nr + n - 1

 

 

أخي العزيز

السطر التالي من الكود يتم تنفيذه أثناء تنشيط الورقة الأولي "فاتورة بيع"

    Dt = [J12]: BillN = [F14]: Tr_C = [J14]: Clnt = [J15]: n = LR - 17
وهو عبارة عن 5 أوامر مجتمعة يكافيء التالي
   Dt = [J12]
 BillN = [F14]
 Tr_C = [J14]
 Clnt = [J15]
 n = LR - 17

وكل جزء يأخذ قيمة من الورقة ويسجلها لنقلها فيما بعد للورقتين التاليتين
أما الجزء n = LR - 17 بالتحديد فهو يعتمد علي أن أول بيانات مكتوبة بالورقة ستكون بالصف 18 
فإذا لم يكتب بالفاتورة غير صنف واحد فيكون آخر صف LR = 18 وستأخذ  القيمة n = 18 - 17 =1 وهكذا

فالمتغير n يعبر عن عدد الأسطر في الفاتورة

=======================


الشق الثاني
nr + n - 1

وهذا يحدث في الورقتين الأخريتين بعد أن تكون نسخت البيانات وسجلتها كما سبق

ولفهم هذه الجزئية لترجع قليلا في الكود ستجد الأوامر كالتالي

nr = [F9999].End(xlUp).Row + 1

أي أن nr سيأخذ قيمة رقم الصف الجديد الجاهز للبيانات في تلك الورقات new row

وعند الخلية التي بهذا السطر الجديد وتكون بالعمود F يتم لصق قيم لماسبق نسخه

        Cells(nr, "F").PasteSpecial Paste:=xlPasteValues
 
ثم بفرض أن عدد أسطر الفاتورة التي يتم نقلها 3
إذن الصيغة التالي
        Range("E" & nr & ":E" & nr + n - 1) = Clnt
تضع قيمة العميل Clnt في الأسطر الثلاثة بالعمود E والتي تبدأ من الصف الجديد الجاهز للبيانات 
مثلا إذا آخر الصف الجديد الجاهز للبيانات =20 وعدد أسطر الفاتورة التي يتم نقلها = 3
إذن        Range("E" & nr & ":E" & nr + n - 1) = Clnt
تعني         Range("E" & 20 & ":E" & 20 + 3 - 1) = Clnt
أي    Range("E20:E22") = Clnt
  • 2 months later...
قام بنشر

الاستاذ الفاضل طارق محمود
 
اعذرنى أن كنت تأخرت فى المشاركة والتفاعل لأنى مبتدأ فى تحرير الاكواد
ويرجع الفضل للاخ الفاضل الصـقر  فى تشجيعى وتبسيط الامر لى
لكنى الان حاولت دراسة وفهم - الكود اللى حضرتك كتبته  لكن الجزئية دى ممكن حضرتك توضحها لى

 

      For Each cl In Range("B" & nr & ":B" & nr + n - 1)
            cl.Value = cl.Offset(-1, 0).Value + 1

 

تقبل تحياتى

قام بنشر
ويرجع الفضل للاخ الفاضل الصـقر  فى تشجيعى وتبسيط الامر لى
لكنى الان حاولت دراسة وفهم - الكود اللى حضرتك كتبته  لكن الجزئية دى ممكن حضرتك توضحها لى
 
      For Each cl In Range("B" & nr & ":B" & nr + n - 1)
            cl.Value = cl.Offset(-1, 0).Value + 1
 

 

 

السلام عليكم

أخي الكريم

أهلا بك ومرحبا دائما

والشكر موصول لأخونا الغالي / الصـقر  ، جزاه الله خيرا وجعل جهده في ميزان حسناته

================

أخي الكريم
مرة أخري لفهم هذه الجزئية ترجع قليلا في الكود ستجد الأوامر كالتالي
nr = [F9999].End(xlUp).Row + 1
أي أن nr سيأخذ قيمة رقم الصف الجديد الجاهز للبيانات في تلك الورقات new row
وأيضا كما سبق ، الجزء n = LR - 17 يعتمد علي أن أول بيانات مكتوبة بالورقة ستكون بالصف 18 
علي أساس أن LR = Last Row
 
ولفهم الجزء الذي تسأل عنه ، نفرض أن آخر سطر به بيانات منقولة في تلك الورقة مثلا السطر رقم 25
أي أن nr سيأخذ قيمة رقم 25+1 = 26 مثلا
و n مثلا =7
إذن
For Each cl In Range("B" & nr & ":B" & nr + n - 1)
تكون
For Each cl In Range("B" & 26 & ":B" & 26 + 7 - 1)
أي
For Each cl In Range("B26:B32)
تكون معناها أن إفعل التالي لكل عنصر من عناصر من خلايا النطاق B26:B32     (العنصر هنا هو cl أي الخلية )
والتالي المقصود هو
cl.Value قيمة الخلية = cl.Offset(-1, 0).Value قيمة الخلية التي تسبقها في العمود وفي نفس صفها + 1
كل خلية تجعل قيمتها تساوي قيمة الخلية التي تعلوها في نفس العمود وتزيد عليها 1

طبعا أنت تعرف ان الدالة Offset تحرك المؤشر من الخلية cl إلي تلك التي تبعد عنها بمقدار صف واحد للأعلي -1 وفي نفس العمود 0 

يعني في مثالنا هذا 

B26 سوف تساوي B25+1

و B27 سوف تساوي B26+1

و B28 سوف تساوي B27+1

وهكذا حتي B32

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