VB - novērtēt virknes matemātisko izteiksmi

Ievads

VBA vērtēšanas funkcija izmanto argumentu formulai, kas norādīta burtciparu mainīgajā lielumā un atgriež rezultātu burtciparu rādītājā.

VB, šī funkcija ir pazudusi, un jums tas ir jāīsteno pats.

Šī demonstrācija atbalsta vienkāršus aprēķinus +, -, * un / un iekavās.

Demo darbojas tāpat kā vērtēšanas funkcija.

Šo apakšsadaļu izmanto tikai testēšanai.

 Sub TestCalcul () Dim A kā virkne Dim Ret kā virkne A = "(((3 * (12.223+ 15)) - 7) * 21) / 7" Ret = Novērtētājs (A) "Debug.Print Ret '= 224.007 A = "((123.32 / 2.67) * 6) +2127.34" Ret = Evaluer (A) "= 2404.46359550562" Debug.Print Ret End Sub 

Kods

 Funkcija Evaluer (ByVal Txt kā virkne) kā virkne Dim i kā integritāte, oNB kā integra, fNB kā integritāte Dim P1 kā integritāte, P2 kā integritāte Dim Buff kā virkne Dim T kā virkne “Pour les calcs y faut un point à la place de la virgule Txt = Aizstāt (Txt, ", ", ".") 'Voir s'il ya des (Attiecībā uz i = 1 uz Len (Txt) Ja Mid (Txt, i, 1) = "(" Tad oNB = oNB + 1 Nākamais i 'S'il ya des ((ouvrantes), voir si elle sont validée par des) (fermantes) Ja oNB> 0 Tad i = 1 uz Len (txt) Ja vidū (Txt, i, 1) = ")" Tad fNB = fNB + 1 Nākamais i Else 'Pas de parenthèse, Evalue directement le calcul Evaluer = EvalueExpression (Txt) Iziet Funkcija Beigas Ja Ja ONB fNB Tad' Pārslēgt Funkcijas beigas ' Ja ONB> 0 'recherche la dernière parenthèse ouvrante P1 = InStrRev (Txt, "(") "Recherche la parenthèse fermante de l'expression P2 = InStr (vidū ​​(Txt, P1 + 1), ") ") Novērtēt l 'izteiksme qui est entre parenthèses Buff = NovērtēšanaExpression (vidus (Txt, P1 + 1, P2 - 1)) 'Remplacer l'expression par le résultat et supprimer les parenthèses Txt = pa kreisi (Txt, P1 - 1) & Buff & Mid (Txt, P1 + P2 + 1) oNB = oNB - 1 Wend' plus de parenthèse, évaluer la dernière izteiksme Evaluer = EvalueExpression (Txt) End Function Funkcija EvalueExpression (A kā String) Kā String Dim T Kā Integer, S Kā Integer Dim B String, i Kā Integer, C Kā Boolean Dim c1 Kā Double, c2 Kā Double, Signe As Integer Dim R kā virkne, Fin kā Būla, z Tā kā Integer 'palielinās les espace A = Aizstāt (A, ", " ") Kamēr nav Fin i = 1 Lai Len (A) T = Asc (vidū ​​(A, i, 1 )) Ja T <48 un T 46 vai i = Len (A) Tad tad, ja C Tad 'évalue Ja i = Len (A) Tad c2 = Val (vidū ​​(A, S)) Else c2 = Val (Mid (A, S, i - S)) Beigas Ja R = Str (CalculSimple (c1, c2, Signe)) Ja i = Len (A) Tad Fin = True Else A = Trim (R & Mid (A, i)) C = False Beidzas, ja iziet ārā 'sépare le 1er chiffre c1 = Val (pa kreisi (A, i - 1)) Signe = TS = i + 1 C = īsta beigas, ja beigas Ja nākamais i Wend' remplacer l'expression par le résultat NovērtēšanaExpression = Trim (R) beigas Funkcija 

Varat pievienot dažāda veida aprēķinus zemāk norādītajā funkcijā:

 Funkcija CalculSimple (n1 kā Double, n2 kā Double, Signe kā Integer) Kā dubultās izvēles gadījums Signe Case 43 '+ CalculSimple = n1 + n2 Lieta 45' - CalculSimple = n1 - n2 Case 42 '* CalculSimple = n1 * n2 47. / CalculSimple = n1 / n2 'Ici, ajouter d'autre calcul ... Beigu izvēles beigu funkcija 
  • Piezīme. Lai tas pilnībā atbilstu kalkulatoram, vispirms jānovērtē * adn / function un tikai tad + un -.
  • 3. piemērs + 5 * 7
  • Kalkulators to apstrādā šādi 5 * 7 = 35 + 3 = 38
  • Bet ar šo funkciju: 3 + 5 = 8 * 7 = 56
  • Jūs varat mainīt "Novērtēt izrakstu" vai ievadīt aprēķinu kā 3+ (5 * 7)

Iepriekšējais Raksts Nākamais Raksts

Top Padomi