שתף באמצעות


כיצד לבחור תאים/טווחים באמצעות פרוצדורות Visual Basic ב- Excel

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

Method             Arguments
------------------------------------------
Activate           none
Cells              rowIndex, columnIndex
Application.Goto   reference, scroll
Offset             rowOffset, columnOffset
Range              cell1
                   cell1, cell2
Resize             rowSize, columnSize
Select             none
Sheets             index (or sheetName)
Workbooks          index (or bookName)
End                direction
CurrentRegion      none

הדוגמאות במאמר זה משתמשות במאפיינים שבטבלה הבאה.

Property         Use
---------------------------------------------------------------------
ActiveSheet      to specify the active sheet
ActiveWorkbook   to specify the active workbook
Columns.Count    to count the number of columns in the specified item
Rows.Count       to count the number of rows in the specified item
Selection        to refer to the currently selected range

כיצד לבחור תא בגליון העבודה הפעיל

כדי לבחור את תא D5 בגליון העבודה הפעיל, באפשרותך להשתמש באחת מהדוגמאות הבאות:

ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select

כיצד לבחור תא בגליון עבודה אחר באותה חוברת עבודה

כדי לבחור את תא E6 בגליון עבודה אחר באותה חוברת עבודה, באפשרותך להשתמש באחת מהדוגמאות הבאות:

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

לחלופין, באפשרותך להפעיל את גליון העבודה ולאחר מכן להשתמש בשיטה 1 לעיל כדי לבחור את התא:

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

כיצד לבחור תא בגליון עבודה בחוברת עבודה אחרת

כדי לבחור תא F7 בגליון עבודה בחוברת עבודה אחרת, באפשרותך להשתמש באחת מהדוגמאות הבאות:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

לחלופין, באפשרותך להפעיל את גליון העבודה ולאחר מכן להשתמש בשיטה 1 לעיל כדי לבחור את התא:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

כיצד לבחור טווח תאים בגליון העבודה הפעיל

כדי לבחור את הטווח C2:D10 בגליון העבודה הפעיל, באפשרותך להשתמש בכל אחת מהדוגמאות הבאות:

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

or

ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select

or, alternatively, it could be simplified to this:

Range(Cells(2, 3), Cells(10, 4)).Select

כיצד לבחור טווח תאים בגליון עבודה אחר באותה חוברת עבודה

כדי לבחור את הטווח D3:E11 בגליון עבודה אחר באותה חוברת עבודה, באפשרותך להשתמש באחת מהדוגמאות הבאות:

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

לחלופין, באפשרותך להפעיל את גליון העבודה ולאחר מכן להשתמש בשיטה 4 לעיל כדי לבחור את הטווח:

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

כיצד לבחור טווח תאים בגליון עבודה בחוברת עבודה אחרת

כדי לבחור את הטווח E4:F12 בגליון עבודה בחוברת עבודה אחרת, באפשרותך להשתמש באחת מהדוגמאות הבאות:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

לחלופין, באפשרותך להפעיל את גליון העבודה ולאחר מכן להשתמש בשיטה 4 לעיל כדי לבחור את הטווח:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

כיצד לבחור טווח בעל שם בגליון העבודה הפעיל

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

Range("Test").Select
Application.Goto "Test"

כיצד לבחור טווח בעל שם בגליון עבודה אחר באותה חוברת עבודה

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

Application.Goto Sheets("Sheet1").Range("Test")

לחלופין, באפשרותך להפעיל את גליון העבודה ולאחר מכן להשתמש בשיטה 7 לעיל כדי לבחור את הטווח בעל השם:

Sheets("Sheet1").Activate
Range("Test").Select

כיצד לבחור טווח בעל שם בגליון עבודה בחוברת עבודה אחרת

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

Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

לחלופין, באפשרותך להפעיל את גליון העבודה ולאחר מכן להשתמש בשיטה 7 לעיל כדי לבחור את הטווח בעל השם:

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

כיצד לבחור תא ביחס לתא הפעיל

כדי לבחור תא המכיל חמש שורות מתחת וארבע עמודות מימין לתא הפעיל, באפשרותך להשתמש בדוגמה הבאה:

ActiveCell.Offset(5, -4).Select

כדי לבחור תא המכיל שתי שורות מעל ושלוש עמודות משמאל לתא הפעיל, באפשרותך להשתמש בדוגמה הבאה:

ActiveCell.Offset(-2, 3).Select

הערה

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

כיצד לבחור תא ביחס לתא אחר (לא לתא הפעיל)

כדי לבחור תא המכיל חמש שורות מתחת וארבע עמודות משמאל לתא C7, באפשרותך להשתמש באחת מהדוגמאות הבאות:

ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

כיצד לבחור טווח תאים היסט מטווח שצוין

כדי לבחור טווח תאים בגודל זהה לגודלו של הטווח בעל השם "בדיקה", אך הוא מוזז ארבע שורות למטה ושלוש עמודות ימינה, באפשרותך להשתמש בדוגמה הבאה:

ActiveSheet.Range("Test").Offset(4, 3).Select

אם הטווח בעל השם נמצא בגליון עבודה אחר (לא בגליון העבודה הפעיל), הפעל תחילה את גליון העבודה ולאחר מכן בחר את הטווח באמצעות הדוגמה הבאה:

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

כיצד לבחור טווח שצוין ולשנות את גודל הבחירה

כדי לבחור את הטווח בעל השם "מסד נתונים" ולאחר מכן להרחיב את הבחירה בחמש שורות, באפשרותך להשתמש בדוגמה הבאה:

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

כיצד לבחור טווח שצוין, להסט אותו ולאחר מכן לשנות את גודלו

כדי לבחור טווח של ארבע שורות מתחת ושלוש עמודות משמאל לטווח בעל השם "מסד נתונים" ולכלול שתי שורות ועמודה אחת יותר מהטווח בעל השם, באפשרותך להשתמש בדוגמה הבאה:

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

כיצד לבחור את האיחוד של שני טווחים שצוינו או יותר

כדי לבחור את האיחוד (לדוגמה, האזור המשולב) של שני הטווחים בעלי השם "בדיקה" ו"דוגמה", באפשרותך להשתמש בדוגמה הבאה:

Application.Union(Range("Test"), Range("Sample")).Select

הערה

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

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

אך שורה זו

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

החזרת הודעת השגיאה:

פעולת שירות האיחוד של מחלקת היישום נכשלה

כיצד לבחור את ההצטלבות של שני טווחים שצוינו או יותר

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

Application.Intersect(Range("Test"), Range("Sample")).Select

שים לב ששני הטווחים חייבים להיות באותו גליון עבודה כדי שדוגמה זו ת לפעול.

דוגמאות 17-21 במאמר זה מתייחסות לערכת הנתונים לדוגמה הבאה. כל דוגמה מציינת את טווח התאים בנתונים לדוגמה שנבחרו.

A1: Name    B1: Sales    C1: Quantity
A2: a       B2: $10      C2: 5
A3: b       B3:          C3: 10
A4: c       B4: $10      C4: 5
A5:         B5:          C5:
A6: Total   B6: $20      C6: 20

כיצד לבחור את התא האחרון של עמודה של נתונים רציפים

כדי לבחור את התא האחרון בעמודה רציפה, השתמש בדוגמה הבאה:

ActiveSheet.Range("a1").End(xlDown).Select

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

כיצד לבחור את התא הריק בתחתית עמודה של נתונים רציפים

כדי לבחור את התא שמתחת לטווח תאים רציפים, השתמש בדוגמה הבאה:

ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select

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

כיצד לבחור טווח שלם של תאים רציפים בעמודה

כדי לבחור טווח של תאים רציפים בעמודה, השתמש באחת מהדוגמאות הבאות:

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select

כאשר קוד זה נמצא בשימוש עם הטבלה לדוגמה, התאים A1 עד A4 ייבחרו.

כיצד לבחור טווח שלם של תאים שאינם רציפים בעמודה

כדי לבחור טווח תאים שאינו רציף, השתמש באחת מהדוגמאות הבאות:

ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
   End(xlUp).Address).Select

כאשר קוד זה נמצא בשימוש עם הטבלה לדוגמה, הוא יבחר את התאים A1 עד A6.

כיצד לבחור טווח תאים מלבני

כדי לבחור טווח תאים מלבני מסביב לתא, השתמש בפעולת השירות CurrentRegion. הטווח שנבחר על-ידי פעולת השירות CurrentRegion הוא אזור המאוגד לכל שילוב של שורות ריקות ועמודות ריקות. להלן דוגמה לאופן השימוש בפעולת השירות CurrentRegion:

ActiveSheet.Range("a1").CurrentRegion.Select

קוד זה יבחר את התאים A1 עד C4. דוגמאות אחרות לבחירת אותו טווח תאים מפורטות להלן:

ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -or-
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select

במקרים מסוימים, ייתכן שתרצה לבחור את התאים A1 עד C6. בדוגמה זו, פעולת השירות CurrentRegion לא יפעלו עקב השורה הריקה בשורה 5. הדוגמאות הבאות יבחרו את כל התאים:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    -or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

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

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

A1: 1  B1: 1  C1: 1  D1: 1
A2: 2  B2: 2  C2: 2  D2: 2
A3: 3  B3: 3  C3: 3  D3: 3
A4:    B4: 4  C4: 4  D4: 4
A5:    B5: 5  C5: 5  D5:
A6:    B6:    C6: 6  D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select

כאשר קוד זה נמצא בשימוש עם הטבלה לדוגמה, התאים A1:A3 ו- C1:C6 ייבחרו.

הערות על הדוגמאות

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

ActiveSheet.Range("D5").Select

באפשרותך להשתמש ב:

Range("D5").Select

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

בעת שימוש בפעולת השירות Application.Goto, אם ברצונך להשתמש בשתי פעולות שירות של תאים בפעולת השירות Range כאשר הטווח שצוין נמצא בגליון עבודה אחר (לא הפעיל), עליך לכלול את האובייקט Sheets בכל פעם. לדוגמה:

    With ActiveWorkbook.Sheets("Sheet1")
        Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
    End With

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

ActiveWorkbook.Sheets("Sheet1").Activate

באפשרותך להשתמש

ActiveWorkbook.Sheets(myVar).Activate

כאשר הערך של myVar הוא "Sheet1".