העתקה והדבקה ב VBA
העתקה והדבקה הן מהפעולות הנפוצות באקסל.
איך עושים אותן ב VBA?
פעולת ההעתקה נעשית על ידי שימוש בפקודה copy
Range("a3").Copy
פעולת ההדבקה נעשית על ידי שימוש בפקודה ActiveSheet.Paste
Range("a3").Copy Range("a4").Select ActiveSheet.Paste Application.CutCopyMode = False
הקוד שלעיל העתיק את תוכן התא A3 והדביק אותו לתא A4.
הפקודה Application.CutCopyMode = False מבטלת את מצב ההעתקה (הקווקוו המקיף) של תא A3.
טיפ:
תוכלו להשתמש בקיצור הבא כדי להדביק את הערך בטווח המבוקש (במקרה זה, בתא A4):
Range("a3").Copy Range("a4")
לחילופין, תוכלו להשתמש בקוד:
Range("a4").Value = Range("a3").Value
שימו לב,
למרות ששני הקודים שלעיל נותנים תוצאה זהה, דרך פעולתם שונה לחלוטין:
בקוד הראשון העתקנו את הערך שנמצא בתא A3 והדבקנו אותו בתא A4.
בקוד השני, לעומת זאת, הזנו לתא A4 את הערך שנמצא בתא A3 באמצעות פעולת שיוויון.
הדבקה מיוחדת
בחלקו הקודם של המאמר דיברנו על העתקה והדבקה רגילות ב VBA. כעת נציג את הקוד להדבקה מיוחדת
Range("A1").Copy Range("B1").PasteSpecial Paste:=xlPasteValues
בדוגמה שלעיל, בחרתי בהדבקת ערכים (xlPasteValues).
אם תקליטו את פעולה ההדבקה המיוחדת, תקבלו את הקוד הבא:
Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False
שימו לב שיש כאן שלוש אפשרויות נוספות, כפי שמופיעים בחלונית ההדבקה המיוחדת באקסל:
- Paste – מציין את שיטת ההדבקה. בדוגמה שלעיל: ביקשנו להדביק כערכים,
אולם ניתן לבחור בכל אחת מהאפשריות שקיימות בחלונית ההדבקה המיוחדת כגון נוסחאות, עיצובים ועוד
(אני ממליצה לכם להקליט מאקרו כדי לבדוק מהו התחביר לשאר פקודות ההדבקה (נוסחאות, עיצובים וכו'). - Operation – מאפשר להוסיף, להחסיר, להכפיל או לחלק ערך מועתק לטווח נבחר.
- Skip Blanks – אם קיימים תאים ריקים בטווח שהעתקנו, ניתן לבחור שלא להדביקם ביעד.
- Transpose – מאפשר לבצע חילוף בין עמודות לשורות.
וכמה מילים על הסימן :=
בוודאי שמתם לב לסימן := שמופיע בחלק מן הפקודות.
סימן זה משמש להשמת ערך לאופרטור מסוים, מבין כל רשימת האופרטורים הקיימים לפונקציה, תוך שימוש בשמו,
וכן למקרים שבהם אנו מעוניינים להשתמש רק בחלק מן האופרטורים הקיימים, או לשנות את סדרם.
ככלל, האופרטורים אמורים להופיע בסדר מסוים, לדוגמה, בעת השימוש בהדבקה מיוחדת,
עלינו לבחור ראשית את סוג ההדבקה (ערכים/ נוסחאות וכו'), לאחר מכן לבחור האם אנו מעוניינים בביצוע פעולה חשבונית כלשהי,
בשלב הבא נבחר האם לדלג על ריקים (True או False) ולסיום האם לבצע חילוף (True או False), כפי שתוכלו לראות בדוגמה שלהלן:
Selection.PasteSpecial xlPasteValues, xlNone, False, False
הפקודה שלעיל בחרה בהדבקת ערכים (xlPasteValues), ללא ביצוע פעולה חשבונית (xlNone), ללא דילוג על תאים ריקים (False) וללא ביצוע חילוף (False).
הבה נבחן מקרה אחר, שבו כל מה שאנו מבקשים הוא לבצע חילוף. מכיוון שאנו לא מעוניינים לשנות את ברירות המחדל של האופרטורים האחרים,
נוכל להשאיר במקומם "שומרי מקום", וזאת באמצעות השימוש בפסיקים, ולדאוג לכך שהפקודה לביצוע חילוף תהיה האופרטור הרביעי, כך:
Selection.PasteSpecial , , , True
שימו לב לשלושת הפסיקים שמופיעים אחרי פקודת ההדבקה המיוחדת:
הם באים במקום סוג ההדבקה, ביצוע הפעולה החשבונית ודילוג על תאים ריקים, כך שהערך True שנועד לבחור בביצוע חילוף, יהיה האופרטור הרביעי.
לחילופין, ועל מנת שהקוד יהיה קריא יותר, נוכל להשתמש בשם האופרטור, מבלי להתחשב במיקומו המקורי:
Selection.PasteSpecial Transpose:=True