-
אני מזין נתונים לטבלה קיימת, דרך vba
למעשה אני צריך שבכל הרצה של קוד הוא יוסיף שורה ויזין לתוכה ערכים.
הצורה שמיד קופצת לי בראש היא :
x = ספירה כמה שורות יש בטבלה,
הליכה לשורה x
הוספת שורה מתחת
הזנת הנתונים בשורה x +1
אני מרשה לעצמי להניח שיש דרך פשוטה יותר
עריכה: אולי ישנה גישה ל
form
של הטבלה, דרך vba? -
@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
-
@one1010 אמר בהזנת נתונים לטבלה קיימת:
@odeddvir זה לטינית בשבילי אבל אתה לא אשם...
בגדול זה ממש ברור.
- בשורה 5 יש (tableName) תשנה את זה ל ("טבלה1") או מה שלא יהיה שם הטבלה.
- הריצה מתייחסת לשש עמודות העמודות של הטבלה. (העמודה הראשונה היא 0) זה בגדול.
טיפלתי בזה בהתאם לצרכים שלך.
אני מעלה לך קובץ שפחות או יותר הוא יכול לעזור לך.
אתה צריך לדעת בעצמך יותר מה אתה רוצה בשביל לשפר את זה.הוראות:
תפעיל את הקובץ, גש למפתחים>ויזואל בייסיק>חוברת עבודה זו, תשנה שם את השורות הרלוונטיות. (בתוך מרכאות)אחר כך תחזור לגליון, בתא O3 (צבוע בכתום) תכתוב 1, תסגור את החוברת ותפעיל שוב. בהצלחה.
-
@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
-