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

  • הוסף לסימניות
  • #21
האם משהו יודע איפה אפשר להשיג רשימה מסודרת של כל הפקודות בVBA
צירפתי לדוגמא קובץ של הפקודות הבסיסיות, לתועלת הכלל, וכדי שיבינו מה אני רוצה.
אשמח אם משהו ידוע איפה משיגים את הכל,
אני מניח שבספר של מחבר הקובץ הנ"ל יש הכל, אבל זה רק בקנייה בחנות...

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

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

  • כרטיס אזכור מהיר ל vba - מעין פולג אקסל למתקדמים(3).pdf
    KB 289 · צפיות: 153
  • הוסף לסימניות
  • #22
ומה תאמר על זה:
קוד:
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
   
    Select Case DateType(strDate)
        Case 0
            ' לא תאריך
            HebDateAdd = ""
        Case 1
            ' תאריך לועזי
        Case 2
            ' תאריך עברי
            strDate = HebToDate(strDate)
    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 = 1 To dblNumber
                lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + i), 30, 29)
            Next

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

End Function

לצערי אני לא מסתדר עם הפונקצייה אני לא מצליח לכתוב לה פרמטרים.
האם הפרמטרים אמורים להיות כמו הגרסה הראשונה של הפונקצייה כלומר, חודש או יום, מספר חודשים קדימה, ותאריך עברי ממנו לחשב קדימה?
נסיתי לכתוב כמו הפרמטרים הנ"ל, שזה גם מה שהבנתי מתוך הקוד שאמור להיות, אבל האקסל כותב שגיאה "הערך שהזנתי ערך שאינו מתאים"
מעניין לציין שכאשר ההפניה היתה לתאים ריקים הוא כן כתב תאריך כל שהו ולא שגיאה.
אשמח לעזרה איזה פרמטרים אני אמור לכתוב
 
  • הוסף לסימניות
  • #23
לצערי אני לא מסתדר עם הפונקצייה אני לא מצליח לכתוב לה פרמטרים.
האם הפרמטרים אמורים להיות כמו הגרסה הראשונה של הפונקצייה כלומר, חודש או יום, מספר חודשים קדימה, ותאריך עברי ממנו לחשב קדימה?
נסיתי לכתוב כמו הפרמטרים הנ"ל, שזה גם מה שהבנתי מתוך הקוד שאמור להיות, אבל האקסל כותב שגיאה "הערך שהזנתי ערך שאינו מתאים"
מעניין לציין שכאשר ההפניה היתה לתאים ריקים הוא כן כתב תאריך כל שהו ולא שגיאה.
אשמח לעזרה איזה פרמטרים אני אמור לכתוב
לדוגמא:
=HebDateAdd("ח", 1, "ל באב תשע''ח")
 
  • הוסף לסימניות
  • #24
לדוגמא:
=HebDateAdd("ח", 1, "ל באב תשע''ח")
ככה אני כותב אבל במקום ה 1 אני נותן הפניה לדוגמא לתא A1 ובמקום לכתוב תאריך אני נותן הפניה לתא A2 וככה עד עכשיו זה עבד, מהשינוי בפונקצייה הוא מוציא את השגיאה הנ"ל

תודה רבה על כל העזרה!!
 
  • הוסף לסימניות
  • #25
זה עובד אצלי:
קוד:
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
    
    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 = 1 To dblNumber
                lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + i), 30, 29)
            Next

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

End Function
 
  • הוסף לסימניות
  • #26
זה עובד אצלי:
קוד:
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
   
    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 = 1 To dblNumber
                lngDayCounter = lngDayCounter + IIf(IsFullMonth(lngHebYear, lngHebMonth + i), 30, 29)
            Next

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

