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

طلب تحويل معادلات إلى كود vb


إذهب إلى أفضل إجابة Solved by AbuuAhmed,

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

السلام عليكم

أريد تحويل المعادلات المرفقة في الملف إلى كود vb لتسهيل عملية حساب معامل السنوات و الشهور و بالنسبة لحساب الشهور يجب أن يكون مرتبط بعدد السنوات مثلا

مثلا إذا تجاوزت السنوات 6 فإن معدل الحساب بالنسبة للشهور يتغير و هكذا بعد السنة 11 إلخ. التفصيل موجود في الملف.

 

Calcul IEP.xlsx

رابط هذا التعليق
شارك

اختصار للكود
 

Function calcIEP(ByVal Period As Double) As Double
    Dim yr(), yy As Byte, mm As Byte
    Dim Pr(), Per As Double, Pos As Byte, p As Byte
    
    yr = Array(6, 5, 10, 5)
    Pr = Array(0.02, 0.018, 0.015, 0.04)
    
    Pos = InStrRev(Period, ".")
    mm = IIf(Pos = 0, 0, Mid(Period, Pos + 1))
    Period = Fix(Period)
    
    For p = 1 To 4
        yy = yr(p - 1): Per = Pr(p - 1)
        
        If Period > yy And p < 4 Then
            Period = Period - yy
            calcIEP = calcIEP + yy * Per
        Else
            calcIEP = calcIEP + Period * Per + (Per / 12 * mm)
            Exit For
        End If
    Next p
End Function

تم تنقيح الكود وتغيير المرفق.

Calcul IEP_03.xlsm

تم تعديل بواسطه AbuuAhmed
تنقيح الكود وتغيير المرفق
  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

حبيت اشكر الجميع حيث استفدت ايضا من هذة المشاركة

ولى طلب

هل يمكن ان يتم اضافة سطور بالكود لابدال المعادلات بالقيم (اى دون ان تظهر المعادلات عند الوقف على الخلايا...

شكرا لكم جميعا

رابط هذا التعليق
شارك

بارك الله فيك أخي الكريم

مازال شيئ واحد فقط و هو كيفية تحويل الأرقام بعد الفاصلة إلى أرقام صحيحة مثلا 173.33 أريدها تساوي 33

ظهرت مشكلة أخرى و هي أن عدد الشهور 10 أو 1 يحسبها مثل بعضهما

رابط هذا التعليق
شارك

منذ ساعه, لزهر مدلل said:

ظهرت مشكلة أخرى و هي أن عدد الشهور 10 أو 1 يحسبها مثل بعضهما

وعليكم السلام 
احذف اسم الدالة VALUE لتصبح النتيجة نص بدلا من رقم كذلك المدخل Period للدالة calcIEP من Double إلى String
لتصبح الدالة بشكلها النهائي:

Function calcIEP(ByVal Period As String) As Double
    Dim yr(), yy As Byte, mm As Byte
    Dim Pr(), Per As Double, P As Byte
    
    yr = Array(6, 5, 10, 5)
    Pr = Array(0.02, 0.018, 0.015, 0.04)
    
    P = InStrRev(Period, ".")
    mm = IIf(P = 0, 0, Mid(Period, P + 1))
    Period = Fix(Period)
    
    For P = 1 To 4
        yy = yr(P - 1): Per = Pr(P - 1)
        
        If Period > yy And P < 4 Then
            Period = Period - yy
            calcIEP = calcIEP + yy * Per
        Else
            calcIEP = calcIEP + Period * Per + (Per / 12 * mm)
            Exit For
        End If
    Next P
End Function


 

Calcul IEP_05.xlsm

تم تعديل بواسطه AbuuAhmed
رابط هذا التعليق
شارك

حذفتها لكن لم تتغير إذا أمكن أخي أن تجربها

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

 

أنظر الملفCalcul IEP.xlsm

 

رابط هذا التعليق
شارك

السلام عليكم

ولى طلب ( كتبة من قبل بالموضوع( ان امكن

هل يمكن ان يتم اضافة سطور بالكود لابدال المعادلات بالقيم (اى دون ان تظهر المعادلات عند الوقف على الخلايا...

شكرا لكم جميعا

رابط هذا التعليق
شارك

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