الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه مسافر الى في 24 مايو 2002 · 1 رد · 399 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي برنامج يخرج معدل بقسمة رقم على رقم اخر وقمت بتقريب الناتج اللي هو المعدل الى رقمين عشريين فقط الى هنا ممتاز مافيه اي مشكل

ثم قمت بعمل تقادير بنا على هذا المعدل وكود التقادير هو

Public Function معدل_الطالب(الدرجات As Long)

Select Case الدرجات

Case Is > 89.99

معدل_الطالب = "ممتاز"

Case 74.99 To 89.99

معدل_الطالب = "جيد جداً"

Case 60 To 74.99

معدل_الطالب = "جيد"

Case Is < 60

معدل_الطالب = "ضعيف"

End Select

End Functi

المشكله هي عندما يكون المعدل 90.15 يعطي جيد جدا مع انه المفروض يعطي ممتاز بناء ا على الكود السابق

مع انه عندما يكون المعدل 90.51 يعطي الطالب ممتاز

بعباره اخر كان الجهاز يقوم بالجبر ولايعترف بنفس الرقم العشري مع اني لم امره بذلك فهو يعتبر 89.99 كانها 90

و 89.49 كانها 89 ويتعامل كذلك مع ارقامي اي المعدل الذي اعطيه على هذه القاعدة فهو في المثال السابق يعتبر 90.15 كانها 90

ارجو حل هذه المشكلة ولغى الجبر الذي يقوم به من اجل ان يعترف بالارقام كما هي

__________________

#2

بالصدفة كنت أعد مشاركة فى قسم الأوفيس

عن حل نفس الموضوع فى الاكسل بالكود

باختصار بالنسبة لدالتك

بما أنك تستخدم 0.99

فقم بتقريب الرقم فى البداية

باستخدام الدالة Round

ما فى الدالة الأولي فى الأكواد التالية ، و لكن استخدم 2 بدلا من 1

و هناك 3 طرق أخري لا تحتاج فيها الي ذلك

هذه هي الاربع حلول و سأضع مثال عليها فى ملف اكسل غدا ان شاء الله فى قسم الاوفيس

اما بالنسبة للأكسس فاستخدم mycell بدلا من mycell.value

حيث أنها فى الاكسس ستعبر عن رقم و ليس خلية كما فى الاكسل

و هذا هو الفرق الوحيد

و هذه هي ال 4 دوال فاختار ما شئت

Function GetGrade(mycell)
'MsgBox mycell.Value
Dim x As Double
x = Round(mycell.Value, 1)
  Select Case x
  Case 0 To 49.9
   GetGrade = "راسب"
 Case 50 To 64.9
   GetGrade = "مقبول"
 Case 65 To 74.999
  GetGrade = "جيد"
 Case 75 To 84.9
  GetGrade = "جيد جدا"
 Case Is >= 85
  GetGrade = "ممتاز"
Case Else
  GetGrade = "رقم غريب"
 End Select
End Function

Function GetGrade2(mycell)
Dim x As Double
x = mycell.Value
  Select Case x
    Case Is >= 85
  GetGrade2 = "ممتاز"
  Case Is >= 75
  GetGrade2 = "جيد جدا"
  Case Is >= 65
  GetGrade2 = "جيد"
  Case Is >= 50
   GetGrade2 = "مقبول"
Case Is >= 0
   GetGrade2 = "راسب"
Case "else"
  GetGrade2 = "رقم غريب"
 End Select
 End Function

Function GetGrade3(mycell)
Dim x As Double
x = mycell.Value
GetGrade3 = "رقم غريب"
If x >= 0 Then GetGrade3 = "راسب"
If x >= 50 Then GetGrade3 = "مقبول"
If x >= 65 Then GetGrade3 = "جيد"
If x >= 75 Then GetGrade3 = "جيد جدا"
If x >= 85 Then GetGrade3 = "ممتاز"
End Function

Function GetGrade4(mycell)
Dim x As Double
x = mycell.Value
If x >= 0 And x < 50 Then
GetGrade4 = "راسب"
ElseIf x > 50 And x <= 65 Then
GetGrade4 = "مقبول"
ElseIf x > 65 And x <= 75 Then
GetGrade4 = "جيد"
ElseIf x > 75 And x <= 85 Then
GetGrade4 = "جيد جدا"
ElseIf x > 85 Then
GetGrade4 = "ممتاز"
Else
GetGrade4 = "رقم غريب"
End If
End Function

هذا الموضوع مغلق.

مواضيع مشابهة