Bài viết: Sử dụng Name trong VBA

Liên hệ QC

TranThanhPhong

Ngày mai trời lại sáng!
Thành viên danh dự
Tham gia
16/3/07
Bài viết
2,104
Được thích
19,154
Giới tính
Nam
Tác giả: Lê Văn Duyệt

Thông thường khi các bạn đặt tên, chúng ta sẽ đánh dấu khối chúng ta cần đặt tên sau đó các bạn vào Insert/Name/Define hoặc các bạn cũng có thể phím nóng Ctrl + F3 để mở hộp thoại Define Name (Excel 2003 trở về trước).

DefineName.JPG


DefineName_1.JPG


DefineName_2.JPG


Trong ô Names in workbook các bạn nhập vào tên vùng bạn muốn đặt. Trong ô Refers to các bạn nhập vào địa chỉ của vùng muốn đặt tên hoặc chọn nút kế bên (
DefineName_3a.JPG
) để chọn vùng. Chú ý, nếu muốn chọn vùng không liên tục các bạn cần bấm phím Ctrl trong khi chọn.

Đối với Excel 2007 trở về sau, bạn vào Formulas/ Define Name hoặc các bạn cũng có thể dùng phím nóng Ctrl + F3 để mở hộp thoại Name Manager.

DefineName_3.JPG


Trong ô Name bạn nhập vào tên vùng bạn muốn đặt. Trong ô Refers to các bạn nhập vào địa chỉ của vùng này hoặc chọn nút kế bên (
DefineName_3a.JPG
) để chọn vùng. Tại Scope bạn chọn tầm vực của Name. Chú ý, nếu muốn chọn vùng không liên tục các bạn cần bấm phím Ctrl trong khi chọn.

DefineName_4.JPG


Cách khác các bạn có thể chọn vùng cần đặt tên, sau đó nhập tên cần đặt vào hộp Name Box. Sau khi các bạn đặt tên các bạn sẽ thấy danh sách các tên sẽ hiện trong Name Box.

DefineName_5.JPG


Cách đặt tên trong VBA


Mã:
Application.Names.Add Name: =TenVung, RefersTo: =DiaChi, Visible: =True

Chúng ta dùng phương thức Add của Names Collection.

TenVung
: tên của vùng cần đặt
DiaChi: địa chỉ của vùng cần đặt

Các bạn có thể gán cho tên sẽ thấy trong Name Box hay không.

Trong trường hợp chúng ta đã đặt tên cho vùng A1:A10VungDuLieu, chúng ta cũng có thể dấu tên bằng việc thiết lập thuộc tính Visible:=False

Tên còn được dùng để lưu mảng, các bạn hãy xem ví dụ sau:

Mã:
Sub ArrayToName()
Dim aiArray(1 To 200, 1 To 3) As Long
Dim iRow As Long
Dim iColumn As Long
 
'Tạo mảng
For iRow = 1 To 200
    For iColumn = 1 To 3
       aiArray(iRow, iColumn) = iRow + iColumn
    Next iColumn
Next iRow
 
'Sau khi tạo xong sẽ lưu mảng này với tên MyName
Names.Add Name:="MyName", RefersTo:=aiArray
End Sub

Sau khi đặt tên cho mảng, chúng ta có thể sử dụng mảng này bằng việc gán tên chúng ta vừa đặt ở bước trên cho biến.

Mã:
Sub NameToArray()
Dim vArray As Variant
 
'Gán tên của mảng cho biến vArray
vArray = [MyName]
 
'Hiện phần tử của mảng
MsgBox vArray(200, 3)
End Sub

Ngoài việc lưu mảng trong Names chúng ta cũng có thể lưu hằng trong Names.

Các bạn hãy xem ví dụ sau:

Mã:
Sub LuuHang()
Dim v As Variant
v = 3.14159
Names.Add Name:="StoreNumber", RefersTo:=v
v = "Sales"
Names.Add Name:="StoreString", RefersTo:=v
End Sub

Với việc đặt tên như thế này, tên sẽ không hiện ra trong Name Box. Các bạn có thể dùng những tên này giống như một hằng trong Excel hoặc trong VBA.

DefineName_6.JPG


Chú ý: Khi lưu chuỗi ký tự chúng ta chỉ có thê lưu tối đa là 255 ký tự.
v = [StoreNumber]

(còn tiếp...)
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT
Back
Top Bottom