פונקציות לתאריך עברי

moishy

משתמש סופר מקצוען
מנוי פרימיום
גם בשנה שאינה מעוברת היה סופר את חודש 7 כאחד מהחודשים,
הרי ה isfullmonth אינו מחזיר מספר ימים...
ותמיד היה מוסיף 29 לפעמים היה צולח ולפעמים לא.
וה for לא ספר את החודש האחרון
לא הבנתי את ההיגיון בשורה הזו:
קוד:
lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + dblNumber) = 1, 30, 29)
הרי lngHebMonth + dblNumber תמיד יהיה יותר מ1, לא?

ובעצם למה לבנות בית חולים מתחת הגשר, מה רע בזה:
קוד:
lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + i) = 1, 30, IIf(IsFullMonth(lngHebYear, lngHebMonth + i) = 2, 29, 0))
 

דב פליי

משתמש פעיל
@חיים יודלביץ @moishy

נ"ל שזה עובד טוב.
קוד:
Function HebDateAdd(strInterval As String, dblNumber As Double, strDate As String)

    Dim i As Long, lngDayCounter As Long
    Dim lngHebYear As Long, lngHebMonth As Long, lngHebDay As Long
    Dim strTempDate As String
    Dim boIsNotLeap As Boolean

    Select Case DateType(strDate)
    Case 0
        ' לא תאריך
        HebDateAdd = ""
    Case 1
        ' תאריך לועזי
    Case 2
        ' תאריך עברי
    End Select

    Select Case strInterval
    Case Is = "י"
        strDate = DateAdd("d", dblNumber, strDate)
        HebDateAdd = DateToHeb(strDate)
    Case Is = "ח"
        strDate = HebToDate(strDate)
        GregToHeb strDate, lngHebYear, lngHebMonth, lngHebDay

       For i = 0 To dblNumber - 1
           If lngHebMonth + i > 13 Then
               lngHebMonth = lngHebMonth - 13
               lngHebYear = lngHebYear + 1
           End If

           lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + i) = 1, 30, 29)
         
           If IsLeapYear(lngHebYear) = False And lngHebMonth + i = 7 Then lngDayCounter = lngDayCounter - 29: boIsNotLeap = True

       Next

       If boIsNotLeap Then
           lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + dblNumber) = 1, 30, 29)
       End If



        strTempDate = DateAdd("d", lngDayCounter, strDate)
        HebDateAdd = DateToHeb(strTempDate)
    Case Else
        HebDateAdd = ""
    End Select

End Function

a26955 תודה רבה, אכן עובד מצוין! ותודה ל moishy שלא התייאש וניסה כל הזמן למצוא פתרון,
הפונקצייה עוזרת לי מאד!
 

FullTime

משתמש מקצוען
לא הבנתי את ההיגיון בשורה הזו:

lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + dblNumber) = 1, 30, 29)
הרי lngHebMonth + dblNumber תמיד יהיה יותר מ1, לא?
כאן הבית חולים, במקרה של שנה פשוטה חייבים שילך עוד חודש קדימה, ולכן הוספתי את הIF אחרי סיום ריצת הFOR.

ובעצם למה לבנות בית חולים מתחת הגשר, מה רע בזה:

lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + i) = 1, 30, IIf(IsFullMonth(lngHebYear, lngHebMonth + i) = 2, 29, 0))
זה לא רע. רק שזה לא יעזור להוספת חודש נוסף, ובכל מקרה נצטרך בדיקה אם הוא עבר את אדר ב' ולא היה קיים, לכן לא עשיתי את זה כאן.

בעיה שראיתי עכשיו, שהורדת 13 מהמספור עושה בעיות במקרה של חשבון רב שנתי, צריך למצוא פתרון שיחזור ל1 במקום להוריד 13
 
נערך לאחרונה ב:

עמיק

משתמש פעיל
קודם כל תודה רבה על הפונקציות לתאריך עברי

