2010-10-27 37 views
7

điều này phác thảo những gì tôi đang cố gắng thực hiện.vba: từ điển trở về từ hàm

tính năng này không hoạt động đối với tôi và không rõ lý do.

cảm ơn bạn trước vì bất kỳ và tất cả trợ giúp.

 Sub mySub() 
     dim myDict as Dictionary 
      myDict=new Dictionary 

       myDict=myFunc() 

     End Sub 

     Function myFunc() 
      dim myDict2 
       set myDict2 = new Dictionary 

        'some code that does things and adds to myDict2' 

      myFunc=myDict2 
     End Function 

Trả lời

19

Bạn sẽ cần phải sử dụng từ khoá SET bất cứ lúc nào bạn đang gán một đối tượng thay vì một giá trị :

Sub mySub() 
     dim myDict as Dictionary 
     set myDict = myFunc() 
    End Sub 

    Function myFunc() as Dictionary 
     dim myDict2 as Dictionary 
     set myDict2 = new Dictionary 
       'some code that does things and adds to myDict2' 
     set myFunc=myDict2 
    End Function 

mã ban đầu của bạn cũng đã tạo ra myDict như một đối tượng từ điển mới , sau đó ngay lập tức thay thế nó bằng một cái khác. Bạn chỉ có thể bỏ qua bước đó.

+0

hoạt động với một thay đổi nhỏ nếu bạn đặt myFunc (1) = myDict2. nhưng sau đó điều này tạo ra một vòng lặp vô hạn. –

+1

Không, đó không phải là vòng lặp vô hạn. 'myFunction = Value' (hoặc' SET myFunction = Object') là VBA tương đương với 'RETURN Value' – BradC

+0

Và bạn không muốn' myFunc (1) = ', bạn chỉ muốn' myFunc = ', nếu không bạn chỉ cần đặt giá trị đầu tiên của từ điển cho toàn bộ đối tượng khác, đó không phải là thứ bạn muốn. – BradC

Các vấn đề liên quan