שלום,

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

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

נא תשומת לב - המדריך הזה הוא המשך, כלומר, הוא מתבסס על מה שהראתי במדריך הקודם. (אז אם לא קראת אותו…זה הזמן).

הסבר כללי - מה אנחנו הולכים לעשות

בדיוק כמו במדריך הקודם, נעשה זאת בשלבים ברורים, גם בוידאו, וגם בתמונות.

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

אז קודם כל, נגרום למחשב “לזכור” את התא שבו נמצא המשתמש כרגע.

מייד אחרי כן - נבדוק אם התא שבו הוא נמצא - הוא בתוך העמודה שבה אנחנו רוצים לתת לו השלמה אוטומטית ( נניח, לצורך הדוגמא, אנחנו רוצים את עמודה B, והמשתמש לחץ על תא B2 עם העכבר )

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

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

אז קדימה לעבודה…

שלב 1 - יוצרים בסיס למעקב אחרי המשתמש

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

אם המשתמש ילך לתא A1 - אז נרשום לעצמנו על ה-“דף” , את הכתובת A1.

ואם הוא ב-A2, אז נרשום A2

וכן הלאה.

( בשפה המקצועית, זה נקרא משתנה בזיכרון.)

  • לחצו על לשונית מפתחים ( Developers ) 

  • לחצו על כפתור Visual Basic

  • בצד שמאל של המסך - לחצו על שם הקובץ שלנו .

  • עכשיו לחצו על Modules  > ואז לחיצה כפולה על Module1 

    לבחור את Module1
    לבחור את Module1

 

  • עכשיו הקלידו בחלון הקוד, את המשפט הבא

Public C as String

ממש כך :

פשוט להקליד
פשוט להקליד
פשוט להקליד

שלב 2 - לעקוב אחרי התא שבו נמצא המשתמש

כעת, בחלון בצד -

  • לחיצה כפולה על - Microsoft Excel Objects
  • לחיצה כפולה על הגיליון שבו רוצים שהעסק יעבוד  ( בדוגמא שלי - “גיליון1”)

 

בחר בגיליון המתאים
בחר בגיליון המתאים
בחר בגיליון המתאים

  • העתק והדבק את קטע הקוד הבא
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If (Target.Column = 2) Then

C = Target.Address
UserForm1.Show

End If

End Sub
  • עכשיו - שנה את המספר 2 , אל המספר של העמודה שעליה אתה רוצה שזה יעבוד.

  • לדוגמא  - בשביל עמודה A - הקלד 1

  • דוגמא נוספת - בשביל עמודה C - הקלד 3

    שנה את מספר העמודה באקסל
    שנה את מספר העמודה באקסל
    שנה את מספר העמודה באקסל

 

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

  • לחץ לחיצה כפולה על הטופס

    בחר את הטופס
    בחר את הטופס
    בחר את הטופס

  • לחץ לחיצה כפולה על מקום רייק בטופס

ואז העתק והדבק את הקטע הבא של הקוד   מתחת לקוד הקיים (לא לערבב עם הקוד הקיים )

Private Sub UserForm_Initialize()
Me.ComboBox1.ControlSource = C
End Sub
  • שמור את הקובץ, ונסה את זה בפועל.
  • למעוניינים - אני מראה בסרטון כיצד להגביל זאת לשורות ספציפיות.

בהצלחה !