ניסיתי להמיר תאריך באמצעות הפונקציה DateToHeb לתאריך 18/02/2018
והתאריך שאני מקבל שגוי (ג' באדר ב תשע"ח) כי תשע"ח היא שנה פשוטה כמובן
תודה רבה וגמר חתימה טובה לכולם
 

ש.ב.ח.

משתמש מקצוען
מנוי פרימיום
בוגר/תלמיד פרוג
עיצוב גרפי
D I G I T A L
מעוניין לחלץ רק את היום בחודש ואת החודש מתוך התאריך עברי, איך?
 

ari rm

משתמש פעיל
בס"ד

האם יש פונקציה שמחזירה רק את החודש העברי או את השנה העברית?

תודה.
 

ari rm

משתמש פעיל
בס"ד

זה מה שאני ניסיתי בינתיים...

רק למחוק את הסיומת האחרונה "RAR"!
 

קבצים מצורפים

  • פונקציות תאריכים עבריים.accdb.RAR
    1.3 MB · צפיות: 51

b1e2n3

משתמש חדש
אודה מאוד אם אפשר להמיר רק שנה לועזית לשנה עברית.
כמו"כ כיצד מטמיעים את הקוד בתוכנת וורד?
תודה רבה!
 

b1e2n3

משתמש חדש
נכון, אבל ישנן הרבה כתבות הכותבות שנה בלבד, ואני מעוניין להמיר "בערך" לשנה העברית שמתאימה. אין לי כ"כ צורך לדייק בחודש או ביום לכאן או לכאן..
 

b1e2n3

משתמש חדש
ובלי קשר, איך מטמיעים הקובץ הנ"ל בתוכנת וורד באופן מסודר? תודה
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
ובלי קשר, איך מטמיעים הקובץ הנ"ל בתוכנת וורד באופן מסודר? תודה
צריך להעתיק את הקוד לקובץ של וורד. אם אתה רוצה גישה לקוד בכל המסמכים שתפתח, צור קובץ DOTM, והעתק אותו לנתיב הבא
C:\Users\[שם המשתמש]\AppData\Roaming\Microsoft\Word\STARTUP
ליצירת קובץ DOTM צור קובץ וורד ריק, העתק לעורך הקוד שלו את הקוד, ובשמירה בשם שנה את סוג הקובץ.
 

דוד דוד

משתמש חדש
תפחית מהשנה הלועזית 1240 לדוגמא 2019-1240=779 שזה השנה העברית תשעט ותמיר בפונקציה של הגימטריה 779 ל תשעט
 

b1e2n3

משתמש חדש
דוד דוד, הרעיון שלך מעניין, האם ניתן לרשום אותו כמאקרו בוורד?
תודה
 

יוסף76

משתמש חדש
אשמח לעזרה.
ניסיתי לתרגם תאריך כ"ז תמוז תשס"ו וקיבלתי מספר 38921 .
יש פתרון לקבל את התאריך עצמו?
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
אשמח לעזרה.
ניסיתי לתרגם תאריך כ"ז תמוז תשס"ו וקיבלתי מספר 38921 .
יש פתרון לקבל את התאריך עצמו?
איך ניסית ל"תרגם" את התאריך שקיבלת את המספר הנ"ל?
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קיט א'

א אַשְׁרֵי תְמִימֵי דָרֶךְ הַהֹלְכִים בְּתוֹרַת יְהוָה:ב אַשְׁרֵי נֹצְרֵי עֵדֹתָיו בְּכָל לֵב יִדְרְשׁוּהוּ:ג אַף לֹא פָעֲלוּ עַוְלָה בִּדְרָכָיו הָלָכוּ:ד אַתָּה צִוִּיתָה פִקֻּדֶיךָ לִשְׁמֹר מְאֹד:ה אַחֲלַי יִכֹּנוּ דְרָכָי לִשְׁמֹר חֻקֶּיךָ:ו אָז לֹא אֵבוֹשׁ בְּהַבִּיטִי אֶל כָּל מִצְוֹתֶיךָ:ז אוֹדְךָ בְּיֹשֶׁר לֵבָב בְּלָמְדִי מִשְׁפְּטֵי צִדְקֶךָ:ח אֶת חֻקֶּיךָ אֶשְׁמֹר אַל תַּעַזְבֵנִי עַד מְאֹד:
נקרא  37  פעמים

לוח מודעות

למעלה