2015-01-05 4 views
0

사용자가 연산자를 정의 할 수 있도록하려면 어떻게해야합니까? 예를 들어, 사용자가 입력합니다사용자 정의 함수에서 vba 사용자 정의 연산자

=iftrue(x+y,">=z",x+y) (much like a sumif or regular if function) 

정상적인 기능을 사용하거나 로직을 해결하기 위해 별도의 셀을 사용할 수 있음을 알고 있습니다. 그러나 내가이 일을하는 이유는 이미 계산 된 값을 반환하기보다는 재 계산해야 할 CPU 집약적 인 계산 때문입니다.

이것은 현재 가지고있는 내용입니다.

Function iftrue(Value1, Criteria1, ValueifTrue) 

' Function 

If Value1 = Criteria1 Then 
iftrue = ValueifTrue 

Else: iftrue = Value1 

End If 

End Function 
+1

가능한 모든 연산자를 열거하고 선택 사례로 사용하십시오 –

+0

값은 어느 방식으로 계산됩니다. 한 가지 방법은 다른 것보다 CPU 집약도가 적다는 것을 어떻게 생각합니까? –

+0

= if ((x + y)> = z, z, (x + y))이 경우 대답이 거짓이면 대답을 다시 계산해야합니다. 내 udf에서 (x + y) 값이 저장되고 false 인 경우 반환되는 것으로 가정합니다. – vbanoobe

답변

1

내가 추측 할 것입니다 코드의이 수정 된 버전, 그것을 밖으로 시도 ..

Function IfTrue(Value1, Criteria1, ValueifTrue) 
    'Function to Evaluate Calculation' 

    If Evaluate(Value1 & Criteria1) Then 
     IfTrue = ValueifTrue 
    Else 
     IfTrue = Value1 
    End If 

End Function 

이, 당신이에 개발 단지 기본적인 생각 할 수도 있습니다!

+0

@ vba4all - 포인터를 가져 주셔서 감사합니다. 나는 이것을 Access VBA라고 생각했다. Excel의 경우 평가입니다. 고마워. :) – PaulFrancis

+0

아무 문제 없어, 잘 했어 ++ –

관련 문제