Đối tượng Range

Một phần của tài liệu Tài liệu Ứng dụng VBA sử dụng trong ngành giao thông - P2 docx (Trang 30 - 35)

1 Chú thích làm ột đoạn văn bảng ắn thêm vào mộ tô nào đó Đoạn văn bản này được hiện lên mỗi khi người dùng di chuột trên ô Ô nào có chú thích thì sẽ có thêm biểu tượng hình tam giác màu đỏở góc trên bên phải của ô Để tạo

5.2.5.Đối tượng Range

Đối tượng Range tham chiếu đến một ô hoặc một vùng dữ liệu trên bảng tính. Đây là đối tượng phổ biến nhất trong Excel, bởi hầu hết các tương tác với Excel đều được thực hiện dựa trên các ô và vùng dữ liệu. Với đối tượng Range, người lập trình không chỉ tác động lên một ô riêng lẻ mà còn có thể tác động lên nhiều ô cùng một lúc.

Tham chiếu đến đối tượng Range 

Việc tham chiếu đến đối tượng Range được thực hiện dựa trên địa chỉ của các ô và được thực hiện theo nhiều phương thức khác nhau. Để làm rõ hơn cách thức tham chiếu, các ví dụ sau sẽ thực hiện gán giá trị cho vùng dữ liệu được tham chiếu.

Để tham chiếu đến một ô nào đó, chỉ cần nhập địa chỉ của ô. Địa chỉ của ô có thể là kiểu địa chỉ tương đối, hoặc tuyệt đối. Ví dụ sau sẽ tham chiếu đến ô B2:

ActiveSheet.Range("B2").Value = 9 ‘hoặc có thể gán trực tiếp như sau: ActiveSheet.Range("B2") = 9

Trong trường hợp nếu người dùng có một vùng dữ liệu được đặt tên, người lập trình có thể tham chiếu đến vùng dữ liệu đó thông qua tên của vùng dữ liệu. Giả sử trong Sheet1 có một vùng dữ liệu từ ô A2 đến ô B3 được đặt tên là Input, thì cách tham chiếu như sau:

Worksheets("Sheet1").Range("SoLieu") = 9

Trường hợp nếu muốn tham chiếu đến một vùng dữ liệu, người lập trình có thể dựa trên địa chỉ của hai ô, ô ở góc trên bên trái và ô ở góc đưới bên phải. Ví dụ sau sẽ tham chiếu đến vùng dữ liệu từ ô B2 đến ô C3 theo nhiều cách khác nhau:

Worksheets("Sheet1").Range("B2:C3") = 9 ‘Cách thứ nhất Worksheets("Sheet1").Range("B2.C3") = 9 ‘Cách thứ hai Worksheets("Sheet1").Range("B2", "C3") = 9 ‘Cách thứ ba

Hoặc thay vì sử dụng đối tượng Range, có thể dùng trực tiếp dấu ngoặc vuông ([ ]). Điều này tương đương với khi tham chiếu sử dụng đối tượng Range:

Worksheets("Sheet1").[B2:C3] = 9 ‘Cách thứ nhất Worksheets("Sheet1").[B2.C3] = 9 ‘Cách thứ hai

Nếu muốn tham chiếu đến một vùng dữ liệu là giao của các vùng dữ liệu, sử dụng dấu cách giữa các vùng dữ liệu. Ví dụ sau sẽ tham chiếu đến vùng dữ liệu là giao của hai vùng dữ liệu là A1:C3 và B2:D4, vùng được tham chiếu thực sự là vùng B2:C3

Nếu muốn tham chiếu đến một vùng dữ liệu là hợp của các vùng dữ liệu khác nhau, sử dụng dấu phẩy ngăn cách giữa các vùng dữ liệu. Ví dụ sau sẽ tham chiếu đến vùng dữ liệu là hợp của các vùng dữ liệu A1:B2, ô D3 và vùng A4:C4

Worksheets("Sheet1").Range("A1:B2,D3,A4.D4") = 9

Dưới đây là các phương thức và thuộc tính của đối tượng Range:

Activate 

