VB - 문자열의 수학적 표현식 평가

소개

VBA에서 Evaluate 함수는 영숫자 변수에 설정된 수식을 인수로 취해서 결과를 영숫자 변수로 반환합니다.

VB에서는이 함수가 없어서 직접 구현해야합니다.

이 데모는 간단한 계산 +, -, * 및 / 및 괄호를 지원합니다.

데모는 Evaluate 기능과 동일한 방식으로 작동합니다.

이 하위는 테스트 용으로 만 사용됩니다.

 "((3 * (12.223 + 15)) - 7) * 21) / 7"Ret = Evaluer (A) 'Debug.Print Ret'= 224.007 A TestCalcul () = "((123.32 / 2.67) * 6) +2127.34"Ret = Evaluer (A) '= 2404.46359550562'Debug.Print Ret End Sub 

코드

 함수 계산자 (ByVal Txt As String) 문자열로 사용됨 정수로, 정수로, 정수로 fNB로 정수 P1으로 정수, 정수로 P2로 감쇠 됨 문자열로 감싸기 문자열로 감춤 ' (Txt, i, 1) = "("그렇다면 oNB = oNB (txt, i, 1) = " + 1 다음에 i = 1 To Len (Txt) If Mid (Txt, i, 1) = 0이면 If = 1 To Len (Txt) ")"then "fNB = fNB + 1 다음 i 이외의 경우, Evalue 지시문 계산 EverueExpression (Txt) 종료 함수 End If if NN fNB 그런 다음 '부모와 자식이 일치하지 않습니다. (0, 0, 1, 2, 3, 4, 5, 6, 7, 8) Invalue '수식어는 부모가된다. Buff = EvalueExpression (중간 (Txt, P1 + 1, P2-1)) 'Remplacer l'표현식과 보조 부모님 Txt = Left (Txt, P1-1) & Buff & Mid (Txt, P1 + P2 + 1) oNB = oNB - 1 Wend '더하기 부모, 더 나은 la dernière 표현 Evaluer = EvalueExpression (Txt) End Function 함수 EvalueExpression (A As String) 문자열로 사용됨 Dim T 정수로, S로 정수로 표시 Dim B 문자열로, 정수로, 부울로 C 부울 Dim c1 Double로, c2로 Double, 정수로 표시 Dim (A, i, 1)에 대한 핀이 아닐 때 (A, "", "") = Len (A) T = Asc (A, S)) Else c2 = Val (Mid (A, S)) 만약 T <48 그리고 T 46 또는 i = Len (A) S, i - S)) End If R = Str (CalculSimple (c1, c2, Signe)) i = Len (A) 그렇다면 Fin = True Else A = 트림 (R & Mid (A, i)) C = 거짓 End If 다음으로 끝내기 I 'remplacer l'expression paral reatultat EvalueExpression = (왼쪽 (A, i-1)) End = 트림 (R) 엔드 기능 

아래 함수에서 여러 유형의 계산을 추가 할 수 있습니다.

 함수 CalculSimple (n1은 Double, n2는 Double, Signed As Integer) Double Select Case Signe Case 43 '+ CalculSimple = n1 + n2 Case 45'- CalculSimple = n1 - n2 Case 42 '* CalculSimple = n1 * n2 Case 47' / CalculSimple = n1 / n2 'Ici, ajouter d' autre calcul ... End Select End Function 
  • 참고 : 계산기와 완전히 일치하려면 먼저 * adn / function을 평가 한 다음 + 및 - 것을 계산해야합니다.
  • 예 3 + 5 * 7
  • 계산기는 다음과 같이 처리합니다. 5 * 7 = 35 + 3 = 38
  • 그러나이 함수의 경우 : 3 + 5 = 8 * 7 = 56
  • "EvalueExpression"을 수정하거나 3+ (5 * 7)로 계산을 입력 할 수 있습니다.

이전 기사 다음 기사

톱 팁