2015-01-12 4 views
2

기본적으로 VBA에서 매개 변수를 전송하는 함수가 있습니다. 그런 다음 매개 변수를 사용하여 일부 값을 계산합니다. 내가 보내는 매개 변수 중 하나가 하나 이상방정식 기호를 If 문으로 보내기

if x > y 

또는

if x < y 

이 따라의 if 문에 사용되는 "<" 또는 ">"이있는 내가 보낼 수 있습니다.

현재 "constraint"라는 문자열로 보내고 다음을 수행합니다.

if constraint = ">" then 
    if x > y 

    *code* 
    end if 

elseif constraint = "<" then 
    if x < y 
    *code* 
    end if 
end if 

해당되는 경우.

다른 코드와 복잡해집니다. 이 문장을 하나의 if 문으로 다시 정의 할 수있는 방법이 있습니까?

+1

각 작업이 자체 함수라면 'AddressOf' 또는'Run'을 사용하여 함수를 전달할 수 있습니다. – Dai

+3

참/거짓 답을 얻어야하거나 게시 한 코드를 마무리하는 함수를 만들려면 'Application.Evaluate (x & constraint & y)'를 사용하면됩니다. –

+0

응답에 대한 환호. 각 작업을 자체 기능으로 만들고 그런 식으로 작업하고 있습니다. 그것은 내가 볼 수있는 최선의 방법입니다. 나중에 코드를 사용하면 약간 복잡해집니다. 이상적이라고 할 수있는 것은 "if x constraint y then ..."라고 말하면서 < or >에 넣을 수 있습니다! – monarch

답변

5

두 경우 모두 constraint을 특정 문자열로 사용하고 x constraint y을 실행하면 코드를 실행하지 않는 것으로 나타납니다. 따라서 :

If constraint = ">" And x > y Then 
    'code 
ElseIf constraint = "<" And x < y Then 
    'code 
End If 
+0

VBA에서 단락이 없으므로이 성능은 OP의 코드보다 실제로 나을 것입니다. 성능이 중요한 코드 일 경우 더 자세한 방법을 사용하는 것이 좋습니다. 어쨌든 +1. – RubberDuck

+0

죄송합니다. 내 코드가 명확하지 않습니다. < or >의 연산은 제약 조건에 따라 달라집니다. 기본적으로 데이터 열을 검색하고 설정 값보다 크거나 작은 값을 검색합니다. 따라서 ">"를 보내면 모든 조건에서 그것을 기록 할 장소가 필요하며 "<"를 보내면 대신 그 자리에 있어야합니다. – monarch

관련 문제