C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
M
M
I
I
C
C
R
R
O
O
S
S
O
O
F
F
T
T
E
E
X
X
C
C
E
E
L
L
133
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
Worksheets("Sheet1").Range("A1:C3 B2:D4") = 9
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
134
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
AddCommentvà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
này 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 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.
Worksheets("Sheet1").Range("A1:D4").BorderAround _
LineStyle:=xlDashDot, ColorIndex:=3, Weight:=xlThick
Calculate
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 137.
Clear,ClearContentsvà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
ColumnvàRow
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
M
M
I
I
C
C
R
R
O
O
S
S
O
O
F
F
T
T
E
E
X
X
C
C
E
E
L
L
135
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
Columnsvà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("B3:C4,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 cả một hàng hay
một cột nào đó trong worksheet. Ví dụ sau sẽ điền giá trị 9 vào tất cả các ô trong cột C và
các ô trong hàng 3:
Worksheets("Sheet1").Columns("C") = 9
Worksheets("Sheet1").Rows("3") = 9
ColumnWidthvàRowHeight
Thuộc tính này dùng để thiết lập 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:
136
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
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
Range("B2:C3").Value = 9 ‘Gán giá trị cho vùng dữ liệu B2:C3
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.
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
M
M
I
I
C
C
R
R
O
O
S
S
O
O
F
F
T
T
E
E
X
X
C
C
E
E
L
L
137
✦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.
5.2.6. Tập đối tượng Cells
Tập đối tượng Cells là tập đối tượng chứa tất cả các ô nằm trong vùng được tham chiếu. Tập
đối tượng Cells là một thuộc tính của đối tượng worksheet và cũng là một thuộc tính của đối
tượng Range. Khi truy cập thông qua đối tượng worksheet, tập đối tượng Cells tham chiếu đến
tất cả các ô của worksheet đó. Khi truy cập thông qua đối tượng Range, tập đối tượng Cells chỉ
tham chiếu đến các ô nằm trong vùng dữ liệu. Thực chất, mỗi thành phần cấu thành nên tập đối
tượng Cells là một ô, có kiểu dữ liệu là Range nên tất cả các phương thức và thuộc tính của đối
tượng Range đều có trong tập đối tượng Cells. Xem thêm mục “Đối tượng Range” trang 132 để
biết chi tiết về đối tượng Range.
Để tham chiếu đến một ô nào đó thông qua tập đối tượng Cells, có thể sử
dụng cấu trúc sau:
Ø
Ø
object.Cells(chỉ_số_hàng, chỉ_số_cột)
Ø
Ø
object.Cells(chỉ_số_ô)
Ø
Ø
object.Cells
Object là đối tượng có chứa thuộc tính Cells, có thể là đối tượng kiểu Worksheet hoặc kiểu
Range. Các tham số
chỉ_số_hàng và chỉ_số_cột là chỉ số tương đối trong phạm vi của vùng
dữ liệu được tham chiếu.
Chỉ_số_ô là số thứ tự của ô trong tập đối tượng Cells, số thứ tự được
đánh số theo từng hàng, từ trái sang phải và từ trên xuống dưới.
Xét đoạn mã sau:
Worksheets(“Sheet1”).Range("B2:E4").Cells(2, 3).Value = 9
Đoạn mã trên sử dụng cách thứ nhất để gán giá trị 9 cho một ô nằm trong vùng B2:E4. Object ở
đây chính là đối tượng kiểu Range, vì vậy tập đối tượng Cells là tập đối tượng chứa các ô trong
vùng B2:E4. Chỉ số hàng và cột sẽ được tính tương đối so với ô đầu tiên của vùng dữ liệu, là ô
B2. Vì vậy, Cells(1,1) là ô đầu tiên của vùng dữ liệu, còn Cells(2,3) tương ứng với ô D3.
Xét đoạn mã thứ 2:
Worksheets("Sheet1").Cells(257).Value = 9