דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. התייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל

התייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל

מתוזמן נעוץ נעול הועבר תכנות
74 פוסטים 4 כותבים 3.3k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • פ מנותק
    פ מנותק
    פלורידה
    כתב ב נערך לאחרונה על ידי פלורידה
    #49

    @odeddvir 🙂

    אני רואה שאני ממש שאינו יודע לשאול.

    אז אנסה כך:

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

    עריכה: אולי יותר נכון לשאול כך:
    האם יש אפשרות ליצור פונקצייה באקסל שלפי:

    1. גליון
    2. שם הדף בעמודה הראשונה בטבלה

    הוא יידע איך מאיזה תא לשלוף את המפתח?

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

    OdedDvirO תגובה 1 תגובה אחרונה
    0
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
      #50

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

      שימוש:
      כשהמשתמש ילחץ על משבצת כלשהיא, נדע לאיזה דף הוא התכוון, וכך נוכל לעדכן את הערך המתאים בטבלת החזרות.

      2. המרת מחרוזת מפתח למיקום בגליון
      בהנתן מפתח כלשהו, הפונקציה תתרגם את מחרוזת המפתח למיקום המתאים בגליון המתאים.

      שימוש:
      כשנרצה לבנות את הגליון על פי טבלת החזרות, נסרוק את טבלת החזרות, ועבור כל מפתח נסמן בגליון המתאים את המשבצת המתאימה.

      עריכה:
      המימוש בפועל של הפונקציות (כלומר כתיבת הקוד עבורן) תלוי מאוד בשיטת העיצוב של הגליון.

      דוגמא למימוש הפונקציה השניה:

      חישוב מספר המסכת:

      חיפוש של שם הגליון בטבלת המסכתות.

      חישוב מספר הדף:

      ניתן לקבל את מספר הדף לפי מספר השורה, עם היסט מסויים בגלל העיצוב.

      חישוב מספר הפרק:

      אם החלטנו לאפשר מספר עמודות קבוע לכל פרק, למשל 4, החישוב הוא די פשוט, לפי מספר העמודה לחלק ל4 + היסט מסויים.
      בעוד שאם מספר העמודות משתנה עבור כל פרק, זה יותר מורכב, ודורש סריקה יותר חכמה של הגליון.

      חישוב מספר החזרה:

      נגזר מחישוב מספר הפרק + חישוב היסט העמודות שמאלה.

      תגובה 1 תגובה אחרונה
      2
      • פ מנותק
        פ מנותק
        פלורידה
        כתב ב נערך לאחרונה על ידי פלורידה
        #51

        אני עומד לפני סיום השלב הראשון בס"ד

        יצרתי טבלה שבכותרות ישנם ברכות, שבת, וכו' ובעמודה הראשונה, ב., ב:, ג., וכו'.

        f2cf9da4-6a1b-4ca4-abae-ad32ff9a8802-image.png

        הצורה לשלוף את המפתח היא על ידי index + matsh.

        הדרך לקבל את המידע היא לפי נתוני המסכת, והדף בטבלה שמקבלת את הדבל קליק, היא על ידי VLookUp עם הסיט שלילי.

        כל הקוד יחד:

        Public Function m_kata(wordText As String) As Variant
        masecet = ActiveSheet.Range("A6")
        ActiveColumn = ActiveCell.Column - ActiveCell.ListObject.DataBodyRange.Column + 1
        tanivchar = Selection
        ActiveTable = ActiveCell.ListObject
        amuda1 = ActiveSheet.ListObjects(ActiveTable).ListColumns(1).DataBodyRange
        amudanivchar = ActiveSheet.ListObjects(ActiveTable).ListColumns(ActiveColumn).DataBodyRange
        
        daf = Application.VLookup(tanivchar, Application.Choose(Array(1, 2), amudanivchar, amuda1), 2, 0)
        
        m_kata = Application.Index(Sheets("מקט").Range("T6:BF356"), Application.Match(daf, Sheets("מקט").Range("S6: S356"), 0), Application.Match(masecet, Sheets("מקט").Range("T6:BF6"), 0))
        
        End Function
        

        כעת נותר להחליט, האם כדאי ליצור את המסד בחוברת עבודה נפרדת, או באותה חוברת עבודה.

        @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

        אני אישית יותר מתחבר למסד נתונים נפרד. השאלה האם ניתן להשתמש בחוברת עבודה נפרדת לגמרי והיא לא תקפוץ בכל הפעלה של החוברת של התצוגה.

        כמו כן אשמח לשמוע על החסרונות של השיטה הזאת (אם יש...)

        OdedDvirO תגובה 1 תגובה אחרונה
        0
        • OdedDvirO מנותק
          OdedDvirO מנותק
          OdedDvir
          השיב לפלורידה ב נערך לאחרונה על ידי
          #52

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

          פ תגובה 1 תגובה אחרונה
          2
          • פ מנותק
            פ מנותק
            פלורידה
            השיב לOdedDvir ב נערך לאחרונה על ידי
            #53

            @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

            כלומר: הוא פתוח בכל עת בלי שהמשתמש רואה אותו?
            או שכל פעולה הוא נגש לשם?

            OdedDvirO תגובה 1 תגובה אחרונה
            0
            • OdedDvirO מנותק
              OdedDvirO מנותק
              OdedDvir
              השיב לפלורידה ב נערך לאחרונה על ידי
              #54

              @פלורידה מטעמי יעילות עדיף שיהיה פתוח כל זמן שהתוכנה פעילה, כך הגישה אליו תהיה יותר מהירה, כי הפתיחה לוקחת זמן.

              פ תגובה 1 תגובה אחרונה
              0
              • פ מנותק
                פ מנותק
                פלורידה
                השיב לOdedDvir ב נערך לאחרונה על ידי
                #55

                @odeddvir

                אני אשמח לשמוע פרטים איך ניתן להריץ את הקובץ בצורה מוסתרת.
                לפחות לשמוע איך התכונה הזו נקראת, גוגל כבר יסביר לי איך עושים 😀

                OdedDvirO תגובה 1 תגובה אחרונה
                0
                • OdedDvirO מנותק
                  OdedDvirO מנותק
                  OdedDvir
                  השיב לפלורידה ב נערך לאחרונה על ידי
                  #56

                  @פלורידה עיין כאן.

                  פ תגובה 1 תגובה אחרונה
                  1
                  • פ מנותק
                    פ מנותק
                    פלורידה
                    השיב לOdedDvir ב נערך לאחרונה על ידי
                    #57

                    @odeddvir

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

                    האופציה של Application.ScreenUpdating = False להבנתי אינה גורמת שלא יוצג כלל אלא היא מופיעה בזמן הריצה בלי גישה.

                    OdedDvirO תגובה 1 תגובה אחרונה
                    0
                    • OdedDvirO מנותק
                      OdedDvirO מנותק
                      OdedDvir
                      השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
                      #58

                      @פלורידה תשתמש במשתנים גלובליים.
                      צור מודול ובו תצהיר על משתנה גלובלי (ציבורי) שיכיל את חוברת הנתונים:

                      Public DataWB As Workbook
                      

                      כעת בפתיחת החוברת שלך, תריץ את הקוד הבא:

                      Set DataWB = GetObject("Hadran_Data.xlsx")
                      

                      ולפני הסגירה תריץ:

                      DataWB.Close SaveChanges:=True
                      

                      כי מסתמא תרצה לשמור את השינויים שביצעת בקובץ הדאטא.

                      בין לבין, תוכל לגשת לקובץ הדאטא מכל מקום בקוד על ידי האובייקט DataWB.

                      פ 3 תגובות תגובה אחרונה
                      2
                      • פ מנותק
                        פ מנותק
                        פלורידה
                        השיב לOdedDvir ב נערך לאחרונה על ידי
                        #59

                        @odeddvir

                        אני מנסה לכתוב איליו כך:

                        Application.Goto Workbooks(DataWB).Sheets("גיליון1").Range("a1") = Range("a1").Value
                        

                        מקבל שגיאה
                        Type mismatch

                        OdedDvirO תגובה 1 תגובה אחרונה
                        0
                        • OdedDvirO מנותק
                          OdedDvirO מנותק
                          OdedDvir
                          השיב לפלורידה ב נערך לאחרונה על ידי
                          #60

                          @פלורידה צ"ל כך:

                          DataWB.Sheets("גיליון1").Range("a1")
                          
                          תגובה 1 תגובה אחרונה
                          3
                          • פ מנותק
                            פ מנותק
                            פלורידה
                            השיב לOdedDvir ב נערך לאחרונה על ידי
                            #61

                            @odeddvir

                            כיצד ניתן להחזיר את הקובץ שיפעל כרגיל?

                            OdedDvirO תגובה 1 תגובה אחרונה
                            0
                            • OdedDvirO מנותק
                              OdedDvirO מנותק
                              OdedDvir
                              השיב לפלורידה ב נערך לאחרונה על ידי
                              #62

                              @פלורידה לא הבנתי מה כוונתך.

                              פ תגובה 1 תגובה אחרונה
                              0
                              • פ מנותק
                                פ מנותק
                                פלורידה
                                השיב לOdedDvir ב נערך לאחרונה על ידי פלורידה
                                #63

                                @odeddvir
                                כל קובץ שפתחתי אותו פעם אחת על ידי GetObject יותר לא נפתח לי כרגיל, כלומר הוא ירוץ (אני אראה קובץ מוסתר בשולחן העבודה,) אך אינו מוצג.

                                631daada-a1a4-4c90-8e60-6b67f0a0f7f4-image.png

                                ניסיתי להגדיר ככה:

                                DataWB.Visible = True

                                אך קיבלתי שגיאה: Object doesn't support this property or method

                                OdedDvirO תגובה 1 תגובה אחרונה
                                0
                                • OdedDvirO מנותק
                                  OdedDvirO מנותק
                                  OdedDvir
                                  השיב לפלורידה ב נערך לאחרונה על ידי
                                  #64

                                  @פלורידה מעניין... לא הצלחתי לשחזר את התופעה אצלי.🤔
                                  בכל מקרה, פתח את הקובץ דאטא, עבור לעורך ה-VBA על ידי מקש F11 ובחלון ה- Immediate למטה תריץ:

                                  ThisWorkbook.Windows(1).Visible = True
                                  

                                  האם כעת מוצג?

                                  פ תגובה 1 תגובה אחרונה
                                  1
                                  • פ מנותק
                                    פ מנותק
                                    פלורידה
                                    השיב לOdedDvir ב נערך לאחרונה על ידי פלורידה
                                    #65

                                    @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                                    האם כעת מוצג?

                                    אכן מוצג
                                    מה המספר (1) מבטא?
                                    על מנת שאדע כיצד לשלב אותו בקוד

                                    OdedDvirO תגובה 1 תגובה אחרונה
                                    0
                                    • OdedDvirO מנותק
                                      OdedDvirO מנותק
                                      OdedDvir
                                      השיב לפלורידה ב נערך לאחרונה על ידי
                                      #66

                                      @פלורידה את אינדקס החלון מתוך החלונות הפעילים. ניתן לציין לפי מספר או לפי כותרת:

                                      Application.Windows(1).Caption = "שמוליק"
                                      Application.Windows("שמוליק").ActiveSheet.Calculate
                                      
                                      פ תגובה 1 תגובה אחרונה
                                      0
                                      • פ מנותק
                                        פ מנותק
                                        פלורידה
                                        השיב לOdedDvir ב נערך לאחרונה על ידי
                                        #67

                                        @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                                        Application.Windows(1).Caption = "שמוליק"

                                        אם אני מבין נכון, החלון הפעיל נחשב (1) וכן הלאה.
                                        סביר להניח שכאשר אני פותח חלון על ידי vba הוא לא נחשב פעיל, ולכן הוא מקבל את הערך האחרון מבין החלונות הקיימים

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

                                        כאשר הוא יהפך לפעיל הוא יחזור להיות (1) וכל הקוד ישתבש? ואם נתתי לו שם, זה ישנה את העובדה הזו?

                                        הפיתרון לתת כותרת, גם היא צריכה קודם לדעת את המיקום באינדקס

                                        אני מרגיש שדיברתי יותר מידי... מה חסר לי בהבנה?

                                        OdedDvirO תגובה 1 תגובה אחרונה
                                        0
                                        • OdedDvirO מנותק
                                          OdedDvirO מנותק
                                          OdedDvir
                                          השיב לפלורידה ב נערך לאחרונה על ידי
                                          #68

                                          @פלורידה הבעיה שציינת היתה שבפתיחה של הדאטא - החלון מוסתר. לכן נתתי לך את הפתרון הנ"ל, והתכוונתי שתוסיף את הקוד הזה בארוע פתיחה של קובץ הדאטא, ולא בתוכנה. כך שאין לך מה להסתבך עם אינדקסים.
                                          בלאו הכי אני עדיין תוהה מה גורם לתופעה...

                                          פ תגובה 1 תגובה אחרונה
                                          1

                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום