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

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

  • 3 months later...
قام بنشر (معدل)

السلام عليكم

أخواني الكرام

لقد لاحظت مشكلة خطييييييييررررررة في دوال الجبر

فحوالي منذ ثلاث ساعات جالسة على الكمبوتر اراجع الدوال ولم أحصل على دالة جبر تعمل بشكل سليم وصحيح

مشكلة الدالة Cint أنها تقوم بجبر الكسور للأعلى عندما يكون الرقم العشري يساوي أو يتعدى العدد ( 0.50 ) وذلك للأرقام الصحيحة الفردية فقط دون الزوجية !!!! فإذا كان الرقم الصحيح زوجي فإنها لا تجبر الكسر ( 0.50 ) بل تضع الرقم الصحيح الزوجي نفسه !!

بينما الدالة Int صحيح تقوم بجبر الكسر ( 0.50 ) وسواء كانت الأرقام الصحيحة فردية أو زوجية لا تفرق

لكنها في نفس الوقت تجبر جميع الكسور حتى تلك التي أقل من ( 0.50 ) !!

وتقريباً أغلب من يبحث عن دوال جبرية لا يريدها ان تجبر الأقل من ( 0.50 )

فهل بالإمكان تجاوز مشاكل هذه الدوال ؟

ملاحظة لمشرفي أوفيسنا :

يا حبذا لو يتم تجميع مواضيع الدوال في موضوع فهرسي

ولكم جزيل الشكر :rol:

Cint___Fix___Int.rar

تم تعديل بواسطه نرجس الورد
قام بنشر (معدل)

السلام عليكم

بعد عناء ليس بقصير توصلت للحل بفضل الأخت زهرة

حيث وجدت لها مثال في الفريق العربي ولتعذرنا بنقل وتغيير بسيط في مثالها الرائع موصول لها الشكر الجزيل

المثال الأول هو الأصل بدون تعديل

والمثال الثاني نفسه ولكن قمت بتغيير العدد (0.5) في الوحدة النمطية إلى العدد (0.49) واستطعت الحصول على ما أريده

جزاكم الله جميعاً ألف خير وحقق لكم أحلامكم

Round_UP_Down.rar

Round_UP_Down2.rar

تم تعديل بواسطه نرجس الورد
قام بنشر (معدل)

بقيت مشكلة لم أعرف كيف يتم حفظ ناتج التقريب في الجدول

جربت تطبيق الدالة في الاستعلام فنجحت

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

تم تعديل بواسطه نرجس الورد
قام بنشر

دالة لـ أبو هادي :
دالة RoundUp, بديلة لدالة Round

كود
Function RoundUp(ByVal Expression, _
       Optional ByVal NumDecimalPlaces = 0) As Double
Dim Rnd

On Error Resume Next

If NumDecimalPlaces < 0 Then NumDecimalPlaces = 0
If NumDecimalPlaces > 22 Then NumDecimalPlaces = 22

Rnd = 0
If Expression <> 0 Then
   Rnd = Val("0." & String(NumDecimalPlaces + 1, "0") & "1")
End If

RoundUp = Round(Expression + IIf(Expression > 0, Rnd, -Rnd), _
                 NumDecimalPlaces)
End Function
وهذا اختبار للدالة ومقارنتها مع ثلاث دوال أخرى :
كود
Sub RoundingTest()
  Dim Num As Double
  
  Num = 0.5
  
  MsgBox CInt(Num) & vbNewLine & _
         CLng(Num) & vbNewLine & _
         Round(Num) & vbNewLine & _
         RoundUp(Num)
End Sub

  • 5 months later...
قام بنشر

السلام عليكم ورحمة الله وبركاته

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

وأن يجعلكم من أهل جنات النعيم والفردوس الاعلى يا رب العالمين

  • 5 years later...

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