Tôi đang sử dụng vba với Excel 2007 và đang viết mã cho mô-đun lớp học.Các tham số tùy chọn trong Thuộc tính Let/Get hoạt động như thế nào?
1) là đoạn mã sau thậm chí có thể? ...
Về cơ bản tôi có hai enums, gọi cho họ eDATASET
và eDATATSUBSET
. Giá trị cụ thể từ eDATASET
sẽ kích hoạt nhiệm vụ từ tham số được tùy chọn chuyển vào thuộc tính Let
. Một cái gì đó như thế này:
Public Property Let foo(Optional ByVal lngSubSet as eDATASUBSET, _
ByVal lngSuperSet as eDATASET)
Select Case lngSuperSet
Case eDATASET.abc, eDATASET.def
mlngBar = lngSuperSet
Case eDATASET.xyz
'// if lngSubSet not passed, trigger error code...
mlngBar = lngSubSet
End Select
End Property
2) Làm thế nào để tôi thậm chí còn vượt qua một tham số tùy chọn để sở hữu một khả năng ghi khi gọi các đối tượng ...
Bên cạnh những vị trí dường như ngược của các thông số Optional
(so với tùy chọn các tham số trong hàm và subs), tôi gặp khó khăn khi tìm bất kỳ tài liệu nào về tính năng này. Trợ giúp vba nói điều này:
Tùy chọn. Chỉ ra rằng một đối số là không cần thiết. Nếu được sử dụng, tất cả các đối số tiếp theo trong arglist cũng phải là tùy chọn và được khai báo bằng cách sử dụng từ khóa Tùy chọn. Lưu ý rằng không thể cho phía bên phải của biểu thức Thuộc tính Hãy là Tùy chọn.
và các mục sau đây từ vbusers.com. Không giải thích nhiều về cách sử dụng. Vì vậy, làm thế nào tôi sẽ vượt qua tham số tùy chọn khi gọi đối tượng từ một mô-đun mã ... oObj.foo = ???
3) Có cách nào tốt hơn để làm điều này? ...
Tôi có một sự hiểu biết cơ bản về oop (ít nhất trong cách nó được thực hiện trong vba). Có cách nào tốt hơn để có điều kiện chấp nhận một tham số vào một đối tượng?
có thể trùng lặp của [Cho phép thuộc tính của mô-đun lớp VBA - có thể có nhiều đối số không?] (Http: // stackoverflow.com/questions/13823367/let-property-of-vba-class-modules-là-nó-thể-có-nhiều-đối số) –