בדיקת קיום רשומה בטבלה

  • פותח הנושא ל13
  • פורסם בתאריך

ל13

New member
בדיקת קיום רשומה בטבלה


הי חברים,

צריך עזרה קטנה מכם:
יש לי טבלה של 3 עמודות: Category, Type, Name, שבכל שורה מופיע שילוב ייחודי של טקסט לפי 3 הפרמטרים הנ"ל.

ליד הטבלה ישנה אפשרות להוסיף במאקרו רשומה חדשה לטבלה עם שילוב חדש וייחודי של 3 הפרמטרים.

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

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

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

מהי הדרך הכי פשוטה ויעילה לכתוב את המאקרו?

מצורף קובץ דוגמא.

תודה מראש
 

ל13

New member
שכחתי להגיד...

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

iyyi

New member
אתה יכול לעשות משהו כזה...

אתה יכול לטעון את הפרמטרים של הרשומה החדשה למשתנים, ואז באמצעות פונקציית הגיליון COUNTIFS, בהנחה שגרסת האקסל שלך תומכת בפונקציה זאת, לראות אם הרשומה כבר קיימת.
המקרו המצורף מדגים זאת. טעינת המשתנים נעשית ידנית במקרו. במקרו שלך תיקח את זה מהמקרו השני.
אם הרשומה קיימת הוא מוציא הודעה. אם לא הוא מוסיף אותה.
כדי לנסות מצבים שונים, שנה בקוד המקרו את ערכי הפרמטרים. להלן קוד המקרו:
קוד:
Sub CheckNewData()
' Load your new record parametes
c = "aaa"
t = "eee"
n = "qqq"
Nr = Cells(Rows.Count, 7).End(xlUp).Row + 1
cnt = WorksheetFunction.CountIfs([A:A], c, [B:B], t, [C:C], n)
If cnt > 0 Then
    MsgBox "רשומה קיימת"
    Exit Sub
Else
    Cells(Nr, 7) = c: Cells(Nr, 8) = t: Cells(Nr, 9) = n
End If
End Sub
 

ל13

New member
תודה אבל נראה לי שיש לנו איזושהי אי הבנה...

המאקרו שכתבת כאן מוסיף לי את הרשומה שציינת במאקרו (aaa eee qqq) מתחת לשדות של הוספת רשומה חדשה.... כל הפעלת מאקרו מוסיפה את הצירוף הזה פעם אחר פעם...
אני צריך שבהקדלת צירוף מסוים בשדות G2, H2, I2, המאקרו יבדוק אם צירוף זה כבר קיים בטבלה שבעמודות ABC ולא יאפשר את הוספתו לטבבלה אם הוא כבר קיים בה...
 

iyyi

New member
מצורף קובץ מתוקן

בקובץ המצורף לחיצה על כפתור "הוסף רשומה" תבדוק אם רשומת הנתונים בתאים G2:I2 קיימת בעמודות A:C. אם כן מופיעה הודעה. אם לא מתווספת הרשומה לעמודות A:C למטה.
להלן קוד המקרו:
קוד:
Sub AddNew()
Nr = Cells(Rows.Count, 1).End(xlUp).Row + 1
cnt = WorksheetFunction.CountIfs([A:A], [g2], [B:B], [h2], [C:C], [I2])
If cnt > 0 Then
    MsgBox "רשומה קיימת"
    Exit Sub
Else
   Range(Cells(Nr, 1), Cells(Nr, 3)) = [G2:i2].Value
End If
End Sub


מצורף קובץ הדגמה
 
למעלה