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

الجهاز يجبر بدون ماعطيه اي امر لماذا ؟

مغلق
بدأه مسافر الى في 24 مايو 2002 · 4 رد · 509 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب 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

اجعل الحقل الرقمي مذدوج وليس عدد صحيح طويل

أشرف خليل

#3

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

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

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

بما أنك تستخدم 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
#4

الى الاستاذ

محمد ابو طاهر اشكرك عميق الشكر

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

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

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

#5

أشكرك أخي العزيز

و أنا أيضا أستفيد كثيرا من مشاركات الاخوة الكرام (بدون ذكر أسماء ) ;) ;) ;)

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

و لكن المثال به ال 4 دوال

و سأضعه قريبا مع الشرح فى قسم الاوفيس باذن الله

http://www14.brinkster.com/mtarafa/xls/Grades.zip

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…