Cách thông thường để làm điều này trong VBA là phải có một chứa một thể hiện của B cũng như có một thực hiện giao diện của B, và sau đó ủy thác cuộc gọi đến các giao diện B A đến nội B.
này là những thứ cũ, nhưng thấy Visual Studio 6.0 Lập trình Hướng dẫn:
http://msdn.microsoft.com/en-us/library/aa716285(VS.60).aspx
có một chương về "Nhiều (Inter) Faces của Bộ luật Tái sử dụng" mô tả quy ước này:
http://msdn.microsoft.com/en-us/library/aa240846(v=VS.60).aspx
Cách MS mô tả nó là:
Ngoài việc thực hiện trừu tượng giao diện, bạn có thể sử dụng lại mã của bạn bằng cách thực hiện giao diện của một lớp học bình thường , và sau đó chọn lọc ủy thác cho một ẩn ví dụ của lớp .
Điều này có nghĩa là việc thừa kế triển khai yêu cầu nhiều phương thức ủy quyền rõ ràng. Thậm chí còn có một phân nhóm chương: "Không phải là điều này có tẻ nhạt?". Tuy nhiên, một lý do tại sao OOP trong VBA là một Pita (TM) ...
EDIT RẰNG sẽ không phù hợp trong một chú thích:
Để trả lời những câu hỏi mà bạn đặt ra trong bình luận của bạn, tốt, A là a B. Khi bạn thực hiện giao diện A thực hiện B, bạn chủ yếu nói rằng bạn có thể xử lý một thể hiện của A như thể nó thực sự thuộc loại B. Trong VBA, cách bạn làm điều đó là khai báo một biến kiểu B, và sau đó đặt nó vào một trường hợp của A. VBA sẽ biết phải làm gì khi bạn gọi nó như một B:
Dim usedAsB as B
Dim anA as A
Set anA = New A
Set usedAsB = anA 'fine since A implements B
usedAsB.something() 'will call B_something() defined in class A
Theo như những gì bạn thấy trong deb ug cửa sổ, tôi không lý do tại sao nó xuất hiện theo cách đó. Và theo như phái đoàn bị ép buộc, tôi không chắc ý bạn là gì. VBA tự động gửi các cuộc gọi đến giao diện B đến đúng phương thức trong lớp A. Nếu bạn có nghĩa là tự động tạo ra các mã để kế thừa thực hiện B theo cách mô tả ở trên, không có gì giống như tôi biết cho VBA. Tôi nghĩ rằng các phiên bản "chuyên nghiệp" khác nhau của VB6 có thể làm điều đó, nhưng tôi chưa bao giờ sử dụng VB6 vì vậy tôi không biết.
Cảm ơn! Bạn có biết một số nguồn về chính xác instancing của các lớp học trong VBA?Trong debug, tôi thấy rằng lớp A có một trường kiểu B. Vì vậy, ở đâu đó trên internet tôi thấy rằng đối tượng kiểu A là một đối tượng kiểu B (!), Quả thật vậy; với phái đoàn bắt buộc. – nikaan
@Nikita, tôi sẽ đọc qua các chương khác trong Hướng dẫn của Lập trình viên để đối phó với "lập trình với các đối tượng". Theo như câu hỏi khác, tôi sẽ chỉnh sửa câu trả lời của tôi, vì nó có lẽ sẽ không phù hợp trong một bình luận. Vì vậy, hãy tìm trong vài phút ... – jtolle