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

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

قام بنشر

تفضل 

 

today: Int((Date()-[تاريخ الميلاد])/365) & " سنة  - " & Int(((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12) & " شهر  - " & Int((((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12-Int(((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12))*30) & " يوم 

 

  • Like 2
قام بنشر

وهذه دالة أخرى :

Function fAgeYMD(StartDate As Date, EndDate As Date) As String
'Purpose:   Returns the difference between StartDate and EndDate in full years, months and days
'Coded by:  raskew
'To call:
' ? fAgeYMD(#7/6/54#, #10/3/84#)
'Returns:
' 30 years 2 months 28 days

Dim inthold As Integer
Dim dayHold As Integer

   inthold = Int(DateDiff("m", StartDate, EndDate)) + _
             (EndDate < DateSerial(year(EndDate), month(EndDate), Day(StartDate)))
             
   If Day(EndDate) < Day(StartDate) Then
      dayHold = DateDiff("d", StartDate, DateSerial(year(StartDate), month(StartDate) + 1, 0)) & Day(EndDate)
   Else
      dayHold = Day(EndDate) - Day(StartDate)
   End If
   
   fAgeYMD = Int(inthold / 12) & " year" & IIf(Int(inthold / 12) <> 1, "s ", " ") _
             & inthold Mod 12 & " month" & IIf(inthold Mod 12 <> 1, "s ", " ") _
             & LTrim(str(dayHold)) & " day" & IIf(dayHold <> 1, "s", "")

End Function

طريقة الاستدعاء :

fAgeYMD(StartDate, EndDate)

 

  • Like 2
  • Thanks 1
قام بنشر
  في 12‏/6‏/2022 at 18:09, محمد احمد لطفى said:
today: Int((Date()-[تاريخ الميلاد])/365) & " سنة  - " & Int(((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12) & " شهر  - " & Int((((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12-Int(((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12))*30) & " يوم
Expand  

هذه الدالة لاتحسب العمر بشكل مضبوط استاذ محمد

جرب المرفق وادخل تاريخ الميلاد وسترى الفرق

حساب العمر.rarFetching info...

  • Like 2
قام بنشر (معدل)


شكراً للتوضيح أستاذ @Eng.Qassim
الاتنين غلط مزودين فى تاريخ ميلادى أيام زيادة 

 

today: Int((Date()-[تاريخ الميلاد])/365) & " سنة  - " & Int(((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12) & " شهر  - " & Int((((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12-Int(((Date()-[تاريخ الميلاد])/365-Int((Date()-[تاريخ الميلاد])/365))*12))*30) & " يوم

دى مزودة 17 يوم 

وملف حساب العمر مزود 8 يوم جارى تجربة كود أستاذى @Moosak

تم تعديل بواسطه محمد احمد لطفى
  • Like 1
قام بنشر
  في 12‏/6‏/2022 at 19:29, محمد احمد لطفى said:

الملف فيه حسبتين الى فوق غلط و الى تحت مظبوطة بالملى

Expand  

هو انا بحكي ايه من الصبح

انا وضعت كودك لفوق ...وكود الفرنجة لتحت حتى تقارن بينهم

بالمناسبة استاذ محمد ..انا اعتمد عليه كثيرا في حساب مدد المشاريع (التي ليس فيها عطل او جمع )

  • Like 4
  • Thanks 1
قام بنشر (معدل)
  في 12‏/6‏/2022 at 18:42, Moosak said:

وهذه دالة أخرى :

Function fAgeYMD(StartDate As Date, EndDate As Date) As String
'Purpose:   Returns the difference between StartDate and EndDate in full years, months and days
'Coded by:  raskew
'To call:
' ? fAgeYMD(#7/6/54#, #10/3/84#)
'Returns:
' 30 years 2 months 28 days

Dim inthold As Integer
Dim dayHold As Integer

   inthold = Int(DateDiff("m", StartDate, EndDate)) + _
             (EndDate < DateSerial(year(EndDate), month(EndDate), Day(StartDate)))
             
   If Day(EndDate) < Day(StartDate) Then
      dayHold = DateDiff("d", StartDate, DateSerial(year(StartDate), month(StartDate) + 1, 0)) & Day(EndDate)
   Else
      dayHold = Day(EndDate) - Day(StartDate)
   End If
   
   fAgeYMD = Int(inthold / 12) & " year" & IIf(Int(inthold / 12) <> 1, "s ", " ") _
             & inthold Mod 12 & " month" & IIf(inthold Mod 12 <> 1, "s ", " ") _
             & LTrim(str(dayHold)) & " day" & IIf(dayHold <> 1, "s", "")

End Function

طريقة الاستدعاء :

fAgeYMD(StartDate, EndDate)

 

Expand  

وهنا الدالة الأخيرة ( علشان ما أغار )  😂

image.png.64a309835ba9fca510eedc53a6202857.png

 

حساب العمر.rarFetching info...

 

تم تعديل بواسطه Moosak
  • Like 5
قام بنشر

مشاركة معكم

دالة لحساب السنوات ويمكن تعديلها لتحقيق المطلوب

 Function Age(varBirthDate As Variant) As Integer
 Dim varAge As Variant
 If IsNull(varBirthDate) Then Age = 0: Exit Function
 varAge = DateDiff("yyyy", varBirthDate, Now)
 If Date < DateSerial(Year(Now), Month(varBirthDate), _
 Day(varBirthDate)) Then
 varAge = varAge - 1
 End If
 Age = CInt(varAge)
 End Function

هذه الدالة ☝️ من موقع مايكروسوفت

الموقع غني بالامثلة ولكن امثلة عامة يمكن التعديل عليها وتكييفها وفقا لحاجتنا

تحياتي

  • Like 2
قام بنشر

شكرا لكل من شارك بالاجابة

ولكن اذا كان تاريخ الميلاد 14/6/2000  وتاريخ اليوم 13/6/2022

طبقا للمثال السابق (حساب العمر )  يكون العمر:

22 سنة + 0 شهر  + 3 يوم

والمفروض يكون 22 سنة + 0 شهر + 0 يوم

هل كلامي صحيح ؟

قام بنشر
  في 13‏/6‏/2022 at 17:30, بسملة جمال said:

طبقا للمثال السابق (حساب العمر )  يكون العمر:

22 سنة + 0 شهر  + 3 يوم

Expand  

يا ستي الكريمة ..الظاهر انك لم تقرأي التعليقات السابقة

الخانة الاولى في النموذج فعلا تظهر الناتج = 22سنة +0شهر+3 يوم لان الكود يحسب الشهر 30 فقط

اما الخانة الثانية فتظهر العمر بشكل مضبوط ...اذا جربتي الكود يوم غد سيظهر لك العمر = 22سنة +0 شهر +0 يوم

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

  • Like 1

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