Hỏi cách tính tổng của nhiều textbox

Liên hệ QC

thanchetvnt

Thành viên chính thức
Tham gia
28/7/08
Bài viết
73
Được thích
21
Mình có 1 form gồm 3 Textbox và mình muốn khi giá trị của Textbox1 hoặc Textbox2 thay đổi thì Textbox3 có giá trị bằng Textbox1 + Textbox2. Ví dụ Textbox1.Value = 45.000, Textbox2.Value = 35.000 thì Textbox3.Value = 80.000. Nhưng khi mình thử làm như dưới đây:

Private Sub Textbox1_AfterUpdate()
Me.Textbox3.Value = Me.Textbox1.Value + Me.Textbox2.Value
End Sub

thì cho kết quả Textbox3.Value = 45.00035.000. Ai biết nguyên nhân và cách xử lý thì chỉ giúp với.
Minh cám ơn rất nhiều.
 
Sở dĩ có kết quả như vậy là vì Texbox1.Value và Texbox2.Value là các xâu ký tự nên câu lệnh của bạn sẽ nối 2 xâu này lại.
=> Xử lý: Bạn thay câu lệnh
PHP:
Me.Textbox3.Value = Me.Textbox1.Value + Me.Textbox2.Value
bởi câu lệnh:
PHP:
TextBox3 = Val(TextBox1) + Val(TextBox2)
 
Lần chỉnh sửa cuối:
Upvote 0
Sở dĩ có kết quả như vậy là vì Texbox1.Value và Texbox2.Value là các xâu ký tự nên câu lệnh của bạn sẽ nối 2 xâu này lại.
=> Xử lý: Bạn thay câu lệnh
PHP:
Me.Textbox3.Value = Me.Textbox1.Value + Me.Textbox2.Value
bởi câu lệnh:
PHP:
TextBox3 = Val(TextBox1) + Val(TextBox2)

Bạn ơi nó trả kết quả bằng tổng nhưng lại bị mất hết số 0 đằng sau, như ví dụ của mình đưa ra thì nó trả kết quả là 80 chứ không phải là 80.000
 
Upvote 0
Bạn ơi nó trả kết quả bằng tổng nhưng lại bị mất hết số 0 đằng sau, như ví dụ của mình đưa ra thì nó trả kết quả là 80 chứ không phải là 80.000
Bạn đổi thành câu lệnh:
PHP:
TextBox3 = Format(Val(TextBox1) + Val(TextBox2), "#,##0.000")
 
Upvote 0
Bạn ơi nó trả kết quả bằng tổng nhưng lại bị mất hết số 0 đằng sau, như ví dụ của mình đưa ra thì nó trả kết quả là 80 chứ không phải là 80.000
Bạn cho hỏi: số 80.000 là bạn đang muốn nói đến số tám chục ngàn hay tám mươi phẩy không?
Sở dĩ phải hỏi thế vì tôi e rằng bạn đang lầm lẫn dấu phân cách ngàn với dấu thập phân
 
Upvote 0
Bạn cho hỏi: số 80.000 là bạn đang muốn nói đến số tám chục ngàn hay tám mươi phẩy không?
Sở dĩ phải hỏi thế vì tôi e rằng bạn đang lầm lẫn dấu phân cách ngàn với dấu thập phân

Số của mình là tám chục ngàn nên mình mới cần xử lý chứ nếu là tám mươi phẩy không thì nó cũng giống 80 thôi đâu cần phải phức tạp hóa. Giúp mình nhé.
 
Upvote 0
Số của mình là tám chục ngàn nên mình mới cần xử lý chứ nếu là tám mươi phẩy không thì nó cũng giống 80 thôi đâu cần phải phức tạp hóa. Giúp mình nhé.
Nếu bạn viết 80.000 và bạn nói đấy là tám chục ngàn thì dựa theo kết quả bạn thu được, tôi có thể khẳng định rằng dấu phân cách ngàn trên máy bạn không phải là dấu chấm đâu ---> Dù có dùng Format như của bạn nghiaphuc cũng chẳng ăn thua
----------------------------
Bạn có thể thí nghiệm thế này để biết nhé:
- Gõ vào bảng tính tại cell nào đó số 80.000 xem nó ra cái gì? Ra 80 hay 80.000?
 
Lần chỉnh sửa cuối:
Upvote 0
Nói chung, dùng Textbox nhập số, ngày tháng v.v... nó cũng có cái dở của nó. Cần thiết thì chuyển sang dùng mặt nạ nhập liệu đi
Bạn tham khảo cách sử lý của mình trong file xem sao
 

File đính kèm

