Kiểu dữ liệu biến thể VBA (Biến mờ)

Loại biến thể

Một biến Variant có thể chứa dữ liệu bất kỳ lúc nào (chuỗi, số nguyên, số thập phân, đối tượng, v.v.). Nếu bạn không khai báo loại biến, biến của bạn sẽ được coi là biến thể.

Để khai báo một biến Variant, bạn sử dụng Câu lệnh Dim (viết tắt của Dimension):

1 Dim varName làm biến thể
1 Dim rng as Variant

Sau đó, để gán giá trị cho một biến, chỉ cần sử dụng dấu bằng:

1 varName = "John"
1 rng = Trang tính (1) .Range ("A1")

Đặt điều này trong một thủ tục trông giống như sau:

12345678910 Sub strExample ()'khai báo các biến thểDim strName làm biến thểDim rng As Variant'điền các biếnstrName = "Fred Smith"Đặt rng = Sheets (1) .Range ("A1")'điền trang tínhrng.Value = strNameKết thúc Sub

Nếu bạn chạy mã trên, ô A1 trong Trang tính 1 sẽ được điền bằng “Fred Smith”

Với những cái tên được khai báo ở trên, chúng tôi có thể kết luận rằng varName sẽ chứa văn bản và objSheet sẽ chứa một đối tượng trang tính. Nhưng trên thực tế, bất kỳ loại dữ liệu nào cũng có thể được hướng đến biến.

Bạn có thể điền các biến được khai báo ở trên như sau và không có lỗi nào xảy ra.

1 varName = 6
1 objSheet - "Fred"

Việc sử dụng các biến biến thể là không bình thường và không được coi là thực hành tốt. Tuy nhiên, đôi khi, các biến Variant rất hữu ích.

Khai báo Biến Variant ở Cấp độ mô-đun hoặc Toàn cầu

Trong ví dụ trước, bạn đã khai báo biến Variant trong một thủ tục. Các biến được khai báo với một thủ tục chỉ có thể được sử dụng trong thủ tục đó.

Thay vào đó, bạn có thể khai báo các biến Variant ở cấp độ mô-đun hoặc toàn cục.

Cấp độ mô-đun

Cấp mô-đun các biến được khai báo ở đầu mô-đun mã với Lờ mờ tuyên bố.

Các biến này có thể được sử dụng với bất kỳ thủ tục nào trong mô-đun mã đó.

Cấp độ toàn cầu

Cấp độ toàn cầu các biến cũng được khai báo ở đầu mô-đun mã. Tuy nhiên, thay vì sử dụng Lờ mờ tuyên bố, bạn sử dụng Công cộng để chỉ ra rằng biến chuỗi có sẵn để được sử dụng trong suốt Dự án VBA của bạn.

1 StrName công khai dưới dạng biến thể

Nếu bạn đã khai báo biến biến thể ở cấp độ mô-đun và được sử dụng trong một mô-đun khác, thì sẽ xảy ra lỗi.

Nếu bạn đã sử dụng từ khóa Public để khai báo biến biến thể, lỗi sẽ không xảy ra và thủ tục sẽ chạy hoàn hảo.

Sử dụng một biến thể để điền Excel

Hãy xem xét quy trình sau:

12345678910111213141516171819 Kiểm tra phụ'khai báo một chuỗi để giữ tên sản phẩmDim strSản phẩm dưới dạng chuỗi'khai báo một số nguyên để giữ số lượng sản phẩmLàm mờ iQty dưới dạng số nguyên'tuyên bố tăng gấp đôi để giữ giá sản phẩm và tổng giáDim dblGiá gấp đôiDim dblTotal thành Double'điền các biếnstrProduct = "All Purpose Flour"iQty = 3dblPrice = "$ 5,00"dblTotal = "$ 15,00"'điền trang tính ExcelPhạm vi ("A1") = strProductPhạm vi ("A2") = iQtyPhạm vi ("A3") = dblPricePhạm vi ("A4") = dblTotalKết thúc Sub

Khi chúng tôi chạy mã này, lỗi sau xảy ra.

Nhấp vào Gỡ lỗi

Bạn không thể đặt dấu đô la vào biến vì biến được khai báo là Kép, và do đó không thể lưu trữ các giá trị chuỗi.

Tuyên bố dblPricedblTotal dưới dạng Biến thể có nghĩa là bạn không bị giới hạn đối với một kiểu dữ liệu.

1 Dim dblPrice as Variant
1 Làm mờ dblTotal làm biến thể

Chạy lại mã và dữ liệu sẽ xuất hiện trong trang tính Excel như bình thường.

Lưu ý rằng dữ liệu được nhập trong A4 và A5 sau đó được Excel tự động chuyển đổi thành số.

Khai báo một mảng động

Các biến biến thể cũng hữu ích khi bạn khai báo một mảng động vì chúng cho phép kích thước của mảng thay đổi trong thời gian chạy.

Với mộtMảng biến thể, bạn không cần xác định kích thước mảng. Kích thước sẽ tự động điều chỉnh.

123456789 Sub VariantArray ()Dim arrList () As Variant'Xác định giá trịarrList = Mảng (1, 2, 3, 4)'Thay đổi giá trịarrList = Mảng (1,2,3,4,5,6)'Vị trí đầu ra 4MsgBox arrVar (4)Kết thúc Sub

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave