Trong VBA, một Mảng là một biến duy nhất có thể chứa nhiều giá trị. Hãy nghĩ về một mảng giống như một dải ô: mỗi ô có thể lưu trữ một giá trị. Mảng có thể là một chiều (nghĩ về một cột duy nhất), hai chiều (nghĩ về nhiều hàng & cột) hoặc đa chiều. Các giá trị của mảng có thể được truy cập theo vị trí của chúng (số chỉ mục) trong mảng.
Trang tính nhanh mảng VBA
Mảng
Sự miêu tảMã VBATạo raDim arr (1 đến 3) làm biến thểarr (1) = “một”
arr (2) = “hai”
arr (3) = “ba”Tạo từ ExcelDim arr (1 đến 3) làm biến thể
Làm mờ ô dưới dạng phạm vi, tôi là số nguyên
i = LBound (arr)
Đối với mỗi ô trong phạm vi (“A1: A3”)
i = i + 1
arr (i) = cell.value
Ô tiếp theoĐọc tất cả các mụcDim tôi as Long
Đối với i = LBound (arr) Đến UBound (arr)
MsgBox arr (i)
Tiếp theo tôiTẩy xóaXóa arrMảng thành chuỗiDim sName As String
sName = Tham gia (arr, “:”)Tăng kích thướcReDim Bảo tồn arr (0 đến 100)Đặt giá trịarr (1) = 22
Ví dụ nhanh về mảng VBA
Hãy xem một ví dụ đầy đủ trước khi chúng ta đi sâu vào chi tiết cụ thể:
12345678910 | Mảng conExample ()Dim strNames (1 đến 4) dưới dạng chuỗistrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Jose"msgbox strNames (3)Kết thúc Sub |
Ở đây, chúng tôi đã tạo mảng chuỗi một chiều: strNames với kích thước bốn (có thể chứa bốn giá trị) và gán bốn giá trị. Cuối cùng, chúng tôi hiển thị giá trị thứ 3 trong Hộp thông báo.
Trong trường hợp này, lợi ích của việc sử dụng Mảng là rất nhỏ: chỉ cần khai báo một biến thay vì bốn biến.
Tuy nhiên, hãy xem một ví dụ sẽ cho thấy sức mạnh thực sự của một mảng:
12345678 | Mảng conExample2 ()Dim strNames (1 đến 60000) dưới dạng chuỗiDim i As LongĐối với i = 1 đến 60000strNames (i) = Các ô (i, 1). Giá trịTiếp theo tôiKết thúc Sub |
Ở đây, chúng tôi đã tạo Mảng có thể chứa 60.000 giá trị và chúng tôi đã nhanh chóng điền mảng từ Cột A của một trang tính.
Lợi ích của mảng? - Tốc độ, vận tốc!
Bạn có thể nghĩ về Mảng tương tự như trang tính Excel:
- Mỗi ô (hoặc mục trong một mảng) có thể chứa giá trị riêng của nó
- Mỗi ô (hoặc mục trong một mảng) có thể được truy cập theo vị trí hàng & cột của nó.
- Trang tính Ex. ô (1,4) .value = “Hàng 1, Cột 4”
- Mảng Ex. arrVar (1,4) = “Hàng 1, Cột 4”
Vậy tại sao phải bận tâm với Mảng? Tại sao không chỉ đọc và ghi giá trị trực tiếp vào các ô trong Excel? Một từ: Tốc độ, vận tốc!
Đọc / ghi vào các ô Excel là một quá trình chậm. Làm việc với Mảng nhanh hơn nhiều!
Tạo / Khai báo một mảng (Dim)
Lưu ý: Mảng có thể có nhiều "thứ nguyên". Để giữ cho mọi thứ đơn giản, chúng ta sẽ bắt đầu bằng cách chỉ làm việc với mảng một chiều. Phần sau của hướng dẫn, chúng tôi sẽ giới thiệu cho bạn về mảng nhiều chiều.
Mảng tĩnh
Mảng tĩnh là những mảng không thể thay đổi kích thước. Ngược lại, Mảng động có thể thay đổi kích thước. Chúng được khai báo hơi khác một chút. Đầu tiên, hãy xem xét các mảng tĩnh.
Lưu ý: Nếu kích thước mảng của bạn không thay đổi, hãy sử dụng một mảng tĩnh.
Khai báo một biến mảng tĩnh rất giống với khai báo một biến thông thường, ngoại trừ việc bạn phải xác định kích thước của mảng. Có một số cách khác nhau để đặt kích thước của một mảng.
Bạn có thể khai báo rõ ràng vị trí bắt đầu và kết thúc của một mảng:
123456789101112 | Sub StaticArray1 ()'Tạo mảng với các vị trí 1,2,3,4Dim arrDemo1 (1 đến 4) dưới dạng chuỗi'Tạo mảng với các vị trí 4,5,6,7Dim arrDemo2 (4 đến 7)'Tạo mảng với các vị trí 0,1,2,3Dim arrDemo3 (0 đến 3) miễn làKết thúc Sub |
Hoặc bạn chỉ có thể nhập kích thước mảng:
123456 | Sub StaticArray2 ()'Tạo mảng với các vị trí 0,1,2,3Dim arrDemo1 (3) Dưới dạng chuỗiKết thúc Sub |
Quan trọng! Lưu ý rằng theo mặc định, Mảng bắt đầu ở vị trí 0. Vì vậy Dim arrDemo1 (3) tạo một mảng với các vị trí 0,1,2,3.
Bạn có thể khai báo Tùy chọn Cơ sở 1 ở đầu mô-đun của bạn để mảng bắt đầu ở vị trí 1 thay vào đó:
12345678 | Tùy chọn Cơ sở 1Sub StaticArray3 ()'Tạo mảng với các vị trí 1,2,3Dim arrDemo1 (3) Dưới dạng chuỗiKết thúc Sub |
Tuy nhiên, tôi thấy rằng sẽ dễ dàng hơn nhiều (và ít khó hiểu hơn) nếu chỉ khai báo rõ ràng vị trí bắt đầu và kết thúc của mảng.
Bạn mệt mỏi với việc tìm kiếm ví dụ về mã VBA? Hãy thử AutoMacro!
Mảng động
Mảng động là các mảng có kích thước có thể thay đổi được (hoặc kích thước của nó không cần xác định).
Có hai cách để khai báo một Mảng động.
Mảng biến thể
Cách đầu tiên để khai báo một Mảng động là đặt mảng thành kiểu Khác nhau.
1 | Dim arrVar () Dưới dạng biến thể |
Với một Arra biến thểy, 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. Chỉ cần nhớ rằng Mảng bắt đầu với vị trí 0 (trừ khi bạn thêm Tùy chọn Cơ sở 1 vào đầu mô-đun của mình)
12345678910111213 | Sub VariantArray ()Dim arrVar () Dưới dạng biến thể'Xác định giá trị (Kích thước = 0,1,2,3)arrVar = Mảng (1, 2, 3, 4)'Thay đổi giá trị (Kích thước = 0,1,2,3,4)arrVar = Mảng ("1a", "2a", "3a", "4a", "5a")'Vị trí đầu ra 4 ("5a")MsgBox arrVar (4)Kết thúc Sub |
Mảng động không biến thể
Với mảng không biến thể, bạn phải xác định kích thước mảng trước khi gán giá trị cho mảng. Tuy nhiên, quá trình tạo mảng hơi khác một chút:
1234567 | Sub DynamicArray1 ()Dim arrDemo1 () As String'Thay đổi kích thước mảng với các vị trí 1,2,3,4ReDim arrDemo1 (1 đến 4)Kết thúc Sub |
Đầu tiên, bạn khai báo mảng, tương tự như mảng tĩnh, ngoại trừ bạn bỏ qua kích thước mảng:
1 | Dim arrDemo1 () As String |
Bây giờ khi bạn muốn đặt kích thước mảng, bạn sử dụng ReDim lệnh kích thước mảng:
12 | 'Thay đổi kích thước mảng với các vị trí 1,2,3,4ReDim arrDemo1 (1 đến 4) |
ReDim thay đổi kích thước mảng. Đọc bên dưới để biết sự khác biệt giữa ReDim và ReDim Preserve.
ReDim so với ReDim Preserve
Khi bạn sử dụng ReDim lệnh bạn xóa tất cả các giá trị hiện có khỏi mảng. Thay vào đó bạn có thể sử dụng Bảo tồn ReDim để bảo toàn giá trị mảng:
12 | 'Thay đổi kích thước mảng với các vị trí 1,2,3,4 (Giữ nguyên các giá trị hiện có)ReDim Bảo tồn arrDemo1 (1 đến 4) |
Khai báo mảng được đơn giản hóa
Bạn có thể cảm thấy choáng ngợp sau khi đọc mọi thứ ở trên. Để giữ cho mọi thứ đơn giản, chúng tôi chủ yếu sẽ làm việc với các mảng tĩnh trong phần còn lại của bài viết.
Đặt giá trị mảng
Đặt giá trị mảng rất dễ dàng.
Với một mảng tĩnh, bạn phải xác định từng vị trí của mảng, từng vị trí một:
12345678 | Mảng conExample ()Dim strNames (1 đến 4) dưới dạng chuỗistrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Jose"Kết thúc Sub |
Với Mảng biến thể, bạn có thể xác định toàn bộ mảng bằng một dòng (chỉ thực tế cho các mảng nhỏ):
123456 | Mảng conExample_1Line ()Dim strNames () Như một biến thểstrNames = Array ("Shelly", "Steve", "Neema", "Jose")Kết thúc Sub |
Nếu bạn cố gắng xác định giá trị cho một vị trí mảng không tồn tại, bạn sẽ nhận được lỗi Chỉ số nằm ngoài phạm vi:
1 | strNames (5) = "Shannon" |
Trong phần 'Gán phạm vi cho mảng' Dưới đây chúng tôi sẽ hướng dẫn bạn cách sử dụng vòng lặp để nhanh chóng gán số lượng lớn giá trị cho mảng.
Nhận giá trị mảng
Bạn có thể tìm nạp các giá trị mảng theo cùng một cách. Trong ví dụ dưới đây, chúng tôi sẽ viết các giá trị mảng vào các ô:
1234 | Phạm vi ("A1"). Giá trị = strNames (1)Phạm vi ("A2"). Giá trị = strNames (2)Phạm vi ("A3"). Giá trị = strNames (3)Phạm vi ("A4"). Giá trị = strNames (4) |
Lập trình VBA | Code Generator làm việc cho bạn!
Gán Phạm vi cho Mảng
Để gán một Phạm vi cho một Mảng, bạn có thể sử dụng một vòng lặp:
12345678 | Phạm vi conToArray ()Dim strNames (1 đến 60000) dưới dạng chuỗiDim i As LongĐối với i = 1 đến 60000strNames (i) = Các ô (i, 1). Giá trịTiếp theo tôiKết thúc Sub |
Thao tác này sẽ lặp qua các ô A1: A60000, gán giá trị ô cho mảng.
Đầu ra Mảng thành Dải ô
Hoặc bạn có thể sử dụng một vòng lặp để gán một mảng cho một phạm vi:
123 | Đối với i = 1 đến 60000Các ô (i, 1) .Value = strNames (i)Tiếp theo tôi |
Điều này sẽ làm ngược lại: gán giá trị mảng cho các ô A1: A60000
Mảng 2D / Đa chiều
Cho đến nay, chúng tôi đã làm việc riêng với mảng một chiều (1D). Tuy nhiên, mảng có thể có tối đa 32 thứ nguyên.
Hãy nghĩ về mảng 1D giống như một hàng hoặc cột duy nhất của các ô Excel, mảng 2D giống như toàn bộ trang tính Excel với nhiều hàng và cột và mảng 3D giống như toàn bộ sổ làm việc, chứa nhiều trang tính, mỗi trang chứa nhiều hàng và cột (Bạn cũng có thể nghĩ về một mảng 3D giống như một Khối Rubik).
Ví dụ về mảng đa chiều
Bây giờ, hãy trình bày các ví dụ về cách làm việc với các mảng có kích thước khác nhau.
Lập trình VBA | Code Generator làm việc cho bạn!
Ví dụ về mảng 1D
Thủ tục này kết hợp các ví dụ mảng trước đó thành một thủ tục, minh họa cách bạn có thể sử dụng mảng trong thực tế.
1234567891011121314 | Mảng conEx_1d ()Dim strNames (1 đến 60000) dưới dạng chuỗiDim i As Long'Gán giá trị cho mảngĐối với i = 1 đến 60000strNames (i) = Các ô (i, 1). Giá trịTiếp theo tôi'Xuất giá trị mảng thành phạm viĐối với i = 1 đến 60000Trang tính ("Đầu ra"). Ô (i, 1) .Value = strNames (i)Tiếp theo tôiKết thúc Sub |
Ví dụ về mảng 2D
Quy trình này chứa một ví dụ về mảng 2D:
123456789101112131415161718 | Mảng conEx_2d ()Dim strNames (1 đến 60000, 1 đến 10) dưới dạng chuỗiDim i As Long, j As Long'Gán giá trị cho mảngĐối với i = 1 đến 60000Đối với j = 1 đến 10strNames (i, j) = Các ô (i, j). Giá trịTiếp theo jTiếp theo tôi'Xuất giá trị mảng thành phạm viĐối với i = 1 đến 60000Đối với j = 1 đến 10Trang tính ("Đầu ra"). Ô (i, j) .Value = strNames (i, j)Tiếp theo jTiếp theo tôiKết thúc Sub |
Ví dụ về mảng 3D
Quy trình này chứa một ví dụ về mảng 3D để làm việc với nhiều trang tính:
12345678910111213141516171819202122 | Mảng conEx_3d ()Dim strNames (1 đến 60000, 1 đến 10, 1 đến 3) dưới dạng chuỗiDim i As Long, j As Long, k As Long'Gán giá trị cho mảngĐối với k = 1 đến 3Đối với i = 1 đến 60000Đối với j = 1 đến 10strNames (i, j, k) = Sheets ("Trang tính" & k) .Cells (i, j) .ValueTiếp theo jTiếp theo tôiTiếp theo k'Xuất giá trị mảng thành phạm viĐối với k = 1 đến 3Đối với i = 1 đến 60000Đối với j = 1 đến 10Trang tính ("Đầu ra" & k) .Cells (i, j) .Value = strNames (i, j, k)Tiếp theo jTiếp theo tôiTiếp theo kKết thúc Sub |
Chiều dài / Kích thước mảng
Cho đến nay, chúng tôi đã giới thiệu cho bạn các loại mảng khác nhau và dạy bạn cách khai báo mảng và lấy / đặt giá trị mảng. Tiếp theo chúng ta sẽ tập trung vào các chủ đề cần thiết khác để làm việc với mảng.
Lập trình VBA | Code Generator làm việc cho bạn!
Chức năng UBound và LBound
Bước đầu tiên để nhận chiều dài / kích thước của một mảng là sử dụng các hàm UBound và LBound để lấy các giới hạn trên và dưới của mảng:
123456 | Sub UBoundLBound ()Dim strNames (1 đến 4) dưới dạng chuỗiMsgBox UBound (strNames)MsgBox LBound (strNames)Kết thúc Sub |
Trừ hai (và thêm 1) sẽ cho bạn độ dài:
1 | GetArrLength = UBound (strNames) - LBound (strNames) + 1 |
Hàm độ dài mảng
Đây là một hàm để lấy độ dài của mảng một chiều:
1234567 | Chức năng công cộng GetArrLength (a As Variant) As LongNếu IsEmpty (a) ThìGetArrLength = 0KhácGetArrLength = UBound (a) - LBound (a) + 1Kết thúc nếuChức năng kết thúc |
Cần tính toán kích thước của một mảng 2D? Hãy xem hướng dẫn của chúng tôi: Tính Kích thước của Mảng.
Vòng qua mảng
Có hai cách để lặp qua một mảng. Các vòng lặp đầu tiên qua các số nguyên tương ứng với các vị trí số của mảng. Nếu bạn biết kích thước mảng, bạn có thể chỉ định nó trực tiếp:
12345678910111213 | Mảng conExample_Loop1 ()Dim strNames (1 đến 4) dưới dạng chuỗiDim i As LongstrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Jose"Đối với i = 1 đến 4MsgBox strNames (i)Tiếp theo tôiKết thúc Sub |
Tuy nhiên, nếu bạn không biết kích thước mảng (nếu mảng là động), bạn có thể sử dụng các hàm LBound và UBound từ phần trước:
12345678910111213 | Mảng conExample_Loop2 ()Dim strNames (1 đến 4) dưới dạng chuỗiDim i As LongstrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Jose"Đối với i = LBound (strNames) Đến UBound (strNames)MsgBox strNames (i)Tiếp theo tôiKết thúc Sub |
Đối với mỗi vòng lặp mảng
Phương pháp thứ hai là với For Each Loop. Điều này lặp lại qua từng mục trong mảng:
12345678910111213 | Mảng conExample_Loop3 ()Dim strNames (1 đến 4) dưới dạng chuỗiDim mặt hàngstrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Jose"Đối với mỗi mục trong strNamesMục MsgBoxMục tiếp theoKết thúc Sub |
Vòng lặp Cho Mỗi mảng sẽ hoạt động với các mảng nhiều chiều ngoài các mảng một chiều.
Lập trình VBA | Code Generator làm việc cho bạn!
Vòng lặp qua mảng 2D
Bạn cũng có thể sử dụng các hàm UBound và LBound để lặp qua một mảng đa chiều. Trong ví dụ này, chúng ta sẽ lặp qua một mảng 2D. Lưu ý rằng Hàm UBound và LBound cho phép bạn chỉ định thứ nguyên nào của mảng để tìm giới hạn trên và giới hạn dưới (1 cho thứ nguyên đầu tiên, 2 cho thứ nguyên thứ hai).
1234567891011121314151617181920 | Mảng conExample_Loop4 ()Dim strNames (1 đến 4, 1 đến 2) dưới dạng chuỗiDim i As Long, j As LongstrNames (1, 1) = "Shelly"strNames (2, 1) = "Steve"strNames (3, 1) = "Neema"strNames (4, 1) = "Jose"strNames (1, 2) = "Shelby"strNames (2, 2) = "Steven"strNames (3, 2) = "Nemo"strNames (4, 2) = "Jesse"Đối với j = LBound (strNames, 2) Đến UBound (strNames, 2)Đối với i = LBound (strNames, 1) Đến UBound (strNames, 1)MsgBox strNames (i, j)Tiếp theo tôiTiếp theo jKết thúc Sub |
Nhiệm vụ mảng khác
Xóa mảng
Để xóa toàn bộ mảng, hãy sử dụng Câu lệnh Xóa:
1 | Xóa strNames |
Ví dụ sử dụng:
12345678910 | Mảng conExample ()Dim strNames (1 đến 4) dưới dạng chuỗistrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Jose"Xóa strNamesKết thúc Sub |
Ngoài ra, bạn cũng có thể ReDim mảng để thay đổi kích thước của nó, xóa một phần của mảng:
1 | ReDim strNames (1 đến 2) |
Thao tác này thay đổi kích thước mảng thành kích thước 2, xóa vị trí 3 và 4.
Mảng đếm
Bạn có thể đếm số vị trí trong mỗi chiều của mảng bằng cách sử dụng Hàm UBound và LBound (đã thảo luận ở trên).
Bạn cũng có thể đếm số mục đã nhập (hoặc mục đáp ứng các tiêu chí nhất định) bằng cách lặp qua mảng.
Ví dụ này sẽ lặp qua một mảng đối tượng và đếm số chuỗi không trống được tìm thấy trong mảng:
123456789101112131415 | Mảng conLoopandCount ()Dim strNames (1 đến 4) dưới dạng chuỗiDim i As Long, n As LongstrNames (1) = "Shelly"strNames (2) = "Steve"Đối với i = LBound (strNames) Đến UBound (strNames)Nếu strNames (i) "" thìn = n + 1Kết thúc nếuTiếp theo tôiMsgBox n & "các giá trị không trống được tìm thấy."Kết thúc Sub |
Lập trình VBA | Code Generator làm việc cho bạn!
Loại bỏ các bản sao
Tại một số điểm, bạn có thể muốn xóa các bản sao khỏi Mảng. Thật không may, VBA không có một tính năng tích hợp để làm điều này. Tuy nhiên, chúng tôi đã viết một hàm để xóa các bản sao khỏi Mảng (quá dài để đưa vào hướng dẫn này, nhưng hãy truy cập liên kết để tìm hiểu thêm).
Lọc
Chức năng Bộ lọc VBA cho phép bạn Lọc một mảng. Nó làm như vậy bằng cách tạo một mảng mới chỉ có các giá trị được lọc. Dưới đây là một ví dụ nhanh, nhưng hãy nhớ đọc bài viết để biết thêm các ví dụ cho các nhu cầu khác nhau.
1234567891011121314 | Sub Filter_Match ()'Xác định mảngDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Mảng lọcDim strSubNames As VariantstrSubNames = Bộ lọc (strNames, "Smith")'Đếm mảng đã lọcMsgBox "Đã tìm thấy" & UBound (strSubNames) - LBound (strSubNames) + 1 & "tên."Kết thúc Sub |
Hàm IsArray
Bạn có thể kiểm tra xem một biến có phải là một mảng hay không bằng cách sử dụng Hàm IsArray:
123456789101112 | Sub IsArrayEx ()'Tạo mảng với các vị trí 1,2,3Dim arrDemo1 (3) Dưới dạng chuỗi'Tạo biến chuỗi thông thườngDim str As StringMsgBox IsArray (arrDemo1)MsgBox IsArray (str)Kết thúc Sub |
Tham gia Array
Bạn có thể nhanh chóng "nối" toàn bộ một mảng cùng với Chức năng Nối:
123456789101112 | Mảng con_Join ()Dim strNames (1 đến 4) dưới dạng chuỗiDim joinNames As StringstrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Jose"joinNames = Tham gia (strNames, ",")MsgBox joinNamesKết thúc Sub |
Lập trình VBA | Code Generator làm việc cho bạn!
Chia chuỗi thành mảng
Hàm tách VBA sẽ chia một chuỗi văn bản thành một mảng chứa các giá trị từ chuỗi ban đầu. Hãy xem một ví dụ:
123456789 | Mảng con_Split ()Dim tên () Dưới dạng chuỗiDim tham gia Names As StringjoinNames = "Shelly, Steve, Nema, Jose"Names = Split (JoinNames, ",")Tên MsgBox (1)Kết thúc Sub |
Ở đây chúng tôi chia chuỗi văn bản “Shelly, Steve, Nema, Jose” này thành một mảng (kích thước 4) bằng cách sử dụng dấu phân cách bằng dấu phẩy (, ”).
Mảng Const
Một mảng không thể được khai báo như một hằng số trong VBA. Tuy nhiên, bạn có thể giải quyết vấn đề này bằng cách tạo một hàm để sử dụng như một Mảng:
123456789 | 'Xác định ConstantArrayHàm ConstantArray ()ConstantArray = Mảng (4, 12, 21, 100, 5)Chức năng kết thúc'Truy xuất giá trị ConstantArraySub RetrieveValues ()MsgBox ConstantArray (3)Kết thúc Sub |
Sao chép mảng
Không có cách tích hợp nào để sao chép Mảng bằng VBA. Thay vào đó, bạn sẽ cần sử dụng một vòng lặp để gán các giá trị từ mảng này sang mảng khác.
12345678910111213141516171819 | Sub CopyArray ()Dim Arr1 (1 đến 100)Dim Arr2 (1 đến 100)Dim i As Long'Tạo Mảng1Đối với i = 1 đến 100Arr1 (i) = iTiếp theo tôi'CopyArray1 đến Array2Đối với i = 1 đến 100Arr2 (i) = Arr1 (i)Tiếp theo tôiMsgBox Arr2 (74)Kết thúc Sub |
Transpose
Không có chức năng VBA tích hợp nào cho phép bạn Chuyển đổi một mảng. Tuy nhiên, chúng tôi đã viết một hàm để chuyển đổi một mảng 2D. Đọc bài viết để tìm hiểu thêm.
Lập trình VBA | Code Generator làm việc cho bạn!
Mảng trả về hàm
Một câu hỏi phổ biến của các nhà phát triển VBA là làm thế nào để tạo một hàm trả về một mảng. Tôi nghĩ rằng hầu hết những khó khăn được giải quyết bằng cách sử dụng Mảng biến thể. Chúng tôi đã viết một bài báo về chủ đề: Mảng trả về hàm VBA.
Sử dụng Mảng trong Access VBA
Hầu hết các ví dụ về Mảng ở trên hoạt động giống hệt nhau trong Access VBA cũng giống như trong VBA Excel. Một điểm khác biệt chính là khi bạn muốn điền một mảng bằng cách sử dụng dữ liệu Access, bạn sẽ cần phải lặp qua đối tượng RecordSet chứ không phải đối tượng Phạm vi.
1234567891011121314151617181920212223 | Phạm vi phụToArrayAccess ()Khi có lỗi Tiếp tục tiếp theoDim strNames () Dưới dạng chuỗiDim i As LongDim iCount As LongLàm mờ dbs dưới dạng cơ sở dữ liệuDim đầu tiên As RecordsetĐặt dbs = CurrentDbĐặt rst = dbs.OpenRecordset ("tblClients", dbOpenDynaset)Với đầu tiên.MoveLast.MoveFirstiCount = .RecordCountReDim strNames (1 Đến iCount)Đối với i = 1 Đến iCountstrNames (i) = rst.Fields ("Tên máy khách").MoveNextTiếp theo tôiKết thúc vớiđầu tiên. ĐóngĐặt đầu tiên = Không có gìĐặt dbs = Không có gìKết thúc Sub |
Hướng dẫn về mảng | |
---|---|
Array Mega-Guide | đúng |
Nhận kích thước mảng | |
Xóa mảng | |
Mảng lọc | |
Mảng Transpose | |
Mảng trả về hàm | |
Loại bỏ các bản sao | |