רשימה נפתחת עם בחירה מרובה

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

בואו נסתכל על כמה יישומים טיפוסיים של רשימה מרובת בחירה כזו.

אפשרות 1. אופקי

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

רשימות נפתחות בתאים C2:C5 בדוגמה זו נוצרות בצורה סטנדרטית, כלומר

  1. בחר בתאים C2:C5
  2. לשונית או תפריט נתונים לבחור צוות אימות נתונים
  3. בחלון שנפתח, בחר אפשרות רשימה וציין כטווח מָקוֹר תאים עם נתוני מקור עבור רשימה A1:A8

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

Private Sub Worksheet_Change(ByVal Target As Range) בשגיאה המשך הבא If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset (0, 1)) = 0 ואז Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

במידת הצורך, החלף את הטווח הרגיש של הרשימות הנפתחות C2:C5 בשורה השנייה של קוד זה בטווח שלך.

אפשרות 2. אנכי

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

זה נעשה בדיוק באותו אופן, אבל קוד המאקרו של המטפל משתנה מעט:

Private Sub Worksheet_Change(ByVal Target As Range) בשגיאה המשך הבא If Not Intersect(Target, Range("C2:F2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset (1, 0)) = 0 ואז Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

שוב, במידת הצורך, החלף את הטווח הרגיש של הרשימות הנפתחות C2:F2 ברשימות שלך בשורה השנייה של קוד זה.

אפשרות 3. עם צבירה באותו תא

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

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

Private Sub Worksheet_Change(ByVal Target As Range) בשגיאה המשך הבא If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 ו-oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If סיום משנה  

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

  • כיצד ליצור רשימה נפתחת פשוטה בתא של גיליון אקסל
  • רשימה נפתחת עם תוכן
  • רשימה נפתחת עם אפשרויות חסרות שנוספו
  • מהן פקודות מאקרו, כיצד להשתמש בהן, היכן להכניס קוד מאקרו ב-Visual Basic

השאירו תגובה