מחיקת שורה בקסל

צבתות

New member
מחיקת שורה בקסל

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

AO

New member
צרפתי דוגמא

אני מקווה שהבנתי למה אתה מתכוון יש כאן שימוש באימות נתונים + מאקרו למחיקת השורה. אם משהו לא מובן אז תשאל. אלון
 

צבתות

New member
וואו...

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

AO

New member
תבדוק כל דבר בניפרד

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

צבתות

New member
כן, בקשר לאזור ההדפסה...

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

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

AO

New member
זה קיים בהצעה המקורית שלי

תכנס להגדרה של אימות הנתונים - תראה שהיא מפנה לשם. תבדוק את ההגדרות של השם ותראה שזה שם דינמי שמשתנה עפ"י מספר השורות. השתמשתי ב OFFSET ו COUNTA כדי להגדיר את השם. אלון
 
שלום אלון

לא הצלחתי להבין איך זה עובד. אתה יכול בבקשה להסביר? תודה, איציק
 

AO

New member
הגדרת שם דינמי

יש באקסל פונקציה שנקראת offset הפונקציה הזו מחזירה טווח של תאים יש לפונקציה 5 פרמטרים 1. תא הייחוס - ממנו מתחילה הפונקציה לבדוק את מיקום הטווח. 2. המרחק בשורות של תחילת הטווח מתא הייחוס 3. המרחק בטורים של תחילת הטווח מתא הייחוס 4. גובה הטווח 5.רוחב הטווח במקום להגדיר טווח עבור שם אני השתמשתי בפונקציה הזו כדי להגדיר את השם והחלפתי את הפרמטר הרביעי בפונקציה ב COUNTA וככה גובה הטווח משתנה עפ"י מספר הרשומות בטווח. אח"כ השתמשתי בשם שיצרתי לצורך אימות הנתונים ויצירת רשימה ניפתחת בתא. את הנוסחה אפשר לראות אם תפתח את הקובץ ששלחתי -תיכנס לתפריט שבו מגדירים שמות בגליון ותבחר את השם היחידי שיש שם אלון
 
יפה מאוד../images/Emo142.gif

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

צבתות

New member
אלון, יש באג!

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

AO

New member
לא בדיוק באג

אימות נתונים עובד ככה - עד שתיבחר ערך חדש הוא ימשיך להציג את הערך הישן שהוקלד בו שני פתרונות אפשריים לפחות: 1. שהמאקרו בסוף התהליך ייגש לתא עם מספר השורה ויכתוב שם מספר אחר או "" (האמת שלא ניראה לי הפתרון הזה). 2. להוסיף למאקרו IF כך שאם הוא לא מוצא את מספר השורה הזה שלא יעשה כלום. 2 - ניראה לי יותר פשוט ונכון. אלון
 
למעלה