איך עושים ארוע באקסל בעת שינוי בתא מסוים
-
אני רוצה להפעיל ארוע בשינוי נתון בתאים מסוימים
עשיתי ארוע בעת שינוי בגיליון,
אם התא הנבחר נמצא תחת שם מסוים (Place) אני מבצע את הפונקציה וממשיך,
ולאחר הפונקציה אני עושה רענון לתונים בדף (מכיוון שאני מתחבר מחדש ל DB ושולף נתונים).מה שקורה שזה יוצר לולאה אין סופית (כי התא שנמצא תחת השם מתרענן והרי בוצע שינוי בגיליון).
מה שעשיתי בנתיים, לפני ביצוע הארוע אני משנה את התא הנבחר לתא שלא מופיע תחת השם וככה אני בורח מהבעיה הנ"ל.אבל אני מחפש פתרון יותר טוב מכיוון שלאחר כל עדכון אני מוצא את עצמי במקום שונה.
-
@yits אמר באיך עושים ארוע באקסל בעת שינוי בתא מסוים:
Place
תשתמש באירוע Change, ותבדוק אם הארגומנט Target בטווח הרצוי (אני מניח שאתה מתכוון ב"שם" לשם טווח, נכון?).
כדי למנוע רקורסיה תצהיר על דגל שימנע ביצוע של האירוע עד לסוף הפעולה.Dim ToggleSuspenEvent As Boolean Private Sub Worksheet_Change(ByVal Target As Range) If ToggleSuspenEvent Then End If Intersect(Target, Me.Range("Place")) Is Nothing Then End ToggleSuspenEvent = True 'תעדכן מה שבא לך פה' ToggleSuspenEvent = False End Sub
-
@chagold אמר באיך עושים ארוע באקסל בעת שינוי בתא מסוים:
@yits
בנוגע לשאלה הראשונה
הנתונים המרועננים שמגיעים מהד"ב הם קשורים לאותה הטבלה? כי אם לא , אז תעביר את הטבלה לגליון אחר.אני מעוניין שמי שעובד על הקובץ יראה את הנתונים המעודכנים לפניו (בצד ימין).
-
@dovid אמר באיך עושים ארוע באקסל בעת שינוי בתא מסוים:
ותבדוק אם הארגומנט Target בטווח הרצוי (אני מניח שאתה מתכוון ב"שם" לשם טווח, נכון?).
זה מה שאני עושה כרגע.
כדי למנוע רקורסיה תצהיר על דגל שימנע ביצוע של האירוע עד לסוף הפעולה.
ניסיתי את זה בעבר , ולא עזר,
הבעיה שעדכון הנתונים מבוצע ע"י Refresh ובנתיים הפונקציה מסיימת ומחזירה את הדגל ל False.
ולאחר חצי שניה או משהו כזה נגמר העדכון ושוב הפונקציה קופצת. -
@dovid אמר באיך עושים ארוע באקסל בעת שינוי בתא מסוים:
תשתמש באירוע Change.
האם התכוונת שזה יפתור לי את הבעיה השניה.
כי ברגע שאני משנה ולוחץ Enter אין לי כבר אפשרות לדעת היכן בוצע השינוי,
אלא א"כ זה מתוך רשימה שאז הוא מבצע אירוע של Change ונשאר באותו תא. -
@yits אמר באיך עושים ארוע באקסל בעת שינוי בתא מסוים:
@dovid אמר באיך עושים ארוע באקסל בעת שינוי בתא מסוים:
תשתמש באירוע Change.
האם התכוונת שזה יפתור לי את הבעיה השניה.
כי ברגע שאני משנה ולוחץ Enter אין לי כבר אפשרות לדעת היכן בוצע השינוי,
אלא א"כ זה מתוך רשימה שאז הוא מבצע אירוע של Change ונשאר באותו תא.לא הבנתי אותך. רצית אירוע בעת שינוי נתון בתא מסוים, אז זה האירוע שאתה צריך. לא אירוע של שינוי בחירה (Selction_Change). זה מביא את הכתובת הנכונה גם במקרה של אנטר.
-
אני יסביר באריכות
יש לי גליון אקסל שהגדרתי תאים לפי מקומות ישיבה בבית הכנסת,
יש לי DB עם רשימת המתפללים שבקשו מקום (עבור ימים נוראים וכדו'),כל תא שהוגדר אפשר להכניס בו שם משתמש מתוך רשימה,
הרשימה נלקחת מצד ימין של הגיליון (שם מופיעים לי שמות המתפללים ומספר המקומות שהם בקשו),לאחר בחירה של מתפלל מתוך הרשימה קופץ ארוע,
לאחר מכן מתבצע עדכון אוטמטי לגיליון מקושר (DlookUp לתא),
ומתבצע עדכון ל DB,
ועכשיו אנחנו עושים רענון נתונים (של המתפללים שאין להם מקום). -
@dovid אמר באיך עושים ארוע באקסל בעת שינוי בתא מסוים:
לא הבנתי אותך. רצית אירוע בעת שינוי נתון בתא מסוים, אז זה האירוע שאתה צריך. לא אירוע של שינוי בחירה (Selction_Change). זה מביא את הכתובת הנכונה גם במקרה של אנטר.
אתה צודק באמת אני השתמשתי ב Change, ולא כמו שכתבתי.
בצעתי עריכה בשאלה