VB - Įvertinkite eilutės matematinę išraišką

Įvadas

VBA vertinime funkcija kaip argumentas nurodo formulę, nurodytą raidiniu ir skaitmeniniu kintamuoju, ir grąžina rezultatą raidiniu ir skaitmeniniu kintamuoju.

„VB“ ši funkcija nėra ir ją turite įgyvendinti patys.

Ši demonstracija palaiko paprastus skaičiavimus +, -, * ir / ir skliaustelius.

Demonstracija veikia taip pat, kaip ir įvertinimo funkcija.

Ši dalis naudojama tik bandymams.

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

Kodas

 Funkcija Evaluer (ByVal Txt As String) Kaip String Dim i Integer, oNB Kaip Integer, fNB Kaip Integer Dim P1 kaip Integer, P2 Kaip Integer Dim Buff Kaip String Dim T Kaip String 'Pour les calcals y faut un point à la place de la virgule Txt = Pakeisti (Txt, ", ", ".") "Voir s'il ya des (i = 1 į Len (Txt) Jei viduryje (Txt, i, 1) =" ("Tada oNB = oNB + 1 Toliau i 'S'il ya des ((ouvrantes), voir si elle sont validée par des) (fermantes) Jei oNB> 0 Tada i = 1 į Len (txt) Jei viduryje (Txt, i, 1) = ")" Tada fNB = fNB + 1 Next i Else 'Pas de parenthèse, Evalue directement le calcul Evaluer = EvalueExpression (Txt) Exit Funkcijos pabaiga Jei Jei ONB fNB Tada' Atsijungimo funkcija, žinutė sujungia funkcijų pabaigą Jei oNB> 0 'recherche la dernière parenthèse ouvrante P1 = InStrRev (Txt, "(") "Recherche la parenthèse fermante de l'expression P2 = InStr (viduryje (Txt, P1 + 1), ") ") Įvertinkite l „išraiška qui est entre parenthèses Buff = EvalueExpression (vidurkis (Txt, P1 + 1, P2 - 1)) „Remplacer l'expression par le résultat et supprimer les parenthèses Txt = kairė (Txt, P1 - 1) ir„ Buff & Mid “(Txt, P1 + P2 + 1) oNB = oNB - 1 Wend 'plus de parenthèse, évaluer la dernière išraiška Evaluer = EvalueExpression (Txt) End Function Funkcija EvalueExpression (A kaip String) Kaip String Dim T Kaip Integer, S Kaip Integer Dim B kaip String, i Kaip Integer, C Kaip Boolean Dim c1 Kaip Double, c2 Kaip Double, Signe Kaip Dvigubas, Signe As Integer Dim R kaip eilutė, Fin kaip Boolean, z Kaip Integer 'didever les espace A = Pakeiskite (A, ", " ") Nors ne Fin i = 1 Į Len (A) T = Asc (Vid. (A, i, 1 )) Jei T <48 Ir T 46 arba i = Len (A) Tada Jei C Tada 'évalue Jei i = Len (A) Tada c2 = Val (Mid (A, S)) Else c2 = Val (Mid (A, S, i - S)) Pabaiga Jei R = Str (CalculSimple (c1, c2, Signe)) Jei i = Len (A), tada Fin = True Else A = Trim (R & Mid (A, i)) C = False Baigti, jei išeiti kitam 'sépare le 1er chiffre c1 = Val (kairė (A, i - 1)) Signe = TS = i + 1 C = tikrasis pabaiga, jei pabaiga Jei seka i Wend' remplacer l'expression par le résultat EvalueExpression = Trim (R) pabaiga Funkcija 

Žemiau esančioje funkcijoje galite pridėti įvairių tipų skaičiavimus:

 Funkcija CalculSimple (n1 kaip dvigubas, n2 kaip dvigubas, Signe kaip integer) kaip dvigubo pasirinkimo atvejis Signe atvejis 43 '+ skaičiuojamasis = n1 + n2 atvejis 45' - skaičiuoklė = n1 - n2 atvejis 42 '* skaičiuoklė = n1 * n2 47 atvejis' / CalculSimple = n1 / n2 'Ici, ajouter d'autre calcul ... Pabaiga Pasirinkite pabaigos funkciją 
  • Pastaba: Kad jis būtų visiškai suderintas su skaičiuokle, pirmiausia turite įvertinti * adn / function ir tik tada + ir -.
  • 3 pavyzdys + 5 * 7
  • Skaičiuoklė jį apdoroja taip: 5 * 7 = 35 + 3 = 38
  • Tačiau su šia funkcija: 3 + 5 = 8 * 7 = 56
  • Galite modifikuoti „EvalueExpression“ arba įvesti skaičiavimą kaip 3+ (5 * 7)

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai