Select sheet: Bạn cần đăng nhập để thấy hình ảnh Chúng ta chọn sheet nào đó chúng ta có câu lệnh: Sheets(1).Select ' Chọn sheet đầu tiên
Worksheets(1).Select ' Chọn sheet đầu tiên Hai câu lệnh trên đều có ý nghĩa tương đương, nhưng ở mức độ tinh tế nó có một chút khác biệt. Chúng ta cũng có thể dùng tên sheet để gọi. Sheets("Sheet1").Select ' Chọn sheet đầu tiên
Worksheets("Sheet1").Select ' Chọn sheet đầu tiên Khi dùng tên sheet chúng ta phải cho vào trong dấu "" . Activate sheet: Sheets(1).Activate ' Active sheet 1
Worksheets("Sheet1").Activate ' Active sheet 1 Trạng thái Active là trạng thái sẵn sàng chờ
nhập dữ liệu. Khác với select là tại một thời điểm chúng ta chỉ có thể nhập dữ liệu vào một sheet, có nghĩa là chỉ Active một sheet. Bạn cần đăng nhập để thấy hình ảnh Sheets(Array(1, 2)).Select ' select sheet 1 và sheet 2
Sheets(Array("Sheet1", "Sheet2")).Select ' select sheet có tên là "sheet1", "sheet2"
Worksheets(Array(1, 2)).Select ' select sheet 1 và sheet 2
Worksheets(Array("Sheet1", "Sheet2")).Select ' select sheet có tên là "sheet1", "sheet2" Để chọn hết các sheet các bạn dùng một trong hai lệnh sau: Sheets.Select
'Hoặc
Worksheets.Select
Sheets: Lấy tất cả những thứ thuộc về sheet.
Worksheets: Chúng ta chỉ lấy worksheets( Chúng ta không lấy những thứ như Graph
trong sheet).
Mình chưa có thời gian tìm hiểu kỹ hơn, trong code thực tế thì mình thường dùng câu lệnh đầu tiên.
Ở code trên chúng ta truyền tham số 1 (hoặc 2,3,...) để gọi sheet.
Trong khi đó chúng ta có thể select nhiều sheet vào cùng một thời điểm.
Tại sao cần quan tâm tới lệnh Active?
Khi chúng ta làm
việc với các thao tác copy và paste, chúng ta nên Active workbook và sheet đó lên để tránh bị lỗi.
Khi làm việc với nhiều workbook, cần tìm dòng dữ liệu cuối cùng cũng vậy, nên Active workbook và sheet đó lên.
Chương trình sẽ chạy chậm hơn một chút, nhưng đảm bảo tính chính xác.
Workbooks("file1").Sheets("ten sheet").Activate 'sau đó là lệnh copy hoặc paste, hoặc tìm dòng dữ liệu cuối cùng.
Nguồn:
Bạn cần đăng nhập để thấy link
Đối tượng Worksheet trong Excel VBA là một trong những đối tượng được sử dụng thường xuyên nhất trong khi tự động hoá các tác vụ với VBA.
Đối tượng Worksheet đại diện cho các sheet trong Workbook, tức là mỗi Workbook chứa một hoặc nhiều Worksheet.
Nội dung chính
- Các phương thức của đối tượng Worksheet
- Phương thức Activate
- Phương thức Copy
- Phương thức Delete
Các phương thức của đối tượng Worksheet
Dưới đây là các phương thức được sử dụng thường xuyên của đối tượng Worksheet trong VBA:
Activate | Để kích hoạt một Worksheet. |
Calculate | Để làm mới tất cả tính toán trong một Worksheet. |
Copy | Để copy một Worksheet. |
Delete | Để xóa một Worksheet. |
Move | Để di chuyển một Worksheet. |
Select | Để chọn một Worksheet. |
Phương thức Activate
Phương thức Activate của đối tượng Worksheet trong VBA được sử dụng để kích hoạt một Worksheet cụ thể của một Workbook đang được kích hoạt.
Tại sao chúng ta cần phải kích hoạt một Worksheet bằng VBA?
Khi chúng ta phải xử lý nhiều Worksheet (sheet trong một Workbook) và bạn muốn đọc hoặc ghi vào một Worksheet (sheet) cụ thể thì bạn phải kích hoạt Worksheet đó.
Cú pháp:
Worksheets(“Worksheet Name”).Activate ' Or Worksheets(“Worksheet Index”).Activate
Áp dụng cú pháp trên bạn sẽ kích hoạt được đối tượng Worksheet cụ thể của một Workbook đang được kích hoạt.
Ví dụ 1: Activate Worksheet trong VBA với tên của WorksheetSub ActiveWorksheetExample1() ' sử dụng tên của một Worksheet Worksheets("data").Activate 'Or Sheets("data").Activate End Sub
Ví dụ 2: Activate Worksheet trong VBA với chỉ số của WorksheetSub ActiveWorksheetExample1() ' sử dụng tên của một Worksheet Worksheets(2).Activate 'Or Sheets(2).Activate End Sub
Cách tiếp cận tốt nhất
Lưu ý: Luôn luôn sử dụng tên của Worksheet, thay vì chỉ số của Worksheet. Và cách tiếp cận tốt nhất là gán Worksheet cho một đối tượng và sau đó làm bất cứ nhiệm vụ nào bạn muốn làm với đối tượng Worksheet cụ thể đó.
Tạo biến tham chiếu đến Worksheet
Vấn đề: Khi bạn phải làm việc với nhiều Workshet (nhiều sheet), mỗi Workbook có nhiều Worksheet. Bạn phải sử dụng phương thức Activate với hết Workshet này đến Workshet khác để đọc hoặc ghi dữ liệu từ chúng, điều này có thể dẫn đến mã rối rắm, khó hiểu khiến bạn lúng túng.
Giải quyết vấn đềĐể giải quyết vấn đề trên, có một giải pháp cho bạn đó là với mỗi Worksheet bạn tạo ra một biến tham chiếu. Sau đó, bất cứ khi nào muốn sử dụng (Activate) Worksheet nào bạn chỉ cần tham chiếu đến biến tương ứng.
Ví dụ:
Sub vidu3() ' khai báo đối tượng wb Dim wb As Workbook ' khai báo đối tượng ws Dim wsInput As Worksheet Dim wsOutput As Worksheet ' gán wb cho active Workbook Set wb = Application.ActiveWorkbook ' gán wsInput cho đối tượng Worksheet có tên "input" Set wsInput = wb.Sheets("input") ' gán wsOutput cho đối tượng Worksheet có tên "output" Set wsOutput = wb.Sheets("output") End Sub
Xem ví dụ cụ thể tại ví dụ đối tượng Workbook và Worksheet
Phương thức Copy
Phương thức Copy của đối tượng Worksheet trong VBA được sử dụng để sao chép một Worksheet từ vị trí này sang ví trí khác trong cùng một Workbook hoặc Workbook đang tồn tại hoặc Workbook mới khác.
Cú pháp:
Sheets(“Worksheet Number”).Copy([Before], [After])
Ví dụ 1: Copy Worksheet trong VBA với BeforeVí dụ sau sao chép sheet "Sheet3" tới vị trí trước sheet đầu tiên trong cùng Workbook. Trường hợp '1' đại diện cho số chỉ mục Worksheet đầu tiên.
Sub CopySheet_Beginning1() Worksheets("Sheet3").Copy Before:=Worksheets(1) End Sub
Ví dụ trên, chúng ta sao chép worksheet đang hoạt động đến vị trí đầu tiên trong cùng Workbook.
Sub CopySheet_Beginning2() ActiveSheet.Copy Before:=Worksheets(1) End Sub
Ví dụ 2: Copy Worksheet trong VBA với AfterVí dụ sau sao chép sheet "Sheet3" tới vị trí trước sheet cuối cùng trong cùng Workbook. Trường hợp Worksheets.Count đại diện cho số chỉ mục Worksheet cuối cùng.
Sub CopySheet_Ending1() Worksheets("Sheet3").Copy After:=Worksheets(Worksheets.Count) End Sub
Ví dụ trên, chúng ta sao chép worksheet đang hoạt động đến vị trí cuối cùng trong cùng Workbook.
Sub CopySheet_Ending2() ActiveSheet.Copy After:=Worksheets(Worksheets.Count) End Sub
Phương thức Delete
Phương thức Delete của đối tượng Worksheet trong VBA được sử dụng để xóa sheet khỏi Workbook (file Excel). Khi bạn gọi phương thức Delete để xóa một sheet, nó sẽ hiển thị hộp thoại nhắc người dùng xác nhận việc xóa theo mặc định. Nếu bạn click vào nút Delete trên hộp thoại thì nó sẽ xóa sheet. Nó trả về giá trị Boolean. Điều đó có nghĩa là hộp thoại sẽ xuất hiện với hai tùy chọn. Đó là Cancel (False) hoặc Delete (True).
Cú pháp:
Worksheets(“Sheet Name”).Delete
Ví dụ 1: Xóa Worksheet trong VBAVí dụ sau xóa sheet có tên "Sheet2" từ một Workbook.
Sub DeleteSheetExample1() Sheets("Sheet2").Delete ' or Sheet2.Delete End Sub
Ví dụ trên, sẽ hiển thị hộp thoại Excel và thông báo xác nhận tới người dùng để xóa "Sheet2".
Ví dụ 2: Xóa Worksheet trong VBASub DeleteSheetExample1() ActiveSheet.Delete End Sub
Ví dụ trên, chúng ta thực hiện xóa đối tượng Worksheet đang hoạt động từ một Workbook bằng cách sử dụng phương thức Delete của đối tượng Worksheet.
Ví dụ 3: Xóa Worksheet trong VBA - không hiển thị alertSub DeleteSheetExample1() Application.DisplayAlerts = False Sheets("Sheet2").Delete Application.DisplayAlerts = True End Sub
Ví dụ trên, xóa "Sheet2" nhưng KHÔNG hiển thị hộp thoại Excel thông báo xác nhận tới người dùng.
Tìm hiểu thêm: //msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-object-excel