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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          @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 מנותק
            O מנותק
            one1010
            השיב לOdedDvir ב נערך לאחרונה על ידי
            #5

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

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

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

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

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

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

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

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

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

              חוברת1.xlsm

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

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

                בודק ואעדכן

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

                  @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
                  • dovidD dovid העביר נושא זה מ-תכנות ב-

                  בא תתחבר לדף היומי!
                  • התחברות

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

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