letientambn
Thành viên mới
- Tham gia
- 8/12/22
- Bài viết
- 9
- Được thích
- 0
Chào ACE!
Em mới bắt đầu với VBA. Em có tạo hàm để chuyển đổi định dạng số sang chữ số có dấu phân cách hàng nghìn và phần thập phân.
Áp dụng hàm cho những ô giá trị số thông thường (như -0,1 hay 111,123 hay -100000,21234 hay 10000231...) thì được.
Tuy nhiên khi áp dụng với ô là kết quả của 1 hàm thì có trục trặc. Ví dụ như khi áp dụng với ô có giá trị như là: =9*1,1 hoặc =5*1000... thì được, nhưng khi áp dụng với =1,1*100 hay 100*1,1 thì báo lỗi value (mặc dù áp dụng với giá trị 110 chạy bình thường).
Code VBA em viết như sau. Mong nhận được sự giúp đỡ của ACE ạ! Em cảm ơn!
Function TEXTNUM(gt As Variant) As String
If gt < 0 Then dau = "-" Else dau = ""
duong = Abs(gt)
nguyen = Application.WorksheetFunction.RoundDown(duong, 0)
If duong = nguyen Then
ptp = ""
ElseIf duong <> nguyen Then
ptp = "," & mid(duong & "_", Application.WorksheetFunction.Find(",", duong & "_", 1) + 1, Application.WorksheetFunction.Find("_", duong & "_", 1) - Application.WorksheetFunction.Find(",", duong & "_", 1) - 1)
End If
a = nguyen
b = Len(a)
pn = ""
Do While b > 3
pn = "." & right(a, 3) & pn
b = b - 3
a = left(a, b)
Loop
If b <= 3 Then pn = a & pn
TEXTNUM = dau & pn & ptp
End Function
Em mới bắt đầu với VBA. Em có tạo hàm để chuyển đổi định dạng số sang chữ số có dấu phân cách hàng nghìn và phần thập phân.
Áp dụng hàm cho những ô giá trị số thông thường (như -0,1 hay 111,123 hay -100000,21234 hay 10000231...) thì được.
Tuy nhiên khi áp dụng với ô là kết quả của 1 hàm thì có trục trặc. Ví dụ như khi áp dụng với ô có giá trị như là: =9*1,1 hoặc =5*1000... thì được, nhưng khi áp dụng với =1,1*100 hay 100*1,1 thì báo lỗi value (mặc dù áp dụng với giá trị 110 chạy bình thường).
Code VBA em viết như sau. Mong nhận được sự giúp đỡ của ACE ạ! Em cảm ơn!
Function TEXTNUM(gt As Variant) As String
If gt < 0 Then dau = "-" Else dau = ""
duong = Abs(gt)
nguyen = Application.WorksheetFunction.RoundDown(duong, 0)
If duong = nguyen Then
ptp = ""
ElseIf duong <> nguyen Then
ptp = "," & mid(duong & "_", Application.WorksheetFunction.Find(",", duong & "_", 1) + 1, Application.WorksheetFunction.Find("_", duong & "_", 1) - Application.WorksheetFunction.Find(",", duong & "_", 1) - 1)
End If
a = nguyen
b = Len(a)
pn = ""
Do While b > 3
pn = "." & right(a, 3) & pn
b = b - 3
a = left(a, b)
Loop
If b <= 3 Then pn = a & pn
TEXTNUM = dau & pn & ptp
End Function