이 시도 : 코드에서 다른
Private pSkipTrade As Boolean
Public Property Let SkipTrade(lSkipTrade As Boolean)
pSkipTrade = lSkipTrade
End Property
Property Get SkipTrade() As Boolean
SkipTrade = pSkipTrade
End Property
어딘가에 다른 변수를 사용하여 (예를 들어, value
)이 속성을 설정합니다. 이 변수는 유형 Boolean
이 아닌 경우 (예를 들어, Long
, Double
, 또는 Decimal
는) 다음과 같은 일을 할 수 있습니다
Sub Test()
Dim MyObject As Object
Dim Value As Double '## or, whatever
'# CREATE THE CLASS OBJECT
Set MyObject = New cMyObject '## Modify to be your correct Type
Value = Application.InputBox("Enter any number")
'# ASSIGN THE PROPERTY VALUE BASED ON A LOCAL VARIABLE/LOGIC
' use boolean logic to test whether "value = 0"
' a non-zero value will return "True"
MyObject.SkipTrade = Not (CDbl(Value) = 0)
'# Display the value, so you can see that this is working correctly:
MsgBox "The value of SkipTrade is: " & MyObject.SkipTrade
End Sub
여러 조건이있는 경우,에 Function
전화를 사용하는 것이 좋을 것이다 객체의 속성 할당 중에 속성 값을 반환합니다.
당신은 같은 함수를 호출 할 수 있습니다
:
Function CheckSkipTrade(value) As Boolean
Dim myVal as Boolean
If IsNumeric(value) Then
'returns true or false test whether 'value' = 0.
myVal = Not(CDbl(value) = 0)
Else:
myVal = False
End If
'# Return the value of the function test:
CheckSkipTrade = myVal
End Function
: 당신이 통합해야 할 수있는 로직을 포함하도록 수정 될 수있는이 같은 기본 코드 모듈의 기능으로
MyObject.SkipTrade = CheckSkipTrade(value)
을
MyObject
클래스 개체의 SkipTrade
속성에 대한 할당을 직접 지정한다는 것은 위의 예에서 매우 명백하게 나타납니다 (숨겨진 것이 아니라)는 것을 알 수 있습니까? 반대로, 메소드는 기본적으로 객체 모듈에 숨겨진 서브 루틴을 호출합니다.이 서브 루틴은 속성에 값을 할당합니다. 작동합니까? 예. 그것을하는 것이 가장 좋은 방법입니까? 나는 그렇게 생각하지 않는다. 이것은 나중에 혼란을 일으킬 수있는 코딩 방법입니다 (특히이 프로젝트를 다른 사람에게 넘기는 경우).
명시 적으로이 암시 코딩보다 더 코딩.
:
가 그런 속성을 사용하면 코드로하자 속성에 있었다 논리를 이동 :
그래서 당신은 부울 유형에 Let 속성의 매개 변수를 변경해야 @DavidZemens. 믿거 나 말거나. 방금 그 방법을 배웠습니다! –