Phương thức này dùng để chuyển một ô thành ô hiện hành. Nếu vùng dữ liệu là nhiều hơn một ô thì chỉ có một ô được chọn làm hiện hành, là ô ở góc trên bên trái. Cần lưu ý là phương thức này chỉ được gọi thành công nếu vùng dữ liệu đó nằm trên worksheet hiện hành. Vì vậy, muốn kích hoạt một vùng dữ liệu trên một worksheet nào đó, cần phải chuyển worksheet đó thành worksheet hiện hành.

Worksheets(“Sheet1”).Activate Range(“A3:B5”).Activate

AddComment và ClearComments 

Phương thức AddComment cho phép thêm chú thích vào vùng được tham chiếu. Vùng dữ liệu chỉ được phép là một ô, và ô đó phải chưa có chú thích, nếu không sẽ làm phát sinh lỗi. Còn phương thức ClearComments cho phép xoá tất cả các chú thích của các vùng dữ liệu. Khác với phương thức AddComment, phương thức này không yêu cầu về vùng dữ liệu, vùng dữ liệu có thể là một vùng bất kỳ.

Range("A1:C3").ClearComments ‘Xoá chú thích vùng A1:C3 Range("B2").AddComment "Chu thich moi" ‘Thêm chú thích ô B2

Address 

Thuộc tính này trả về địa chỉ của vùng dữ liệu được tham chiếu. Ví dụ sau sẽ hiển thị một vùng dữ liệu đã được đặt tên là SoLieu trong Sheet1:

MsgBox Worksheets("Sheet1").Range("SoLieu").Address

BorderAround 

Phương thức này thực hiện vẽ đường biên xung quanh vùng dữ liệu được tham chiếu. Người lập trình có thể thiết lập kiểu đường, bề dày nét vẽ và màu của đường. Chi tiết về các tham số, tham khảo trong tài liệu trợ giúp đi kèm của Excel.

Worksheets("Sheet1").Range("A1:D4").BorderAround _

LineStyle:=xlDashDot, ColorIndex:=3, Weight:=xlThick

Phương thức này thực hiện tính toán cho vùng dữ liệu được tham chiếu, áp dụng trong trường hợp chế độ tình trong Excel được thiết lập thành tính toán thủ công (Manual).

Cells 

Cells là tập đối tượng tham chiếu đến tất cả các ô nằm trong vùng dữ liệu được tham chiếu. Chi tiết xem thêm mục “Tập đối tượng Cells” trang 43 (adsbygoogle = window.adsbygoogle || []).push({});

Clear,  ClearContents và ClearFormats 

Phương thức Clear xoá tất cả những gì có trong vùng dữ liệu được tham chiếu: nội dung, định dạng, chú thích…

Phương thức ClearContents chỉ xoá nội dung được lưu trữ trong vùng dữ liệu. Còn phương thức ClearFormats chỉ xoá định dạng của các ô trong vùng dữ liệu. Sau khi xoá định dạng, các ô sẽ có định dạng mặc định trong Excel.

Worksheets(“Sheet2”).Range(“A1:C3”).Clear ‘Xoá tất cả

Worksheets(“Sheet2”).Range(“A1:C3”).ClearContents ‘Xoá nội dung Worksheets(“Sheet2”).Range(“A1:C3”).ClearFormats ‘Xoá định dạng

Column và Row 

Hai phương thức này trả về số thứ tự của cột và hàng của ô đầu tiên của vùng dữ liệu được tham chiếu.

MsgBox Worksheets("Sheet1").Range("B3:D12").Column ‘Hiển thị giá trị 2 MsgBox Worksheets("Sheet1").Range("B3:D12").Row ‘Hiển thị giá trị 3

Columns và Rows 

Thuộc tính Columns và Rows thực chất là tập đối tượng kiểu Range chứa các cột và các hàng nằm trong phạm vi vùng dữ liệu được tham chiếu. Ví dụ sau sử dụng vòng lặp For Each … Next để đổi màu và điền số thứ tự cột vào các cột trong vùng dữ liệu được tham chiếu.

Public Sub VD_Columns() Dim myColumns As Range

For Each myColumns In Range("B4:C5,E2:F6").Columns

myColumns.Interior.Color = RGB(0, 255, 0) ‘Đổi màu

myColumns.Value = myColumns.Column ‘Điền số thứ tự cột Next myColumns

End Sub

GỢI Ý Có thể sử dụng tập đối tượng Columns và Rows để truy cập đến một hàng hay một

cột nào đó trong worksheet. Ví dụ sau sẽ điền giá trị 9 vào cột C và hàng 3: Worksheets("Sheet1").Columns("C") = 9

ColumnWidth và RowHeight 

Thuộc tính này thể hiện chiều rộng của cột và chiều cao của hàng của vùng dữ liệu được tham chiếu.

Worksheets("Sheet2").Range("B2:C4").ColumnWidth = 15 Worksheets("Sheet2").Range("B2:C4").RowHeight = 15

Offset 

Hàm Offset tịnh tiến vùng dữ liệu theo số hàng và số cột được xác định trong các thông số đầu vào của hàm Offset. Giá trị trả về của hàm này chính là vùng dữ liệu sau khi đã được tịnh tiến. Cấu trúc của hàm Offset là: Offsett(số_hàng, số_cột). Số_hàng nếu là số dương là tịnh tiến xuống dưới, số_cột nếu là số dương là tịnh tiến sang phải. Ví dụ sau sẽ tịnh tiến vùng dữ liệu lên trên 2 hàng và sang phải 3 cột:

Worksheets("Sheet1").Range("A4:B5").Offset(-2, 3).Value = 9

Replace 

Phương thức này dùng để thay thể một chuỗi ký tự bằng một chuỗi ký tự khác. Ví dụ sau sẽ thay thế từ SIN bằng COS:

Worksheets("Sheet2").Range("A1.C5").Replace "SIN", "COS"

Phương thức này cũng có nhiều tham số khác nữa để thiết lập chế độ tìm kiếm vào thay thế như trật tự tìm kiếm, phân biệt chữ hoa chữ thường,… Chi tiết xem trong hướng dẫn đi kèm của Excel.

Select 

Phương thức này sẽ lựa chọn vùng dữ liệu được tham chiếu, giống như khi sử dụng chuột để lựa chọn một vùng dữ liệu trong worksheet. Cũng giống như phương thức Activate, vùng dữ liệu được tham chiếu phải nằm trong worksheet hiện hành, nếu không sẽ làm phát sinh lỗi khi thực thi chương trình. Ví dụ sau sẽ chọn vùng dữ liệu B2:C3 trong worksheet hiện hành:

Range(“B2:C3”).Select (adsbygoogle = window.adsbygoogle || []).push({});

Value 

Thuộc tính này chứa giá trị của vùng dữ liệu. Cần phải lưu ý rằng khi đọc giá trị của vùng dữ liệu thì vùng dữ liệu đó bắt buộc phải là một ô đơn nhất, còn khi gán giá trị thì vùng dữ liệu có thể là một ô hoặc một vùng dữ liệu gồm nhiều ô và trong trường hợp đó tất cả các ô đều có cùng một giá trị.

MsgBox Range("A1").Value ‘Đọc và hiển thị giá trị ô A1

GỢI Ý Trong khi làm việc với đối tượng Range, đối tượng tham chiếu đến một vùng dữ liệu, cần lưu ý những điểm sau:

✦Việc thao tác với Excel bằng mã lệnh không cần phải thực hiện lựa chọn vùng dữ liệu, vì thế nên hạn chế sử dụng các phương thức như Activate hoặc Select.

✦Trong trường hợp bắt buộc phải sử dụng các phương thức này, cần phải kích hoạt worksheet có chứa vùng dữ liệu làm worksheet hiện hành bằng phương thức Activate của worksheet đó.

✦Nên sử dụng các vùng dữ liệu được đặt tên, chẳng hạn như nên sử dụng Range(“KetQua”) thay vì sử dụng Range(“D45”). Vì khi sử dụng Range(“D45”), nếu người dùng chèn thêm một hàng ở phía trên hàng 45 thì địa chỉ của ô cần tham chiếu sẽ thay đổi, và cần phải thay đổi mã lệnh thành Range(“D46”). Nhưng nếu sử dụng vùng dữ liệu có đặt tên thì không cần phải thay đổi mã lệnh.

✦Excel cho phép lựa chọn các vùng dữ liệu rời rạc bất kỳ. Trong khi sử dụng Excel, có thể thực hiện bằng cách giữ phím CRTL khi chọn vùng dữ liệu.

Một phần của tài liệu Tài liệu Ứng dụng VBA sử dụng trong ngành giao thông - P2 docx (Trang 30 - 35)