Hàm diễn giải một chuỗi công thức tính sang giá trị. (1 người xem)

Người dùng đang xem chủ đề này

tranngochai1979

Thành viên mới
Tham gia
14/2/08
Bài viết
11
Được thích
0
Trên diễn đàn có đoạn code:

Public Function Gtr(Dulieu As String, Optional Pcach = ",")
Dim i, temp
If Len(Dulieu) = 0 Then Exit Function
Dulieu = Replace(Dulieu, Pcach, "")
Dulieu = Replace(Dulieu, ",", ".")
For i = 1 To Len(Dulieu)
Select Case Mid(Dulieu, i, 1)
Case "x": temp = temp & "*"
Case ":": temp = temp & "/"
Case "+", "-", "*", "/", "(", ")", ".", 0 To 9: temp = temp & Mid(Dulieu, i, 1)
End Select
Next i
For i = 1 To Len(Dulieu)
Select Case Right(temp, 1)
Case "-", "+", "*", "/": temp = Left(temp, Len(temp) - 1)
End Select
Next
Gtr = Evaluate(temp)
End Function


Tuy nhiên, hàm này chỉ chạy theo hệ dấu decimal Symbol là "." và digit grouping symbol là "," theo hệ mặc định của hệ điều hành. Hệ US.

Ở máy mình, hệ dấu
decimal Symbol là "," và digit grouping symbol là "." theo yêu cầu của phần mềm riêng nên code trên chạy không đúng.

Ô A1:
7,2*0,3*2 thì Ô B1 = 432
Ô A2: 7.2*0.3*2 thì Ô B2 = 4,32

Mình muốn hỏi anh em nào thạo code là cái đoạn mã trên phải sửa lại như thế nào để nó chạy đúng với hệ dấu trên máy mình (Phần viết code này mình hơi dốt, cũng đã thử thay đổi linh tinh nhưng không được).
Xin cám ơn trước.
 

File đính kèm

Bài viết mới nhất

Back
Top Bottom