תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    הזנת נתונים לטבלה קיימת

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

      אני מזין נתונים לטבלה קיימת, דרך vba

      למעשה אני צריך שבכל הרצה של קוד הוא יוסיף שורה ויזין לתוכה ערכים.

      הצורה שמיד קופצת לי בראש היא :

      x = ספירה כמה שורות יש בטבלה,
      הליכה לשורה x
      הוספת שורה מתחת
      הזנת הנתונים בשורה x +1

      אני מרשה לעצמי להניח שיש דרך פשוטה יותר

      עריכה: אולי ישנה גישה לform של הטבלה, דרך vba?

      OdedDvir O 2 תגובות תגובה אחרונה תגובה ציטוט 1
      • OdedDvir
        OdedDvir @פלורידה נערך לאחרונה על ידי

        @פלורידה לדעתי הדרך שחשבת עליה היא טובה.

        פ תגובה 1 תגובה אחרונה תגובה ציטוט 1
        • O
          one1010 @פלורידה נערך לאחרונה על ידי

          @פלורידה אמר בהזנת נתונים לטבלה קיימת:

          למעשה אני צריך שבכל הרצה של קוד הוא יוסיף שורה ויזין לתוכה ערכים

          זה אמור גם לעזור לפרויקט 'שלנו'...
          איך אתה מבצע את רצף הפעולות האלו?!

          OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 1
          • OdedDvir
            OdedDvir @one1010 נערך לאחרונה על ידי

            @one1010 אמר בהזנת נתונים לטבלה קיימת:

            איך אתה מבצע את רצף הפעולות האלו?!

            הקוד הבא מאפשר להוסיף מערך של ערכים לטבלה בעלת שם בגליון כלשהו:

            Public Sub AddRowToTable(sheet As Worksheet, tableName As String, rowData() As Variant)
                Dim lastRowNumber As Integer
                Dim lastRowRange As Range
                
                With sheet.ListObjects(tableName)
                    .ListRows.Add
                    lastRowNumber = .ListRows.Count
                    Set lastRowRange = .ListRows(lastRowNumber).Range
                End With
                
                With lastRowRange
                    Dim i As Integer
                    For i = 0 To UBound(rowData)
                        If i < .Columns.Count Then .Cells(1, i + 1) = rowData(i)
                    Next i
                End With
            End Sub
            

            דוגמת ריצה:

            Dim values(6) As Variant
            values(0) = "מתתיהו"
            values(1) = 8
            values(2) = "אלעזר"
            AddRowToTable ActiveSheet, "table1", values
            
            O תגובה 1 תגובה אחרונה תגובה ציטוט 2
            • O
              one1010 @OdedDvir נערך לאחרונה על ידי

              @odeddvir זה לטינית בשבילי אבל אתה לא אשם...

              פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • פ
                פלורידה @one1010 נערך לאחרונה על ידי פלורידה

                @one1010 אמר בהזנת נתונים לטבלה קיימת:

                @odeddvir זה לטינית בשבילי אבל אתה לא אשם...

                בגדול זה ממש ברור.

                1. בשורה 5 יש (tableName) תשנה את זה ל ("טבלה1") או מה שלא יהיה שם הטבלה.
                2. הריצה מתייחסת לשש עמודות העמודות של הטבלה. (העמודה הראשונה היא 0) זה בגדול.

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

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

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

                חוברת1.xlsm

                O תגובה 1 תגובה אחרונה תגובה ציטוט 1
                • O
                  one1010 @פלורידה נערך לאחרונה על ידי

                  @פלורידה אין עליך!

                  בודק ואעדכן

                  תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • פ
                    פלורידה @OdedDvir נערך לאחרונה על ידי

                    @odeddvir אמר בהזנת נתונים לטבלה קיימת:

                    @פלורידה לדעתי הדרך שחשבת עליה היא טובה.

                    למעשה הפקודה הזו עבדת מידי לאט. משהו כמו 3 שניות עד לסיום הפקודה.

                    אני מצרף את הקוד עד עתה:

                    ' הצהרה על משתנה גלובלי
                    Public DataWB As Workbook
                    ' פונקציה לשליפה של קוד לפי פרמטרים 
                    Public Function m_kata(wordText As String) As Variant
                    masecet = ActiveSheet.Range("A146")
                    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
                    
                    'פונקציה להכנסת הקוד בגליון מסויים בטבלה מסויימת
                    Public Function AddRowToTable(sheet As Worksheet, tableName As String, rowData() As Variant)
                        Dim lastRowNumber As Integer
                        Dim lastRowRange As Range
                        
                        With Sheets("admin").ListObjects("data")
                            .ListRows.Add
                            lastRowNumber = .ListRows.Count
                            Set lastRowRange = .ListRows(lastRowNumber).Range
                        End With
                        
                        With lastRowRange
                            Dim i As Integer
                            For i = 0 To UBound(rowData)
                                If i < .Columns.Count Then .Cells(1, i + 1) = rowData(i)
                            Next i
                        End With
                    End Function
                    
                    
                    sub קריאה_לקודים_הקודמים()
                    
                    Dim values(6) As Variant
                    mezaheH = 1
                    values(0) = mezaheH
                    values(1) = m_kata(Selection)
                    values(2) = Date
                    AddRowToTable ActiveSheet, "table1", values
                    End sub
                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • הועבר מ תכנות ע"י  dovid dovid 
                    • 1 / 1
                    • פוסט ראשון
                      פוסט אחרון
                    בא תתחבר לדף היומי!