End Function
גם אצלי, כרגע שמתי לב שאם אני כותב לו ל אב תשעח ושני חודשים קדימה הוא כותב לי א חשוון תשעט ולא ל תשרי תשעט סליחה על הבקשות המרובות, יש אפשרות לסדר גם את זה?
ושוב תודה רבה רבה על כל הטרחה והעזרה המרובה!!
 
  • הוסף לסימניות
  • #27
גם אצלי, כרגע שמתי לב שאם אני כותב לו ל אב תשעח ושני חודשים קדימה הוא כותב לי א חשוון תשעט ולא ל תשרי תשעט סליחה על הבקשות המרובות, יש אפשרות לסדר גם את זה?
ושוב תודה רבה רבה על כל הטרחה והעזרה המרובה!!

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

מקווה שאני לא משגע אותך...
 
  • הוסף לסימניות
  • #28
מוישי, תודה רבה על הקודים הנפלאים. אפשר להוסיף אותם לאשכול קודים באקסס כדי שלא יעלמו במשך הזמן. כרגיל הקודים שלך נקיים ומעולים. ד"ש.
 
  • הוסף לסימניות
  • #29
שאלת עם הארץ- איך משתמשים בכלל בפונקציות הללו?
 
  • הוסף לסימניות
  • #30
עוד בעיה קטנה, אם אני כותב לו 5 חודשים קדימה אז הוא פתאום עובר ל ב שבט תשעט.

מקווה שאני לא משגע אותך...
יש כאן אתגר שצריך לפצח, אשמח לרעיונות.

האלגוריתם בגירסה האחרונה היתה:
1. להמיר את התאריך התחלה לתאריך לועזי במידה והוזן תאריך עברי
2. א. במידה ויחידת הזמן שנבחרה היא יום, להוסיף את מספר הימים לתאריך הלועזי
ב. במידה ויחידת הזמן שנבחרה היא חודש, לספור את הימים בכל החודשים, ולהוסיף אותם לתאריך הלועזי.
3. להמיר את התאריך הלועזי לתאריך עברי

האתגר הגדול הוא ב 2.ב., כיצד לבצע את זה אם יש מעבר שנה, או בשנה שאינה מעוברת מחודש אדר והלאה (וזאת בגלל שהפונקציה הבודקת אם חודש הוא מלא או חסר משתמש עם 13 חודשים, כאשר חודש 7 הוא קיים רק בשנה מעוברת).
 
  • הוסף לסימניות
  • #31
@moishy
א. הוא אמור להיות ככה, לא?
For i = 0 To dblNumber - 1

ב. בשורה מתחתיו לא ציינת איזה ערך יחזיר ה IsFullMonth.

ג. אחרי חודש 13 ה IsFullMonth תמיד מחזיר 2.
 
נערך לאחרונה ב:
  • הוסף לסימניות
  • #32
@חיים יודלביץ @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
 
נערך לאחרונה ב:
  • הוסף לסימניות
  • #34
@moishy
א. הוא אמור להיות ככה, לא?
For i = 0 To dblNumber - 1

ב. בשורה מתחתיו לא ציינת איזה ערך יחזיר ה IsFullMonth.

ג. אחרי חודש 13 ה IsFullMonth תמיד מחזיר 2.
א. אכן.
ב. ג. הייתי צריך להשתמש בפונקציה IsMonthFull ולא ב IsFullMonth
 
  • הוסף לסימניות
  • #35
@חיים יודלביץ @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

    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)
     '       Debug.Print lngHebMonth + i & ": " & IsFullMonth(lngHebYear, lngHebMonth + i)
        Next

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

End Function
נהדר, שמח שפיצחת את זה :)
 
  • הוסף לסימניות
  • #38
@moyshi הוספתי לו בית חולים מתחת לגשר
קוד:
        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
 
  • הוסף לסימניות
  • #39
@moishy הוספתי לו בית חולים מתחת לגשר
קוד:
        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
למה?
 
  • הוסף לסימניות
  • #40
גם בשנה שאינה מעוברת היה סופר את חודש 7 כאחד מהחודשים,
הרי ה isfullmonth אינו מחזיר מספר ימים...
ותמיד היה מוסיף 29 לפעמים היה צולח ולפעמים לא.
וה for לא ספר את החודש האחרון
 
נערך לאחרונה ב:

פרוגבוט

תוכן שיווקי
פרסומת

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

מעכשיו, תהיו הראשונים לקבל את כל העדכונים, החדשות, ההפתעות בלעדיות, והתכנים הכי חמים שלנו בפרוג!

לוח מודעות

הפרק היומי

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


תהילים פרק כה

אלְדָוִד אֵלֶיךָ יי נַפְשִׁי אֶשָּׂא:באֱלֹהַי בְּךָ בָטַחְתִּי אַל אֵבוֹשָׁה אַל יַעַלְצוּ אֹיְבַי לִי:גגַּם כָּל קוֶֹיךָ לֹא יֵבֹשׁוּ יֵבֹשׁוּ הַבּוֹגְדִים רֵיקָם:דדְּרָכֶיךָ יי הוֹדִיעֵנִי אֹרְחוֹתֶיךָ לַמְּדֵנִי:ההַדְרִיכֵנִי בַאֲמִתֶּךָ וְלַמְּדֵנִי כִּי אַתָּה אֱלֹהֵי יִשְׁעִי אוֹתְךָ קִוִּיתִי כָּל הַיּוֹם:וזְכֹר רַחֲמֶיךָ יי וַחֲסָדֶיךָ כִּי מֵעוֹלָם הֵמָּה:זחַטֹּאות נְעוּרַי וּפְשָׁעַי אַל תִּזְכֹּר כְּחַסְדְּךָ זְכָר לִי אַתָּה לְמַעַן טוּבְךָ יי:חטוֹב וְיָשָׁר יי עַל כֵּן יוֹרֶה חַטָּאִים בַּדָּרֶךְ:טיַדְרֵךְ עֲנָוִים בַּמִּשְׁפָּט וִילַמֵּד עֲנָוִים דַּרְכּוֹ:יכָּל אָרְחוֹת יי חֶסֶד וֶאֱמֶת לְנֹצְרֵי בְרִיתוֹ וְעֵדֹתָיו:יאלְמַעַן שִׁמְךָ יי וְסָלַחְתָּ לַעֲוֹנִי כִּי רַב הוּא:יבמִי זֶה הָאִישׁ יְרֵא יי יוֹרֶנּוּ בְּדֶרֶךְ יִבְחָר:יגנַפְשׁוֹ בְּטוֹב תָּלִין וְזַרְעוֹ יִירַשׁ אָרֶץ:ידסוֹד יי לִירֵאָיו וּבְרִיתוֹ לְהוֹדִיעָם:טועֵינַי תָּמִיד אֶל יי כִּי הוּא יוֹצִיא מֵרֶשֶׁת רַגְלָי:טזפְּנֵה אֵלַי וְחָנֵּנִי כִּי יָחִיד וְעָנִי אָנִי:יזצָרוֹת לְבָבִי הִרְחִיבוּ מִמְּצוּקוֹתַי הוֹצִיאֵנִי:יחרְאֵה עָנְיִי וַעֲמָלִי וְשָׂא לְכָל חַטֹּאותָי:יטרְאֵה אוֹיְבַי כִּי רָבּוּ וְשִׂנְאַת חָמָס שְׂנֵאוּנִי:כשָׁמְרָה נַפְשִׁי וְהַצִּילֵנִי אַל אֵבוֹשׁ כִּי חָסִיתִי בָךְ:כאתֹּם וָיֹשֶׁר יִצְּרוּנִי כִּי קִוִּיתִיךָ:כבפְּדֵה אֱלֹהִים אֶת יִשְׂרָאֵל מִכֹּל צָרוֹתָיו:
נקרא  2  פעמים
למעלה