¿Cómo escribir VB para calcular fórmulas que contienen caracteres o letras chinos y tienen corchetes (con texto o números entre corchetes)?
Subcomando privado1_Click()
Atenuar t como cadena, cs(10) como cadena, b() como cadena, c() como cadena, jg como único
' Encuentra el resultado 16.08 obtenido calculando este tipo de fórmula: 1m*2m+3m*2m[2 ejes derecho]+[3 ejes izquierdo]5.2㎡+viga 1.2m*2.4m
t = "1m*2m+3m*2m[2 ejes derecho]+[3 ejes izquierdo]5,2㎡+viga 1,2m*2,4m"
cs(10) = t p>
cs(0) = "0123456789.+-*/"
cs(1) = 0
cs(3) = """
'Eliminar el contenido del corchete del medio
For j = 1 To Len(t)
cs(2) = Mid(t, j, 1)
Si cs(2) = "[" Entonces
cs(1) = 1
De lo contrario, si cs(2) = "]"Entonces
cs (1) = 0
Fin si
Si cs(1) = 0 Entonces
cs(3) = cs(3) & cs( 2)
Finalizar si
Siguiente
t = Reemplazar(cs(3), "]", "")
' Depurar. Imprimir t
'Eliminar caracteres redundantes, como chino y unidades
cs(4) = ""
For j = 1 To Len(t ) p>
cs(2) = Mid(t, j, 1)
Si InStr(cs(0), cs(2)) > p>cs (4) = cs(4) & cs(2)
Finalizar si
Siguiente
t = cs(4)
Debug.Print t
'Dividir números y operadores
cs(5) = Reemplazar(t, "+", ","")
cs (5) = Reemplazar(cs(5), "-", ","")
cs(5) = Reemplazar(cs(5), "*", ","")
cs(5) = Reemplazar(cs(5), "/", " ,")
b() = Dividir(cs(5), ","") 'Dividir los números y guardado en la matriz b()'
cs(6) = ""
Para j = 1 a Len(t)
cs(2) = Mid (t, j, 1)
Si InStr("+-*/", cs( 2)) > 0 entonces
cs(6) = cs(6) & cs(2) & ","
Finalizar si
Siguiente
cs(6) = cs(6) &"+," p >
c() = Split(cs(6), ","") 'El operador de división se almacena en la matriz c()
'Según el operador, se realiza la fórmula< / p>
jg = 0
Para j = 0 A UBound(c()) - 1
Si
c(j) = "+" Y c(j + 1) = "+" Entonces
jg = jg + Val(b(j))+ Val(b(j + 1)) p>
Finalizar si
Si c(j) = "+" y c(j + 1) = "*" Entonces
jg = jg + Val(b( j + 1)) * Val(b(j + 2))
End If
'Puedes agregar más procesamiento de juicio si hay una resta o división.
Siguiente paso
Debug.Print cs(10) & "El resultado final es: =" & jg
End Sub