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

تحويل عدد الأيام إلى ( يوم : شهر : سنة )


jaffjaff

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

السلام عليكم

بعد إذن أخي أمجد وحيث أن البحث حاليا لا يعمل بشكل جيد فقد كتبت لك هذا الكود آمل أن يكون مفيدا :

Sub GetPeriod()
  Const YearAvg = 365.25
  Dim Days As Long
  '----------------
  Dim yy As Integer
  Dim mm As Integer
  Dim dd As Integer
  
  Days = 9625
  
  yy = Fix(Days / 365)
  If Fix(yy * YearAvg) > Days Then
    yy = yy - 1
  End If
  '-------------------------------
  Days = Days - Fix(yy * YearAvg)
  '-------------------------------
  mm = Fix(Days / 29.5)
  If IIf(mm > 2, CLng((mm - 2) * 30.6) + 59, CLng(mm * 30.6) + Int(mm > 1) * 2) > Days Then
    mm = mm - 1
  End If
  '-------------------------------
  dd = Days - IIf(mm > 2, CLng((mm - 2) * 30.6) + 59, CLng(mm * 30.6) + Int(mm > 1) * 2)
  
  MsgBox yy & " " & mm & " " & dd
End Sub

تحياتي .

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

السلام عليكم

أنشئ وحدة نمطية / موديول والصق به هذا الكود :

Option Explicit

'-- هذا الإجراء من كتابة الأستاذ أبو هاجر
Sub CalcAge(ByVal DateFm As Variant, ByVal DateTo As Variant, _
            ByRef vDays As Integer, ByRef vMonths As Integer, ByRef vYears As Integer)
  'Dim vMonths, vDays, vYears

  If Not IsDate(DateFm) Or Not IsDate(DateTo) Then Exit Sub

  DateFm = DateFm - 1  '-- تم إضافة هذا السطر بواسطة أبو هادي --'
  '------------------
  vMonths = DateDiff("m", CDate(DateFm), CDate(DateTo))
  vDays = DateDiff("d", DateAdd("m", vMonths, CDate(DateFm)), CDate(DateTo))
  If vDays < 0 Then
    vMonths = vMonths - 1
    vDays = DateDiff("d", DateAdd("m", vMonths, CDate(DateFm)), CDate(DateTo))
  End If
  vYears = vMonths \ 12
  vMonths = vMonths Mod 12
End Sub

Function GetAge(Days As Long) As String
  Const CalBegin = #1/1/2001#
  Dim yy As Integer
  Dim mm As Integer
  Dim dd As Integer

  Call CalcAge(CalBegin, (CalBegin - 1) + Days, dd, mm, yy)
  GetAge = yy & " " & mm & " " & dd
End Function
ثم من أي موقع تريد استدعاء الدالة أعلاه يمكنك ذلك بالطريقة التالية :
Sub Test()
  MsgBox GetAge(9625)
End Sub

إذا لم تستطع الإستفادة مما سبق فعليك بأن تضع مثالك في الرابط التالي وسوف أقوم بالتعديل عليه :

قسم مؤقت لتحميل الملفات إلى الموقع للأعضاء

تحياتي .

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

السلام عليكم

أخي jaffjaff .. وعدي لك بالتعديل لطلبك هنا وهو كيف تستفيد من هذه الدالة . فإن كان كذلك فلا بأس ، فقط حدد لي نموذج واحد وحدد لي أين أستطيع أن أجد القيمة/الرقم الذي تريد تحويله إلى سنة وشهر ويوم .

أما وإن كان غير ذلك فأنا شديد الأسف بأني لن أتمكن من عمل أي تعديلات في مثالكم وذلك يعود لظروف الوقت والإرتباطات بأمور أخرى لها أولوياتها لدي .

كما أني أدعو من يستطيع المساعدة في التعديلات المطلوبة والمشروحة في القسم المؤقت لتحميل الملفات بأن لا يتردد بذلك وله مني الشكر والتقدير .

تحياتي .

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information