Upvote 0
Nói chung, dùng Textbox nhập số, ngày tháng v.v... nó cũng có cái dở của nó. Cần thiết thì chuyển sang dùng mặt nạ nhập liệu đi
Bạn tham khảo cách sử lý của mình trong file xem sao
Anh ơi... Kiểu này nguy hiểm lắm anh à! Vì tác giả nhập 40.000 mà cứ ngở rằng đấy là bốn chục ngàn ---> Với hệ thống quy định dấu thập phân là dấu chấm thì số ấy thực chất chỉ = 40
Tóm lại: Quy định trong Control Panel thế nào thì cứ nhập thế, không biết mà nhập bậy bạ, sai ráng chịu
 
Lần chỉnh sửa cuối:
Upvote 0
Nói chung, dùng Textbox nhập số, ngày tháng v.v... nó cũng có cái dở của nó. Cần thiết thì chuyển sang dùng mặt nạ nhập liệu đi
Bạn tham khảo cách sử lý của mình trong file xem sao

Tại Textbox1 bạn gõ: 123456789123456789 sau khi enter (hay tab) thì nó cho ra định dạng: 123,456,789,123,456,789.000
Bạn hãy xem kết quả của Textbox3 như thế nào nhé!!!!!!!!!!!
 
Upvote 0
Tại Textbox1 bạn gõ: 123456789123456789 sau khi enter (hay tab) thì nó cho ra định dạng: 123,456,789,123,456,789.000
Bạn hãy xem kết quả của Textbox3 như thế nào nhé!!!!!!!!!!!

Hàm Val() không hiểu nổi con số của bạn (Số quá lớn ). Bạn bỏ hàm Val() thì OK
 
Upvote 0
Hàm Val() không hiểu nổi con số của bạn (Số quá lớn ). Bạn bỏ hàm Val() thì OK

Bỏ Val() sẽ trở thành chuỗi và kết quả không phải là tổng 2 textbox mà nối giá trị giữa 2 textbox đó. VD: textbox1 = 123, textbox2 = 456 thì kết quả textbox3 = 123456.

Vì sau khi chuyển số 123456789123456789 tại textbox1, thì textbox3 có giá trị như vầy: 1.23456789123457E+17, chính vì thế, sau khi định dạng #,##.000 thì thành ra 123,456,789,123,457.000, cho nên làm sao để textbox không chuyển số quá lớn về E thì mới giải quyết triệt để vấn đề.
 
Lần chỉnh sửa cuối:
Upvote 0
Bỏ Val() sẽ trở thành chuỗi và kết quả không phải là tổng 2 textbox mà nối giá trị giữa 2 textbox đó. VD: textbox1 = 123, textbox2 = 456 thì kết quả textbox3 = 123456.

Vì sau khi chuyển số 123456789123456789 tại textbox1, thì textbox3 có giá trị như vầy: 1.23456789123457E+17, chính vì thế, sau khi định dạng #,##.000 thì thành ra 123,456,789,123,457.000, cho nên làm sao để textbox không chuyển số quá lớn về E thì mới giải quyết triệt để vấn đề.
Nói chung đã gọi là TextBox, tôi nghĩ ta chỉ nên nhập TEXT ---> Ngoài ra nếu dùng nó với mục đích khác xem chừng rất dở hơi!
Nếu UserForm đơn giản, nên chuyển sang dùng DialogSheet, thay TextBox bằng EditBox là giải pháp hoàn chỉnh nhất
EditBox cho phép định dạng trước cho nó thuộc dang:
- Text
- Integer
- Number
- Reference
- Formula
- Password edit

Khỏi suy nghĩ, vì nó sẽ không bao giờ cho phép ta nhập sai định dạng
 
Upvote 0
Nói chung đã gọi là TextBox, tôi nghĩ ta chỉ nên nhập TEXT ---> Ngoài ra nếu dùng nó với mục đích khác xem chừng rất dở hơi!
Nếu UserForm đơn giản, nên chuyển sang dùng DialogSheet, thay TextBox bằng EditBox là giải pháp hoàn chỉnh nhất
EditBox cho phép định dạng trước cho nó thuộc dang:
- Text
- Integer
- Number
- Reference
- Formula
- Password edit
Khỏi suy nghĩ, vì nó sẽ không bao giờ cho phép ta nhập sai định dạng
Em chưa thấy cái Editbox trong Control Thầy ơi, chỉ có RefEdit mà thôi. Nó ở đâu vậy Thầy?
 
Upvote 0
Upvote 0
Không được Ndu à, với con số "vũ trụ" của Minh Thiện thì nó tràn giới hạn của biến lớn nhất là double hay variant, chỉ có cách viết hàm UDF thôi
 
Upvote 0
Không được Ndu à, với con số "vũ trụ" của Minh Thiện thì nó tràn giới hạn của biến lớn nhất là double hay variant, chỉ có cách viết hàm UDF thôi
Ah không anh à! Em không hề nói đến con số vũ trụ đó
Khả năng Excel đến đâu thì nó thể hiện được đến đó thôi ---> Hiện thêm nữa, có chăng có là dạng Text
 
Upvote 0
Web KT

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

Back
Top Bottom