@אוריי כך זה לא יעבוד, האופרטור Me זמין רק במופע של הטופס הפעיל ושבו כתוב הקוד VBA.
אתה פותח טופס אחר ולכן אתה צריך לציין את הנתיב המלא שלו:
DoCmd.OpenForm "as"
Forms("as")!Libraries.Pages("Page3").SetFocus
@אוריי כך זה לא יעבוד, האופרטור Me זמין רק במופע של הטופס הפעיל ושבו כתוב הקוד VBA.
אתה פותח טופס אחר ולכן אתה צריך לציין את הנתיב המלא שלו:
DoCmd.OpenForm "as"
Forms("as")!Libraries.Pages("Page3").SetFocus
כפי שציינתי קודם, ניתן לעבור לפי מספר הכרטסת (בסיס 0)
Me.Libraries = 2 ' עובר לכרטיסיה השלישית
אפשר גם לציין את שם הכרטיסיה בפירוש:
Me.Libraries.Pages("Page3").SetFocus 'עובר לכרטיסיה השלישית
@אוריי אמר בשאלה באקסס // שאילתא לפי שם כפתור:
Page1
Page2
וכו'
אלו שמות העמודים (ה"חוצצים" או הכותרות) של הפקד, מה שם הפקד שמכיל את כל העמודים?
@אוריי מה שם פקד הכרטיסיה בטופס?
@אוריי באקסס ניתן לכתוב ולקרוא למשתנה עם שם הפקד של הכרטיסיה, על מנת לקבל את מספר הכרטיסת הפתוחה או לעבור לכרטסת מסויימת. הכרטיסיות ממוספרות עם בסיס 0, ז"א הכרטסת הראשונה מספרה 0, השנייה 1 וכו'.
ניתן לעבור אל כרטסת על ידי כתיבה למשתנה עם שם הפקד.
למשל כדי לעבור לכרטסת השלישית, נכתוב את המספר 2:
me.TabCtrName = 2
כדי לבדוק איזה כרטסת מוצגת כרגע, אפשר לקרוא את הערך בפקד
if me.TabCtrlName = 1 then ... 'אם הכרטסת השנייה פתוחה
@OdedDvir אני מרשה לעצמי להזכיר לך שפתיחה של שאילתה באופן של DoCmd.OpenQuery עלולה לאפשר למשתמש לשנות נתונים בטבלאות, ואם זו לא ההתנהגות שאתה מחפש, תציין זאת במפורש בפתיחה:
DoCmd.OpenQuery "qq", acViewNormal, acReadOnly
@אוריי אמר בשאלה באקסס // שאילתא לפי שם כפתור:
רק עוד שאלה קטנה אם אני צריך לעשות את אותם הפעולות בטופס מה אני משנה ולמה?
אם זה הטופס הפעיל פשוט תכתוב
Me.Requery
אם זה טופס משנה של הטופס הפעיל, ושם הפקד של טופס המשנה הוא foo
Me.foo.Form.Requery
אם זה טופס אחר (שלא פעיל) אפשר באופן דומה לשאילתא
DoCmd.SelectObject acForm, "MyFormName"
DoCmd.Requery
או
Forms("MyFormName").Requery
@אוריי יפה. אבל נראה לי שאם השאילתה עדיין לא פתוחה תקבל שגיאה.. נכון?
@אוריי תסגור את השאילתא הפתוחה ותפתח אותה מחדש
docmd.Close acQuery, "qq"
'תעדכן את השאילתא
docmd.OpenQuery "qq"
תנסה אולי הקוד הבא יעבוד (בלי לסגור ולפתוח)
DoCmd.SelectObject acQuery, "qq"
DoCmd.Requery
@אוריי תפרט בבקשה מה הקוד VBA שמציג את השאילתה (בארוע לחיצה על הפקד)
@אוריי אתה צריך לקרוא למתודה על האובייקט שאתה מעדכן
היכן מוצגת השאילתא? האם בטופס משנה או בטופס חדש?
@אוריי תשתמש במתודה Requery
מנסיוני, Access 2019 היא לא תוכנה עם יותר באגים מקודמותיה
לי זה נראה כמו שגיאה בתאימות שפה.
@איש-חסיד צור קשר בפרטי במייל שלי odeddvir-n@gmail תמחק את המקף ותוסיף .com
@גימפל
אם כך זה קל יחסית,
כדי לבחור את השורות הזוגיות, נשתמש במספר השורה הנוכחית ונכפיל ב-2. צריך רק לשים לב שאם יש שורת כותרת אז יש היסט של 1 ולכן נפחית 1 ממספר השורה. עכשיו יש לנו את מספר השורה, והעמודה היא קבועה, למשל 1, פשוט נשלוף את ערך התא על ידי שימוש ב INDIRECT ו-ADDRESS:
אתה בטח יכול לחשב מה הנוסחה בעמודה הבאה (בתא הראשון)
=INDIRECT(ADDRESS((ROW(C2)-1)*2,1))
שים לב ששם הפחתתי 1 לפני ההכפלה
@אוריי אמר בדיון המשך: VLOOKUP מול INDEX-MATCH באקסל:
@OdedDvir ברור שכוונתי הוא שמציינים התאמה מדוייקת.
הבעיה מתחילה כששוכחים
וזה הרבה יותר קל ופשוט משילוב נוסחאות ובמיוחד למשתמש הפשוט... מאשר לחבר 2 נוסחאות ולא להתבלבל.
אני מסכים, ודעבד כמר עבד
הנושא הועלה בקצרה כאן אך לא היתה הכרעה בו.
כהמשך למה ש @אוריי אמר בלוג טריוויה בימות המשיח:
לא נכון למיטב ידיעתי אין שום צורך למיין תבדקו שוב עובד בכל מצב
המצב היחיד שהנוסחה הזו תחזיר שגיאות הוא רק היכן שיש כפולות בת.ז אבל אם אין כפולות סה''כ מחליפים את העמודות זה לא מסובך בכלל (תמיד אפשר להחזיר)..
אדייק את דבריי,
אם לא מציינים את הפרמטר הרביעי של VLOOKUP (טווח ההתאמה), אז ברירת המחדל היא לאפשר גם התאמה שאינה מדוייקת, דהיינו הערך הקרוב ביותר, ואז ברגע שהפונקציה מגיעה לערך הראשון שעובר את הערך המבוקש, היא מחזירה את הערך בשורה שמעליו (מה שעלול להוביל לשגיאות מאוד לא נעימות, כמו במחירי מוצרים למשל)
רק אם זכרת לציין את הפרמטר הרביעי כ-FALSE - אתה מסודר.
גם בנושא ביצועים יש שיפור מה לשימוש ב INDEX-MATCH על פני VLOOKUP, כי אם עמודת החיפוש ועמודת התוצאה רחוקות זו מזו - VLOOKUP מעבדת את כל העמודות שבאמצע, ואילו INDEX-MATCH רק את שתי העמודות (החיפוש והתוצאה).
עיין כאן כמה מבחני השוואת מהירות מעניינים (לפעמים ההבדל בזמן החישוב הוא במאות אחוזים!!)
יש עוד כמה יתרונות, להמשך קריאה בנושא עיין כאן או חפש בגוגל...
@אוריי אמר בלוג טריוויה בימות המשיח:
אני לא מבין אותך למה להשתמש בשילוב נוסחאות הזו של MATCHו- INDEX אם אפשר להשתמש בנוסחה פשוטה מאד של VLOOKUP ??
פשוט בגלל שלפונקציה VLOOKUP יש דרישה מקדימה שהנתונים יהיו תחילה ממויינים בסדר עולה, מה שדורש עוד עבודה לאחר הדבקת הנתונים (למיין את הרשימה לפי מספרי ת.ז.)
אכן, אפשר להשתמש בפונקציה המשופרת התאומה XLOOKUP שבה אין את הדרישה הזו, אבל גם בה עדיין יש איזה תנאי מעצבן שהעמודה שבה הערך המבוקש תהיה משמאל לעמודת החיפוש וזה לא כך בדוגמא שלמעלה, בה הערך המבוקש (שם) נמצא בצד ימין של עמודת החיפוש (תעודת זהות), וכדי שהיא תעבוד צריך לרשום את תעודות הזהות בעמודה A ואת השמות בעמודה B.
בקיצור, כדי לפתור את הבעיה במצב הקיים למעלה מבלי למיין או לשנות סדר עמודות - העדפתי את הדרך הזו.