Sử dụng chức năng này rất đơn giản:Trong VBA, làm thế nào để trả về một mảng/hoặc ghi vào các ô bằng cách sử dụng một hàm?
Function WriteArray() as Variant
Dim array(0 To 2)
array(0) = "A"
array(1) = "B"
array(2) = "C"
WriteArray = array
End Function
Tôi đã chờ đợi để xem kết quả trong toàn bộ mảng trong bảng tính Excel của tôi, nhưng đó không phải là trường hợp: Tôi chỉ nhận được chuỗi đầu tiên. Tôi biết có mẹo để hiển thị toàn bộ mảng trong bảng tính (bằng cách chọn một dải ô có công thức + F2 + CTRL + SHIFT + ENTER), nhưng tôi muốn VBA xử lý tất cả.
Tôi cũng đã cố gắng sử dụng biến Application.Caller để viết trực tiếp trong phạm vi "Người gọi" nhưng ngắt mã.
Cảm ơn rất nhiều sự giúp đỡ của bạn!
EDIT: Dưới đây là một đoạn code tôi cố gắng sử dụng:
Function WriteArray() As Variant
Dim arr(0 To 2)
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
WriteArray = arr
Dim StartRow, i As Integer
For i = 0 To UBound(arr)
Range("A" & i).Value = arr(i)
Next
End Function
Nó phá vỡ tại dòng "Range (" A "& i) .Value = arr (i)". Excel của tôi có bị hỏng không ?!
Trong thực tế điều này là không làm việc, mã VBA phá vỡ tại "Phạm vi (" A "& i + StartRow) .Value = MyArray (i)" ... đó là vấn đề của tôi cũng có. Mã này có hoạt động trên Excel của bạn không !? Tôi sử dụng Excel 2003. –
Nó hoạt động hoàn hảo trong Excel 2003. Thay đổi mọi "mảng" trong mã bắt đầu của bạn thành một tên biến khác KHÔNG phải là một từ dành riêng, như AbcList hoặc một thứ gì đó sắp xếp. – Eric
Tuy nhiên, nó phá vỡ ... Tôi sử dụng chính xác mã này: Chức năng WriteArray() As Variant Dim arr (0 Để 2) arr (0) = "A" arr (1) = "B" arr (2) = "C" WriteArray = arr Dim StartRow, i As Integer For i = 0 To UBound (arr) Range ("A" & i) .Value = arr (i) Tiếp End Function Tại "Phạm vi (" A "& i) .Value = arr (i)", nó chỉ thoát khỏi mã, ngay cả khi không ném bất kỳ lỗi nào ... không hợp lý với tôi :( –