Tải bản đầy đủ (.pdf) (3 trang)

Học lập trình VB trên macro excel

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (200.53 KB, 3 trang )

HỌC LẬP TRÌNH VB TRÊN MACRO EXCEL
Thông Tin tài liệi Từ Internet
“Phạm Văn Dương”



Thuộc tính RANGE

Thuộc tính Range trả về một đối tượng, có thể là một cell đơn lẻ hoặc một
dãy gồm nhiều cell. Trong lệnh gán giá trị của cell A1 vào cell A5 đưới đây,
Range trả về giá trị chỉ gồm 1 cell:
Worksheets("Sheet1").Range("A5").Value = Worksheets("Sheet1").Range("A1").Value

Khi dùng với kiểu không xác định, Range trả về một dãy cell trên sheet đang
hoạt động. Để tránh kiểu "Râu ông nọ cắm cằm bà kia", bạn hãy kích hoạt
một bảng tính bằng phương pháp Activate trước khi dùng thuộc tính Range
mà không cần chỉ ra giới hạn cụ thể. Sau đây là cách điền vào vùng A1:H8
các số ngẫu nhiên bằng cách đặt công thức cho mỗi ô trong dãy mà trước đó
sheet1 đã được kích hoạt:
Worksheets("sheet1").Activate
Range("A1:H8").Formula = "=rand()"

Bạn cũng có thể đặt tên cho dãy cell và chỉ cho VBA tham chiếu đến tên này.
Ví dụ, bạn ra lệnh xóa nội dung của một dãy có tên "Criteria" bằng cách:
Worksheets(1).Range("criteria").ClearContents
Nếu bạn sử dụng một đối số (argument) mà đối số đó là địa chỉ dãy cell, bạn
phải định rõ địa chỉ đó theo kiểu A1 (dùng kiểu R1C1 máy sẽ báo lỗi).


Thuộc Tính Cell


Thuộc tính Cells sử dụng cú pháp Cells(row,column), với row là chỉ số hàng
và column là chỉ số cột, để trả về một cell đơn lẻ. Chẳng hạn, bạn có thể
gán giá trị 24 cho cell A1 bằng lệnh:
Worksheets(1).Cells(1, 1).Value = 24


Và gán một công thức cho cell A2:
ActiveSheet.Cells(2, 1).Formula = "=sum(b1:b5)"

Cho dù bạn có thể dùng công thức Range("A1") để trả về cell A1 (không hề
sai!), nhưng dùng thuộc tính Cells thì tiện lợi hơn bởi bạn có thể sử dụng
một biến số đại diện cho hàng hoặc cột phục vụ yêu cầu lập trình. Bạn hãy
tham khảo ví dụ tạo tiêu đề cột và hàng trên Sheet1 sau đây, lưu ý sau khi
bảng tính đã được kích hoạt, thuộc tính Cells có thể được sử dụng thoải mái
mà không cần khai báo một sheet cụ thể nào vì nó trả về một cell trên sheet
hoạt động.
Sub SetUpTable()
Worksheets("sheet1").Activate
For theYear = 1 To 5
Cells(1, theYear + 1).Value = 1990 + theYear
Next theYear
For theQuarter = 1 To 4
Cells(theQuarter + 1, 1).Value = "Q" & theQuarter
Next theQuarter
End Sub

Mặc dù bạn có thể sử dụng những hàm xử lý chuỗi của Visual Basic để thay
đổi tham chiếu kiểu A1, nhưng để dễ hiểu hơn và rèn luyện kỹ năng lập trình
của mình, bạn nên sử dụng kiểu Cells(1, 1).
Nếu bạn sử dụng cú pháp expression.Cells(row,column), với expression là

một biểu thức trả về một đối tượng Range, và row và column là vị trí tương
đối so với góc trên trái của dãy cell thì kết quả trả về là một bộ phận của
dãy. Trong ví dụ dưới đây, VBA chỉ đến Cell(1,1) tức là cell C5 trên bảng
tính:
Worksheets(1).Range("c5:c10").Cells(1, 1).Formula = "=rand()



Kết hợp Range and Cells

Phối hợp Range và Cells để tham chiếu đến một dãy cell, bạn hãy sử dụng
cú pháp Range(cell 1, cell 2), với cell 1 và cell 2 là cell bắt đầu và cell kết
thúc của dãy. Để đặt kiểu đường viền cho các cell bạn dùng lệnh sau:
With Worksheets(1).Range(.Cells(1, 1), .Cells(10, 10)).Borders.LineStyle = xlThick
End With

Ở đây cần lưu ý đến dấu chấm đằng trước thuộc tính Cells. Dấu chấm này
quy định Worksheets(1) mà With đã nêu trước đó được áp dụng cho thuộc


tính Cells để tiết kiệm chỗ và làm cho câu lệnh gọn hơn (nếu không có dấu
chấm, thuộc tính Cells trả về các cell trên sheet hoạt động).


Thuộc Tính Offset

VBA dùng thuộc tính Offset(r,c) để di chuyển đến một cell khác có vị trí
cách r hàng và c cột so với cell hiện hành. Ví dụ dưới đây chọn một cell cách
cell góc trên bên trái vùng hiện hành 3 hàng về phía dưới và 1 cột về bên
phải. Bạn không thể chọn một cell không nằm trong sheet hoạt động, vì vậy

trước đó bạn phải kích hoạt bảng tính bằng lệnh Activate.
Worksheets("sheet1").Activate
Selection.Offset(3, 1).Range("a1").Select



Phương thức Union

VBA sử dụng Union(range1, range2,...) để trả về một vùng hỗn hợp - là các
vùng gồm hai hoặc nhiều khối cell tách biệt nhau. Trong ví dụ dưới, một đối
tượng được định nghĩa gồm 2 vùng A1:B2 và C3 4, sau đó chọn vùng đã
được định nghĩa.
Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set r1 = Range("A1:B2")
Set r2 = Range("C3

4")

Set myMultiAreaRange = Union(r1, r2)
myMultiAreaRange.Select

Nếu bạn làm việc với các vùng chọn chứa hai hay nhiều hơn một dãy cell,
thuộc tính Areas rất hữu ích. Nó chia một vùng chọn hỗn hợp thành các đối
tượng Range riêng biệt và sau đó trả về tập hợp các đối tượng đó. Bạn có
thể sử dụng thuộc tính Count trên tập hợp đuợc trả về để kiểm tra một vùng
chọn có chứa nhiều hơn một dãy cell hay không, như ví dụ sau đây:
Sub NoMultiAreaSelection()
numberOfSelectedAreas = Selection.Areas.Count
If numberOfSelectedAreas > 1 Then

MsgBox "You cannot carry out this command " & _
"on multi-area selections"
End If
End Sub.



×