Một đối tượng ArrayList tương tự như một đối tượng Collection nhưng nó có nhiều phương thức và thuộc tính hơn, và do đó tính linh hoạt cao hơn theo quan điểm lập trình.
Một đối tượng Bộ sưu tập chỉ có hai phương thức (Thêm, Loại bỏ) và hai thuộc tính (Đếm, Mục) trong khi Danh sách Mảng có nhiều thuộc tính khác. Ngoài ra, đối tượng Bộ sưu tập chỉ được đọc. Khi các giá trị đã được thêm vào, không thể thay đổi giá trị được lập chỉ mục, trong khi trên Danh sách mảng, có thể chỉnh sửa.
Nhiều phương thức Danh sách Mảng sử dụng các tham số. Không giống như nhiều phương pháp VBA tiêu chuẩn, không có tham số nào trong số này là tùy chọn. Ngoài ra, một số phương thức và thuộc tính không phải lúc nào cũng viết hoa khi được nhập giống như cách chúng làm trong Excel VBA. Tuy nhiên, chúng vẫn hoạt động.
Đối tượng ArrayList mở rộng và thu nhỏ kích thước tùy theo số lượng mục mà nó chứa. Nó không cần phải được đo kích thước trước khi sử dụng như Mảng.
Danh sách Mảng là một chiều (giống như đối tượng Bộ sưu tập) và kiểu dữ liệu mặc định là Biến thể, có nghĩa là nó sẽ chấp nhận bất kỳ loại dữ liệu nào, cho dù đó là số, văn bản hay ngày tháng.
Theo nhiều cách, Danh sách Mảng giải quyết một số thiếu sót của đối tượng Bộ sưu tập. Nó chắc chắn linh hoạt hơn nhiều trong những gì nó có thể làm.
Đối tượng Danh sách Mảng không phải là một phần của thư viện VBA tiêu chuẩn. Bạn có thể sử dụng nó trong mã VBA Excel của mình bằng cách sử dụng liên kết muộn hoặc sớm
1234 | Sub LateBindingExample ()Làm mờ danh sách MyList dưới dạng đối tượngĐặt MyList = CreateObject ("System.Collections.ArrayList")Kết thúc Sub |
123 | Sub EarlyBindingExample ()Dim MyList làm ArrayList mớiKết thúc Sub |
Để sử dụng ví dụ liên kết sớm, trước tiên bạn phải nhập một tham chiếu trong VBA vào tệp ‘mscorlib.tlb’
Bạn thực hiện việc này bằng cách chọn ‘Công cụ | Tham khảo ‘từ cửa sổ Visual Basic Editor (VBE). Một cửa sổ bật lên sẽ xuất hiện với tất cả các tài liệu tham khảo có sẵn. Cuộn xuống ‘mscorlib.dll’ và đánh dấu vào hộp bên cạnh. Nhấp vào OK và thư viện đó bây giờ là một phần của dự án của bạn:
Một trong những nhược điểm lớn của đối tượng Array List là nó không có ‘Intellisense’. Thông thường, khi bạn đang sử dụng một đối tượng trong VBA chẳng hạn như một dải ô, bạn sẽ thấy một danh sách bật lên gồm tất cả các thuộc tính và phương thức có sẵn. Bạn không nhận được điều này với một đối tượng Danh sách Mảng và đôi khi nó cần kiểm tra cẩn thận để đảm bảo rằng bạn đã viết đúng chính tả phương thức hoặc thuộc tính.
Ngoài ra, nếu bạn nhấn F2 trong cửa sổ VBE và tìm kiếm trên ‘danh sách mảng’, sẽ không có gì được hiển thị, điều này không hữu ích lắm đối với nhà phát triển.
Mã của bạn sẽ chạy nhanh hơn đáng kể với liên kết sớm, vì tất cả đều được biên dịch trước. Với ràng buộc muộn, đối tượng phải được biên dịch khi mã chạy
Phân phối ứng dụng Excel của bạn có chứa danh sách mảng
Như đã chỉ ra, đối tượng ArrayList không phải là một phần của Excel VBA. Điều này có nghĩa là bất kỳ đồng nghiệp nào của bạn mà bạn phân phối ứng dụng phải có quyền truy cập vào tệp ‘mscorlib.tlb’
Tệp này thường được đặt ở:
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
Có thể đáng để viết một số mã (sử dụng phương thức Dir) để kiểm tra xem tệp này có tồn tại hay không khi người dùng tải ứng dụng để họ gặp phải 'hạ cánh mềm' nếu không được tìm thấy. Nếu nó không xuất hiện và mã chạy thì lỗi sẽ xảy ra.
Ngoài ra, người dùng phải cài đặt đúng phiên bản .Net Framework. Ngay cả khi người dùng có phiên bản mới hơn, V3.5 phải được cài đặt nếu không ứng dụng của bạn sẽ không hoạt động
Phạm vi của một đối tượng danh sách mảng
Về phạm vi, đối tượng Danh sách Mảng chỉ khả dụng khi sổ làm việc đang mở. Nó không được lưu khi sổ làm việc được lưu. Nếu sổ làm việc được mở lại thì đối tượng Danh sách Mảng cần được tạo lại bằng mã VBA.
Nếu bạn muốn Danh sách Mảng có sẵn cho tất cả mã trong mô-đun mã của mình, thì bạn cần khai báo đối tượng Danh sách Mảng trong phần Khai báo ở đầu cửa sổ mô-đun
Điều này sẽ đảm bảo rằng tất cả mã của bạn trong mô-đun đó có thể truy cập vào Danh sách Mảng. Nếu bạn muốn bất kỳ mô-đun nào trong sổ làm việc của mình truy cập vào đối tượng Danh sách Mảng, thì hãy xác định nó là một đối tượng toàn cục
1 | Global MyCollection dưới dạng ArrayList mới |
Nhập và đọc từ danh sách mảng của bạn
Hành động cơ bản nhất mà bạn muốn thực hiện là tạo một danh sách mảng, đặt một số dữ liệu vào đó và sau đó chứng minh rằng dữ liệu đó có thể đọc được. Tất cả các ví dụ mã trong bài viết này giả định rằng bạn đang sử dụng liên kết sớm và đã thêm ‘mscorlib.tlb’ vào các tham chiếu VBA, như được mô tả ở trên
123456789101112 | Sub ArrayListExample ()‘Tạo đối tượng danh sách mảng mớiDim MyList làm ArrayList mới‘Thêm các mục vào danh sáchMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"‘Lặp lại qua danh sách mảng để chứng minh các giá trịĐối với N = 0 Đến MyList.Count - 1MsgBox MyList (N)N tiếp theoKết thúc Sub |
Ví dụ này tạo một đối tượng ArrayList mới, điền vào nó 3 mục và lặp qua danh sách hiển thị từng mục.
Lưu ý rằng chỉ mục ArrayList bắt đầu từ 0, không phải 1, vì vậy bạn cần trừ 1 từ giá trị Đếm
Bạn cũng có thể sử dụng vòng lặp ‘For… Each’ để đọc các giá trị:
123456789101112 | Sub ArrayListExample ()‘Tạo đối tượng danh sách mảng mớiDim MyList làm ArrayList mới‘Thêm các mục vào danh sáchMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"‘Lặp lại qua danh sách mảng để chứng minh các giá trịCho mỗi tôi trong danh sách của tôiMsgBox ITiếp theo tôiKết thúc Sub |
Chỉnh sửa và thay đổi các mục trong danh sách mảng
Ưu điểm chính của Danh sách Mảng so với Bộ sưu tập là các mục trong danh sách có thể được chỉnh sửa và thay đổi trong mã của bạn. Đối tượng Collection chỉ được đọc trong khi đối tượng Array List được đọc / ghi
123456789101112131415 | Sub ArrayListExample ()‘Tạo đối tượng danh sách mảng mớiDim MyList làm ArrayList mới‘Thêm các mục vào danh sáchMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"‘Thay đổi mục 1 từ‘ Lặp lại 2 ’thành‘ Đã thay đổi ’MyList (1) = "Đã thay đổi"‘Lặp lại qua danh sách mảng để chứng minh thay đổi đã hoạt độngCho mỗi tôi trong danh sách của tôi‘Tên mặt hàng hiển thịMsgBox ITiếp theo tôiKết thúc Sub |
Trong ví dụ này, mục thứ hai, ‘Item2’ được thay đổi thành giá trị ‘Changed’ (hãy nhớ rằng chỉ mục bắt đầu từ 0). Khi chạy lặp lại ở cuối mã, giá trị mới sẽ được hiển thị
Thêm một mảng giá trị vào danh sách mảng
Bạn có thể nhập các giá trị vào Danh sách Mảng của mình bằng cách sử dụng một mảng chứa danh sách các giá trị này hoặc tham chiếu đến các giá trị ô trên một trang tính
123456789101112131415161718 | Sub AddArrayExample ()‘Tạo đối tượng danh sách MảngDim MyList làm ArrayList mới‘Lặp qua các giá trị mảng thêm chúng vào danh sách mảngĐối với Mỗi v Trong Mảng ("A1", "A2", "A3")‘Thêm từng giá trị mảng vào danh sáchMyList.Add vKế tiếp‘Lặp qua các giá trị mảng với các tham chiếu trang tính thêm chúng vào danh sách mảngĐối với Mỗi v Trong Mảng (Phạm vi ("A5"). Giá trị, Phạm vi ("A6"). Giá trị)MyList.Add vKế tiếp‘Lặp lại qua danh sách mảng để chứng minh các giá trịĐối với N = 0 Đến MyList.Count - 1‘Hiển thị mục danh sáchMsgBox MyList.Item (N)N tiếp theoKết thúc Sub |
Đọc / Lấy một Phạm vi Mục từ Danh sách Mảng
Bằng cách sử dụng phương thức GetRange trên Danh sách Mảng, bạn có thể chỉ định cơn thịnh nộ của các mục liên tiếp được truy xuất. Hai tham số được yêu cầu là vị trí chỉ mục bắt đầu và số lượng mục cần truy xuất. Mã điền vào một đối tượng Danh sách Mảng thứ hai với tập hợp con các mục sau đó có thể được đọc riêng.
123456789101112131415161718 | Sub ReadRangeExample ()‘Xác định đối tượngLàm mờ danh sách MyList dưới dạng ArrayList mới, MyList1 dưới dạng đối tượng‘Thêm các mục vào đối tượng‘ MyList ’MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item6"MyList.Add "Item4"MyList.Add "Item7"‘Chụp 4 mục trong‘ MyList ’bắt đầu từ vị trí chỉ mục 2Đặt MyList1 = MyList.GetRange (2, 4)‘Lặp lại qua đối tượng‘ MyList1 ’để hiển thị tập hợp phụ các mụcCho mỗi tôi trong danh sách của tôi1‘Tên mặt hàng hiển thịMsgBox ITiếp theo tôiKết thúc Sub |
Tìm kiếm các mục trong danh sách mảng
Bạn có thể kiểm tra xem một mục đã đặt tên có trong danh sách của mình hay không bằng cách sử dụng phương pháp "Chứa". Điều này sẽ trả về True hoặc False
1 | MsgBox MyList.Contains ("Lặp lại 2") |
Bạn cũng có thể tìm vị trí chỉ mục thực tế bằng cách sử dụng phương pháp ‘IndexOf’. Bạn cần chỉ định chỉ mục bắt đầu cho tìm kiếm (thường là 0). Giá trị trả về là chỉ số của phiên bản đầu tiên của mục tìm thấy. Sau đó, bạn có thể sử dụng một vòng lặp để thay đổi điểm bắt đầu thành giá trị chỉ mục tiếp theo để tìm các trường hợp khác nếu có một số giá trị trùng lặp.
Nếu giá trị không được tìm thấy thì giá trị -1 được trả về
Ví dụ này minh họa bằng cách sử dụng ‘Chứa’, không tìm thấy mục và lặp qua danh sách mảng để tìm vị trí của tất cả các mục trùng lặp:
1234567891011121314151617181920212223242526 | Sub SearchListExample ()‘Xác định danh sách mảng và các biếnDim MyList làm ArrayList mới, Sp as Integer, Pos As Integer‘Thêm các mục mới bao gồm một bản saoMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item1"‘Kiểm tra“ Item2 ”trong danh sách - trả về TrueMsgBox MyList.Contains ("Lặp lại 2")‘Nhận chỉ mục của giá trị không tồn tại - trả về -1MsgBox MyList.IndexOf ("Mục", 0)‘Đặt vị trí bắt đầu cho tìm kiếm thành 0Sp = 0‘Lặp lại qua danh sách để nhận tất cả các vị trí của‘ Item1 ”Làm‘Nhận vị trí chỉ mục của‘ Item1 ’tiếp theo dựa trên vị trí trong biến‘ Sp ’Pos = MyList.IndexOf ("Item1", Sp)‘Nếu không tìm thấy trường hợp nào khác của‘ Item1 ’thì hãy thoát khỏi vòng lặpNếu Pos = -1 thì Thoát Do‘Hiển thị phiên bản tiếp theo được tìm thấy và vị trí chỉ mụcMsgBox MyList (Pos) & "at index" & Pos‘Thêm 1 vào giá trị chỉ mục tìm thấy cuối cùng - giá trị này bây giờ trở thành vị trí bắt đầu mới cho tìm kiếm tiếp theoSp = Pos + 1VòngKết thúc Sub |
Lưu ý rằng văn bản tìm kiếm được sử dụng phân biệt chữ hoa chữ thường và các thẻ đại diện không được chấp nhận.
Chèn và xóa các mục
Nếu bạn không muốn thêm các mục của mình vào cuối danh sách, bạn có thể chèn chúng vào một vị trí chỉ mục cụ thể để mục mới nằm ở giữa danh sách. Số chỉ mục sẽ được tự động điều chỉnh cho các mục tiếp theo.
123456789101112131415 | Sub InsertExample ()‘Xác định đối tượng danh sách mảngDim MyList làm ArrayList mới‘Thêm các mục vào danh sách mảngMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item1"‘Chèn‘ Item6 ’ở vị trí chỉ mục 2MyList.Insert 2, "Item6"‘Lặp lại qua các mục trong danh sách mảng để hiển thị vị trí thứ tự và chỉ mục mớiĐối với N = 0 Đến MyList.Count - 1MsgBox MyList (N) & "Chỉ mục" & NN tiếp theoKết thúc Sub |
Trong ví dụ này, ‘Item6’ được thêm vào danh sách ở vị trí chỉ mục 2, vì vậy ‘item3’ ở vị trí chỉ mục 2 hiện chuyển sang vị trí chỉ mục 3
Một mục riêng lẻ có thể được xóa bằng cách sử dụng phương pháp "Xóa".
1 | MyList.Remove "Mục" |
Lưu ý rằng không có lỗi được tạo ra nếu không tìm thấy tên mặt hàng. Tất cả các số chỉ mục tiếp theo sẽ được thay đổi để phù hợp với việc loại bỏ.
Nếu bạn biết vị trí chỉ mục của mục, bạn có thể sử dụng phương pháp ‘RemoveAt’, ví dụ:
1 | MyList.RemoveAt 2 |
Lưu ý rằng nếu vị trí chỉ mục được cung cấp lớn hơn số lượng mục trong danh sách mảng, thì lỗi sẽ được trả về.
Bạn có thể xóa một loạt giá trị khỏi danh sách bằng cách sử dụng phương pháp ‘RemoveRange’. Các tham số là chỉ mục bắt đầu và sau đó là số lượng mục cần loại bỏ, ví dụ:
1 | MyList.RemoveRange 3, 2 |
Lưu ý rằng bạn sẽ gặp lỗi trong mã của mình nếu số mục được bù đắp từ giá trị bắt đầu lớn hơn số mục trong danh sách mảng.
Trong cả hai phương thức ‘RemoveAt’ và ‘RemoveRange’, một số mã sẽ được khuyến khích để kiểm tra xem số chỉ mục được chỉ định có lớn hơn tổng số mục trong danh sách mảng hay không để tránh bất kỳ lỗi nào có thể xảy ra. Thuộc tính ‘Count’ sẽ cung cấp tổng số mục trong danh sách mảng.
12345678910111213141516171819202122232425 | Sub RemoveExample ()‘Xác định đối tượng danh sách mảngDim MyList làm ArrayList mới‘Thêm các mục vào danh sách mảngMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item1"MyList.Add "Item4"MyList.Add "Item5"‘Chèn‘ Item6 ’ở vị trí chỉ mục 2MyList.Insert 2, "Item6"‘Xóa‘ Lặp lại 2 ’MyList.Remove "Lặp lại 2"‘Loại bỏ‘ Item ’- điều này không tồn tại trong danh sách mảng nhưng không lỗiMyList.Remove "Mục"‘Xóa mục ở vị trí chỉ mục 2MyList.RemoveAt 2‘Xóa 2 mục liên tiếp bắt đầu từ vị trí chỉ mục 2MyList.RemoveRange 3, 2‘Lặp lại qua danh sách mảng để hiển thị những gì còn lại và vị trí chỉ mục hiện đang ởĐối với N = 0 Đến MyList.Count - 1MsgBox MyList (N) & "Chỉ mục" & NN tiếp theoKết thúc Sub |
Lưu ý rằng nếu bạn đang sử dụng ‘RemoveAt’ để xóa một mục tại một vị trí cụ thể thì ngay sau khi mục đó bị xóa, tất cả các vị trí chỉ mục tiếp theo sẽ bị thay đổi. Nếu bạn có nhiều lần xóa bằng cách sử dụng vị trí chỉ mục, thì một ý tưởng hay là bắt đầu với số chỉ mục cao nhất và lùi xuống vị trí 0 để bạn luôn xóa đúng mục. Bằng cách này bạn sẽ không gặp vấn đề
Sắp xếp danh sách mảng
Một lợi thế lớn khác so với một bộ sưu tập là bạn có thể sắp xếp các mục theo thứ tự tăng dần hoặc giảm dần.
Đối tượng Danh sách Mảng là đối tượng duy nhất trong Excel VBA có phương pháp sắp xếp. Phương pháp sắp xếp rất nhanh và đây có thể là một cân nhắc quan trọng để sử dụng Danh sách Mảng.
Trong đối tượng collection, cần phải có một số tư duy ‘out of the box’ để sắp xếp tất cả các mục, nhưng với danh sách mảng, điều đó rất đơn giản.
Phương thức ‘Sort’ sắp xếp theo thứ tự tăng dần và phương thức ‘Reverse’ sắp xếp theo thứ tự giảm dần.
12345678910111213141516171819202122 | Sub ArrayListExample ()‘Tạo đối tượng Danh sách MảngDim MyList làm ArrayList mới‘Thêm các mục theo thứ tự không được sắp xếpMyList.Add "Item1"MyList.Add "Item3"MyList.Add "Item2"‘Sắp xếp các mục theo thứ tự tăng dầnMyList.Sort‘Lặp lại các mục để hiển thị thứ tự tăng dầnCho mỗi tôi trong danh sách của tôi‘Tên mặt hàng hiển thịMsgBox ITiếp theo tôi‘Sắp xếp các mục theo thứ tự giảm dầnMyList.Reverse‘Lặp lại các mục để hiển thị thứ tự giảm dầnCho mỗi tôi trong danh sách của tôi‘Tên mặt hàng hiển thịMsgBox ITiếp theo tôiKết thúc Sub |
Sao chép một danh sách mảng
Một danh sách mảng có cơ sở để tạo một bản sao hoặc bản sao của chính nó. Điều này hữu ích nếu người dùng thực hiện các thay đổi đối với các mục bằng giao diện người dùng và mã VBA của bạn, nhưng bạn cần giữ một bản sao của các mục ở trạng thái ban đầu làm bản sao lưu.
Điều này có thể cung cấp cho người dùng tính năng "Hoàn tác". Họ có thể đã thực hiện các thay đổi và muốn trở lại danh sách ban đầu.
123456789101112131415 | Sub CloneExample ()‘Xác định hai đối tượng - danh sách mảng và một đối tượngLàm mờ danh sách MyList dưới dạng ArrayList mới, MyList1 dưới dạng đối tượng‘Điền đối tượng đầu tiên bằng các mụcMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"‘Sao chép Mylist vào MyList1Đặt MyList1 = MyList.Clone‘Lặp lại qua MyList1 để chứng minh nhân bảnCho mỗi tôi trong danh sách của tôi1‘Tên mặt hàng hiển thịMsgBox ITiếp theo tôiKết thúc Sub |
‘MyList1’ hiện chứa tất cả các mục từ ‘MyList’ theo cùng một thứ tự
Sao chép một mảng danh sách vào một đối tượng mảng VBA thông thường
Bạn có thể sử dụng một phương pháp đơn giản để sao chép danh sách mảng vào một mảng VBA bình thường:
123456789101112131415 | Mảng conExample ()‘Tạo đối tượng danh sách mảng và một đối tượng mảng chuẩnDim MyList làm ArrayList mới, NewArray dưới dạng biến thể‘Điền danh sách mảng với các mụcMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"‘Sao chép danh sách mảng sang mảng mớiNewArray = MyList.ToArray‘Lặp lại qua mảng mới - lưu ý rằng số danh sách mảng cung cấp chỉ số tối đaĐối với N = 0 Đến MyList.Count - 1‘Tên mặt hàng hiển thịMsgBox NewArray (N)N tiếp theoKết thúc Sub |
Sao chép một mảng danh sách vào một phạm vi trang tính
Bạn có thể sao chép danh sách mảng của mình vào một trang tính và tham chiếu ô cụ thể mà không cần phải lặp qua danh sách mảng. Bạn chỉ cần chỉ định tham chiếu ô đầu tiên
123456789101112131415 | Phạm vi phụExample ()‘Tạo đối tượng danh sách mảng mớiDim MyList làm ArrayList mới‘Thêm các mục vào danh sáchMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"‘Xóa trang mục tiêuTrang tính ("Trang 1"). UsedRange.Clear‘Sao chép các mục trên một hàngTrang tính ("Sheet1"). Phạm vi ("A1"). Thay đổi kích thước (1, MyList.Count) .Value = MyList.toArray‘Sao chép các mục xuống một cộtTrang tính ("Trang 1"). Phạm vi ("A5"). Thay đổi kích thước (MyList.Count, 1) .Value = _WorksheetFunction.Transpose (MyList.toArray)Kết thúc Sub |
Làm trống tất cả các mục từ danh sách mảng
Có một chức năng đơn giản (Clear) để xóa hoàn toàn danh sách mảng
1234567891011121314 | Sub ClearListExample ()‘Tạo đối tượng danh sách mảngDim MyList làm ArrayList mới‘Thêm các mặt hàng mớiMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"‘Hiển thị số lượng mặt hàngMsgBox MyList.Count‘Xóa tất cả các mụcMyList.Clear‘Hiển thị số lượng các mục để chứng minh rằng rõ ràng đã hoạt độngMsgBox MyList.CountKết thúc Sub |
Ví dụ này tạo các mục trong danh sách mảng và sau đó xóa danh sách mảng. Hộp thông báo chứng minh trước và sau số lượng mục trong danh sách mảng.
Tóm tắt các phương pháp danh sách mảng cho Excel VBA
Nhiệm vụ | Thông số | Các ví dụ |
Thêm / Chỉnh sửa mục | Giá trị | MyList.Add “Item1” |
MyList (4) = “Lặp lại 2” | ||
Sao chép một danh sách mảng | Không có | Làm mờ danh sách của tôi dưới dạng đối tượng |
Đặt MyList2 = MyList.Clone | ||
Sao chép vào Mảng | Không có | Dim MyArray làm biến thể |
MyArray = MyList.ToArray | ||
Sao chép vào một phạm vi trang tính (hàng) | Không có | Trang tính (“Sheet1”). Phạm vi (“A1”). Thay đổi kích thước (1, MyList.Count) .Value = MyList.ToArray |
Sao chép vào phạm vi trang tính (cột) | Không có | Trang tính (“Sheet1”). Phạm vi (“A3”). Thay đổi kích thước (MyList.Count, 1) .Value = WorksheetFunction.Transpose (MyList.ToArray) |
Tạo ra | “System.Collections.ArrayList” | Làm mờ danh sách của tôi dưới dạng đối tượng |
Đặt MyList = CreateObject (“System.Collections.ArrayList”) | ||
Tuyên bố | N / A | Làm mờ danh sách của tôi dưới dạng đối tượng |
Tìm / kiểm tra xem mục có tồn tại không | Mục cần tìm | MyList.Contains (“Lặp lại 2”) |
Tìm vị trí của một mục trong ArrayList | 1. Mục cần tìm. | Chỉ số mờ Không lâu |
2. Vị trí bắt đầu tìm kiếm. | IndexNo = MyList.IndexOf (“Item3”, 0) | |
IndexNo = MyList.IndexOf (“Item5”, 3) | ||
Nhận số lượng mặt hàng | Không có | MsgBox MyList.Count |
Chèn mục | 1. Chỉ mục - vị trí cần chèn tại. | MyList.Insert 0, “Item5” |
2 Giá trị - đối tượng hoặc giá trị cần chèn. | MyList.Insert 4, “Item7” | |
Đọc mục | Chỉ mục - số nguyên dài | MsgBox MyList.Item (0) |
MsgBox MyList.Item (4) | ||
Đọc mục được thêm sau cùng | Chỉ mục - số nguyên dài | MsgBox MyList.Item (list.Count - 1) |
Đọc mục đã thêm trước | Chỉ mục - số nguyên dài | MsgBox MyList.Item (0) |
Đọc tất cả các mục (Đối với từng) | N / A | Dim phần tử như một biến thể |
Đối với từng phần tử trong MyList | ||
Phần tử MsgBox | ||
Yếu tố tiếp theo | ||
Đọc tất cả các mục (Đối với) | Chỉ mục - số nguyên dài | Dim i As Long |
Đối với i = 0 Đến MyList.Count - 1 | ||
MsgBox i | ||
Tiếp theo tôi | ||
Xóa tất cả các mục | Không có | MyList.Clear |
Xóa mục ở vị trí | Lập chỉ mục vị trí mục đó ở đâu | MyList.RemoveAt 5 |
Xóa mục theo tên | Mục cần xóa khỏi ArrayList | MyList.Remove “Item3” |
Loại bỏ một loạt các mục | 1. Chỉ mục - vị trí bắt đầu. | MyList.RemoveRange 4,3 |
2. Đếm - số mục cần loại bỏ. | ||
Sắp xếp theo thứ tự giảm dần | Không có | MyList.Reverse |
Sắp xếp theo thứ tự tăng dần | Không | MyList.Sort |