Tính toán cộng, trừ, nhân, chia với textbox (1 người xem)

Liên hệ QC

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

sinzhang

Thành viên mới
Tham gia
18/8/13
Bài viết
20
Được thích
0
Các anh chị cho em xin code công thức "cộng, trừ, nhân, chia, tính tổng, tính công thức trong TextBox...." trong VBA với ạ.
Chân thành cám ơn !
 
Các anh chị cho em xin code công thức "cộng, trừ, nhân, chia, tính tổng, tính công thức trong TextBox...." trong VBA với ạ.
Chân thành cám ơn !

Câu hỏi bạn chung chung quá.
Công: những số đem cộng nằm ở đấu? bảng tính hay trên form? kết quả hiện trên bảng tính hay trên form?
Trừ: .......................................................................................................................................?
 
Upvote 0
Các anh chị cho em xin code công thức "cộng, trừ, nhân, chia, tính tổng, tính công thức trong TextBox...." trong VBA với ạ.
Chân thành cám ơn !

Cộng trừ nhân chia: các côn toán này đều dùng 2 vế, bên trái là vế 1 (var1), bên phải là vế 2 (var2). Code viết như sau

cộng: var1 + var2
trừ: var1 - var2
nhân: var1 + var2
chia: var1 + var2

tính tổng trong text box
textbox.text = tổng

tính công thức trong textbox
Evaluate(textbox.text)
 
Lần chỉnh sửa cuối:
Upvote 0
Cộng trừ nhân chia: các côn toán này đều dùng 2 vế, bên trái là vế 1 (var1), bên phải là vế 2 (var2). Code viết như sau

cộng: var1 + var2
trừ: var1 - var2
nhân: var1 + var2
chia: var1 + var2


tính tổng trong text box
textbox.text = tổng

tính công thức trong textbox
Evaluate(textbox.text)
Chú ý trong công thức vì khi viết sai làm người mới học càng thêm khó hiểu, sẽ làm khó khăn cho người mới học vì không biết thông tin nào chính xác
 
Upvote 0
Chú ý trong công thức vì khi viết sai làm người mới học càng thêm khó hiểu, sẽ làm khó khăn cho người mới học vì không biết thông tin nào chính xác

Ờ nhỉ, cảm ơn đã nhắc nhở. Mình copy/paste nhìn lại không rõ.

chỉnh lại:
nhân: var1 * var2
chia: var1 / var2
 
Upvote 0
Ý em là code công thức trên Form ạ :
Ví dụ : ở khung TexBox1 + TextBox2 khi minh nhập giá trị vào thì ở TextBox3 sẽ tự nhảy giá trị tổng của TextBox1 + TextBox2 (và tương tự với -, *, /).
 
Upvote 0
Ý em là code công thức trên Form ạ :
Ví dụ : ở khung TexBox1 + TextBox2 khi minh nhập giá trị vào thì ở TextBox3 sẽ tự nhảy giá trị tổng của TextBox1 + TextBox2 (và tương tự với -, *, /).
Mã:
Private Sub CommandButton1_Click()
Dim n As Long, m As Long, tong As Long
n = TextBox1.Value
m = TextBox1.Value
tong = n + m
TextBox3.Value = tong
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Em ví dụ cụ thể như thế này : (đang online điện thoại nên em không đính kèm được)
- Tính tổng cộng: TextBox3 = TextBox1 + TextBox2
- Tính tổng trừ:TextBox3 = TextBox1 - TextBox2
- Tính tổng nhân:TextBox3 = TextBox1 * TextBox2
- Tính tổng chia:TextBox3 = TextBox1 / TextBox2
- Tính công thức:
Vd1: TextBox3 = TextBox1 * TextBox2/giá trị
Vd2: TextBox3 = TextBox1*Textbox2*+ textbox1*(textbox4-textbox5)+ textbox6+textbox7
 
Lần chỉnh sửa cuối:
Upvote 0
Em ví dụ cụ thể như thế này : (đang online điện thoại nên em không đính kèm được)
- Tính tổng cộng: TextBox3 = TextBox1 + TextBox2
- Tính tổng trừ:TextBox3 = TextBox1 - TextBox2
- Tính tổng nhân:TextBox3 = TextBox1 * TextBox2
- Tính tổng chia:TextBox3 = TextBox1 / TextBox2
- Tính công thức:
Vd1: TextBox3 = TextBox1 * TextBox2/giá trị
Vd2: TextBox3 = TextBox1*Textbox2*+ textbox1*(textbox4-textbox5)+ textbox6+textbox7
-Cách của mình là
+Tạo 3 textbox lần lượt là textbox1, textbox2, textbox3 và một nút commandbutton1 " để nguyên tên không đổi tên tạm thời là vây"
+ Khai báo 3 biến kiểu số n,m,tong " tính, chia..."
+Thực hiện gán n bằng giá trị của textbox1: n= textbox1.value
+Thực hiện gán m bằng giá trị của textbox2: m= textbox2.value
+ thực hiện theo yêu cầu tổng: tong = n + m " nhân: n*m, chia n/m...."
+ Gán kết quả về textbox3: textbox3.value = tong
VẬY LÀ XONG BẠN AH
 
Upvote 0
Mã:
Private Sub CommandButton1_Click()
Dim n As Long, m As Long, tong As Long
n = TextBox1.Value
m = TextBox1.Value
tong = n + m
TextBox3.Value = tong
End Sub

Code anh cho ở trên là dùng nút button để tính rồi, ý của em là khi mình nhập giá trị vào 2 ô textbò thì ở ô textbox3 tự nhảy giá trị tổng của 2 textbox đó.
 
Upvote 0
Đó cái dong 6 của code đó nó trả kết quả tong cho textbox3 đó
 
Upvote 0
Nhưng hình như code của anh cho phải tạo comment button để tính tổng, còn em cần code nào khi mình nhập giá trị nó tự nhảy ra kết quả luôn không cần nhấn button, công việc em tính tổng các giá trị rất nhiều, vì vậy không thể chỗ nào cũng tạo button để tính được.
 
Upvote 0
Code anh cho ở trên là dùng nút button để tính rồi, ý của em là khi mình nhập giá trị vào 2 ô textbò thì ở ô textbox3 tự nhảy giá trị tổng của 2 textbox đó.
code cho textbox1
Mã:
Private Sub TextBox1_Change()
Dim n As Long, m As Long, Kq As Long
n = TextBox1.Value
If TextBox2 <> "" Then
    m = TextBox2.Value
Else
    m = 0
End If
TextBox3.Value = n + m
End Sub
code cho textbox2
Mã:
Private Sub TextBox2_Change()
Dim n As Long, m As Long, Kq As Long
n = TextBox2.Value
If TextBox1 <> "" Then
    m = TextBox1.Value
Else
    m = 0
End If
TextBox3.Value = n + m
End sub
Textbox3 sẽ tự nhảy kết quả!!!!!đúng theo ý bạn chưa???
 
Upvote 0
code cho textbox1
Mã:
Private Sub TextBox1_Change()
Dim n As Long, m As Long, Kq As Long
n = TextBox1.Value
If TextBox2 <> "" Then
    m = TextBox2.Value
Else
    m = 0
End If
TextBox3.Value = n + m
End Sub
code cho textbox2
Mã:
Private Sub TextBox2_Change()
Dim n As Long, m As Long, Kq As Long
n = TextBox2.Value
If TextBox1 <> "" Then
    m = TextBox1.Value
Else
    m = 0
End If
TextBox3.Value = n + m
End sub
Textbox3 sẽ tự nhảy kết quả!!!!!đúng theo ý bạn chưa???

Thế +, -, * chia cũng thế luôn hả anh, còn code công thức tính tổng công thức em đã nêu ở trên đó, anh giúp viết code dùm em luôn hén.thank
 
Upvote 0
Thế +, -, * chia cũng thế luôn hả anh, còn code công thức tính tổng công thức em đã nêu ở trên đó, anh giúp viết code dùm em luôn hén.thank

Nếu đúng ý bạn rùi thì tập tự làm đi, chỗ nào không hiểu thì cứ post lên có rất nhiều người sẽ giúp. Cộng, trừ, nhân, chia cứ thay vào dòng thứ 9 của code. lưu ý là: khai báo lại kiêu dữ liệu nếu bạn sử dụng số thực, nếu dùng phép chia phải xác nhận số chia # 0.
 
Upvote 0
Mình gửi 1 ví dụ, bam tham khảo làm lại cho mình nha
 

File đính kèm

Upvote 0
Mình gửi 1 ví dụ, bam tham khảo làm lại cho mình nha
Cám ơn anh đã hổ trợ, tuy nhiên công thức trên anh làm chung chung quá làm em khó hiểu, em gửi anh file này cụ thể hơn...nhờ các anh chị hổ trợ viết code dùm em (mới tập tành VBA nên chưa biết gì hết, các anh chị thông cảm)


Đính kèm : View attachment Book1.xls
 
Upvote 0
Bạn xem nha, ở đây mình dùng sự kiện change của các Textbox nhập liệu. Đây là cách đơn giản nhưng dài lê thê. Khi bạn nắm vững dùng Class module sẽ gọn hơn nhiều.
 

File đính kèm

Upvote 0
sealand ơi, dùng sự kiện Exit hoặc before update sẽ có tham số cancel để bẫy lỗi và bắt làm lại, đừng dùng sự kiện change. Gõ 1 con số dài là mỗi ký số là code chạy. Nó chạy liên tục, nó mệt.

Ngoài ra code bắt lỗi chia (Divided by zero) chưa hết. Thí dụ vừa mở form, đổi combobox thành chia là đã bị lỗi. Hoặc textbox2 bỏ trống chưa kịp điền cũng bị lỗi.
 
Upvote 0
Bạn xem nha, ở đây mình dùng sự kiện change của các Textbox nhập liệu. Đây là cách đơn giản nhưng dài lê thê. Khi bạn nắm vững dùng Class module sẽ gọn hơn nhiều.
Rất cám ơn anh, đúng ý em rồi ạ, nhưng làm sao để format có dấu "," ở mõi giá trị hả anh, mà sẵn đây anh cho em hỏi thêm đoạn code này thêm:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("B1:B" & (9 + Target.Row))) Is Nothing Then
With Target
If .Offset(0, -1) <> "" Then .Offset(0, 1) = .Offset(0, -1) * .Value
End With
End If
End Sub
Đoạn code này muốn cộng thêm 1 cột hoặc vài cột nữa thì thêm vào chỗ nào ?
 
Lần chỉnh sửa cuối:
Upvote 0
Có một số chỗ cần chỉnh sửa nè anh ơi, anh chỉnh dùm em, cho em hỏi thêm ở mõi giá trị số liệu format thêm dấu "," thì làm sao hả anh ?
Untitled.jpg
 
Upvote 0
Bạn gửi lại cái hình to 1 chút mới đọc được để sửa 1 thể cùng 1 số ý kiến anh Ptm0412 tham gia rất hay cho bài.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình sơ bộ theo yêu cầu của bạn và ý kiến của Bác Ptm0412.
Bạn tham khảo xem sao.
 

File đính kèm

Upvote 0
Ý của tôi tham gia thế này cơ:
Ngay khi vừa có ý định thoát ra khỏi textbox thì kiểm tra ngay, nếu dữ liệu không hợp lệ (phải là số) thì bắt làm lại ngay. Nếu textbox là số chia, phải kiểm tra nếu =0 hoặc để trống cũng bắt làm lại.

- Sự kiện BeforeUpdate chỉ kiểm tra khi có sự thay đổi: gõ thêm, sửa lại, xóa, ...
- Sự kiện Exit sẽ kiểm tra cả khi có thay đổi và không thay đổi.

Tùy theo ý muốn của mình mà dùng 1 trong 2 sự kiện trên. Nếu textbox có quyền để trống thì dùng BeforeUpdate, nếu không được phép để trống thì dùng Exit.

Thí dụ textbox13 là số bị chia, chỉ cần kiểm tra dữ liệu số:

PHP:
Private Sub TextBox13_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox13) > 0 And Not IsNumeric(TextBox13) Then
    MsgBox "Phai go du lieu so": Cancel = True
Else
    SetAll
End If
End Sub

Thí dụ 2: textbox14 là không được quyền để trống vì là số chia:

PHP:
Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox14) > 0 And Not IsNumeric(TextBox14) Then
    MsgBox "Phai go du lieu so": Cancel = True
ElseIf Len(TextBox14) = 0 Or Val(TextBox14) = 0 Then MsgBox "Khong duoc de trong hoac bang zero": Cancel = True
Else
    SetAll
End If

End Sub

Như vậy code "SetAll" không cần kiểm tra lỗi nữa
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Ptm0412 à, em hiểu ý anh nhưng có 1 vấn đề sử lý số liệu cho toàn Form còn rất dài, ví dụ khi dùng Cancel trong BeforeUpdate nó lại nảy sinh khi format số nó lại thành chuỗi và sự cố lại xảy ra. Vậy em muốn tham gia cách sử lý đơn giản nhất để bạn ấy dễ hiểu. Sau này bạn ấy còn phải hoàn chỉnh hơn nữa, nhất là áp dụng Class Module thay thế vài chục cái Sub nhàm chán trong Code nữa anh ạ. (Cái này em thích cái Class Module của Ndu lắm)
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Ptm0412 à, em hiểu ý anh nhưng có 1 vấn đề sử lý số liệu cho toàn Form còn rất dài, ví dụ khi dùng Cancel trong BeforeUpdate nó lại nảy sinh khi format số nó lại thành chuỗi và sự cố lại xảy ra. Vậy em muốn tham gia cách sử lý đơn giản nhất để bạn ấy dễ hiểu. Sau này bạn ấy còn phải hoàn chỉnh hơn nữa, nhất là áp dụng Class Module thay thế vài chục cái Sub nhàm chán trong Code nữa anh ạ. (Cái này em thích cái Class Module của Ndu lắm)

1. Sử dụng format số thành chuỗi thực hiện sau khi các sự kiện Update & Exit xảy ra. Việc này chỉ xảy ra lỗi khi sử dụng sự kiện Change. Đó cũng là 1 sự khác biệt (nên tôi không dùng Change)

2. Để thay mấy chục cái Sub nhàm chán thì dùng Class đúng rồi. Nhưng tôi có cách khác đơn giản hơn, và form đỡ rối hơn:

- Form có 4 textbox số liệu cần tính toán. 4 hay bao nhiêu là theo yêu cầu của người dùng, đó là số tối đa các con số cần tính toán

- Có 1 textbox chứa công thức mà người dùng tự định nghĩa, thí dụ (a+b)*(b+c)*(c+a) gì gì đó, mở ngoặc đóng ngoặc đúng chỗ và đầy đủ. Gõ sai thì bị tính sai ráng chịu

- Code sẽ đọc các giá trị, thay vào công thức, và tính.

Tánh của tôi thì sealand đã biết, chết tiệt lắm, sai bắt làm lại ngay cơ. Chứ một khi đã ra kết quả tính toán rồi, có khi xách kết quả đó đi làm những chuyện khác nữa ấy chứ, chả lẽ lúc ấy lại test lỗi lần 2?
Công thức gõ thiếu dấu ngoặc, tôi có thể thông báo lỗi cho gõ lại, còn công thức tính toán mà sai, mở ngoặc đóng ngoặc không đúng chỗ thì xin lỗi, ráng chịu.
 
Upvote 0
Em có một số chỗ cần nhờ anh chị sửa dùm em, em có nêu rõ trong File đính kèm.
 

File đính kèm

Upvote 0
Bạn sửa như sau nó sẽ coi như C4 cũng tham gia sự kiện (Bạn dùng "Cộng thêm" khó hiểu quá)

If Not Intersect(Target, Union(Range("E1:E" & (9 + Target.Row)), [C4])) Is Nothing Then
 
Upvote 0
Bạn sửa như sau nó sẽ coi như C4 cũng tham gia sự kiện (Bạn dùng "Cộng thêm" khó hiểu quá)

If Not Intersect(Target, Union(Range("E1:E" & (9 + Target.Row)), [C4])) Is Nothing Then
Thành thật xin lỗi anh vì cứ phiền anh hoài, nhưng anh giúp em thêm một việc nữa nhé.
- Cái file book1 version 2 em không thể áp dụng vào File nhập liệu của em được
- Nên bây giờ em upload file gốc lên, nhờ anh lập code cụ thể dùm em
- Mọi điều cần nhờ em có ghi rõ trong Form.
Chân thành cám ơn anh !
 

File đính kèm

Upvote 0
Bạn kiểm tra xem sao
 

File đính kèm

Upvote 0
Các anh chị cho em xin code công thức hoặc hướng dẫn tao ham trên excel "cộng, trừ, nhân, chia" trên 1 ô
vi du : Ô A1 ta nhập là 2*7+5*8 +(15-2*2)-4*(2+2*3)+((...))..... Thì Ô A2 nhập công thức =Tinh(A1) có nghịa kết quã trên ô A2.

Chân thành cám ơn !
 
Upvote 0
Các anh chị cho em xin code công thức hoặc hướng dẫn tao ham trên excel "cộng, trừ, nhân, chia" trên 1 ô
vi du : Ô A1 ta nhập là 2*7+5*8 +(15-2*2)-4*(2+2*3)+((...))..... Thì Ô A2 nhập công thức =Tinh(A1) có nghịa kết quã trên ô A2.

Chân thành cám ơn !
Bạn chép cái này vào Module:
PHP:
Function Tinh(ByVal ChuoiSo As String) As Double
    Tinh = Evaluate("=" & ChuoiSo)
End Function
 
Upvote 0
Các anh chị cho em xin code công thức hoặc hướng dẫn tao ham trên excel "cộng, trừ, nhân, chia" trên 1 ô
vi du : Ô A1 ta nhập là 2*7+5*8 +(15-2*2)-4*(2+2*3)+((...))..... Thì Ô A2 nhập công thức =Tinh(A1) có nghịa kết quã trên ô A2.

Chân thành cám ơn !
Góp thêm cách nữa: dùng 'name'.
  1. Đứng tại ô A1= 2*7+5*8 +(15-2*2)-4*(2+2*3); Nhấn Ctrl+F3, dán =EVALUATE($A$1), sửa tên 'name' thành 'Tinh'
  2. B1= Tinh
Chúc bạn ngày vui
 
Upvote 0
Xin chào Tất cả

Mình mong các bạn giúp mình , minh dùng VBA excel để mở Chương trình FoxPro, sau do mình thực hiện các lệnh Foxpro (vi dụ như Export chẳng hạn,…) viết code dể chạy chương trình

Chân thành cám ơn !
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu đúng ý bạn rùi thì tập tự làm đi, chỗ nào không hiểu thì cứ post lên có rất nhiều người sẽ giúp. Cộng, trừ, nhân, chia cứ thay vào dòng thứ 9 của code. lưu ý là: khai báo lại kiêu dữ liệu nếu bạn sử dụng số thực, nếu dùng phép chia phải xác nhận số chia # 0.
Vậy nếu như mình tính tổng của nhiều text box thì sao bac. khoảng 21 textbox á, mong bác giúp đở
 
Upvote 0
bác có thể cho e xin cái cú pháp như thế nào được khong bác
Nó có thể rất giản dị nhưng cũng có thể rất phức tạp.
- Nếu tính tất cả các textbox không chừa cái nào thì dùng vòng lặp duyệt tất cả các controls trong form, cái nào kiểu là textbox thì tính
- Nếu chỉ tính một số textbox thì phải lập mọt danh sách cho vòng lặp duyệt theo danh sách đó.
- Nếu cần kiểm soát cộng được bao nhiêu cái thì code đồng thời phải ghi lại danh sách các textbox được tính trong tổng và các textbox phải chừa ra vì tính không được. Ví dụ textbox A chứa số 123,45 thay vì 123.45 thì tính đâu có được!
 
Upvote 0
Nó có thể rất giản dị nhưng cũng có thể rất phức tạp.
- Nếu tính tất cả các textbox không chừa cái nào thì dùng vòng lặp duyệt tất cả các controls trong form, cái nào kiểu là textbox thì tính
- Nếu chỉ tính một số textbox thì phải lập mọt danh sách cho vòng lặp duyệt theo danh sách đó.
- Nếu cần kiểm soát cộng được bao nhiêu cái thì code đồng thời phải ghi lại danh sách các textbox được tính trong tổng và các textbox phải chừa ra vì tính không được. Ví dụ textbox A chứa số 123,45 thay vì 123.45 thì tính đâu có được!
-Đúng r do bác. e cug nghĩ no rất đơn giản và cũng đã thử rất nhiều cách khác nhau nhưng không dc

-e đã thử từ cái no nhảy tự động ra textbox định trước. chỉ dc 2 ô thôi. có cách nao 21 ô textbox tương ứng vs 21 điều kiện mih cho vao 1 IF hay sao đó. làm 1 lần lun dc k bác. cái nay hiểu nó lý thuyết no ma làm k dc tức wa bac ạ !
-textbox cua e số nhỏ thôi bac. k có số thập phân. 1 ,2 ,3 > 20 thôi !
 
Upvote 0
Bạn không có file thì tôi không thể viết được bất cứ code nào cả
- ở cái cmd tính tổng. hiện tại e dang dùng nút control để tính. giờ e mún no nhảy tính tổng tự động mỗi khi mình nhập số vào các textbox thi fai lam sao ạ !!! .Bác xem file đính kèm nhé
 

File đính kèm

Upvote 0
- ở cái cmd tính tổng. hiện tại e dang dùng nút control để tính. giờ e mún no nhảy tính tổng tự động mỗi khi mình nhập số vào các textbox thi fai lam sao ạ !!! .Bác xem file đính kèm nhé
Cho thêm code này vào
Mã:
Private Function MakeSum()
  Dim idx As Long, dVal As Double, ctr As Control
  For idx = 1 To 4
    Set ctr = Me.Controls("tb0" & idx)
    If IsNumeric(ctr.Text) Then dVal = dVal + CDbl(ctr.Text)
  Next
  MakeSum = dVal
End Function
Private Sub tb01_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb02_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb03_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb04_Change()
  Me.tbtt.Text = MakeSum
End Sub
 
Upvote 0
Cho thêm code này vào
Mã:
Private Function MakeSum()
  Dim idx As Long, dVal As Double, ctr As Control
  For idx = 1 To 4
    Set ctr = Me.Controls("tb0" & idx)
    If IsNumeric(ctr.Text) Then dVal = dVal + CDbl(ctr.Text)
  Next
  MakeSum = dVal
End Function
Private Sub tb01_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb02_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb03_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb04_Change()
  Me.tbtt.Text = MakeSum
End Sub
Được rồi bác ơi. e cảm ơn bác nhiều lắm. cái nay cao siêu quá e không biết
Bác co thể giải thích them cho e biết nghĩa của cai dòng này dc không ạ !!
Dim idx As Long, dVal As Double, ctr As Control
For idx = 1 To 4
Set ctr = Me.Controls("tb0" & idx)
If IsNumeric(ctr.Text) Then dVal = dVal + CDbl(ctr.Text)
Next
MakeSum = dVal
Bài đã được tự động gộp:

Cho thêm code này vào
Mã:
Private Function MakeSum()
  Dim idx As Long, dVal As Double, ctr As Control
  For idx = 1 To 4
    Set ctr = Me.Controls("tb0" & idx)
    If IsNumeric(ctr.Text) Then dVal = dVal + CDbl(ctr.Text)
  Next
  MakeSum = dVal
End Function
Private Sub tb01_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb02_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb03_Change()
  Me.tbtt.Text = MakeSum
End Sub
Private Sub tb04_Change()
  Me.tbtt.Text = MakeSum
End Sub
Được rồi bác ơi. e cảm ơn bác nhiều lắm. cái nay cao siêu quá e không biết
Bác co thể giải thích them cho e biết nghĩa của cai dòng này dc không ạ !!
Dim idx As Long, dVal As Double, ctr As Control
For idx = 1 To 4
Set ctr = Me.Controls("tb0" & idx)
If IsNumeric(ctr.Text) Then dVal = dVal + CDbl(ctr.Text)
Next
MakeSum = dVal
- Có mấy từ bác viết tắc e không hiểu được
- vã lại đó là vòng lặp đối với 1 số. ( 1 To 9). jo minh mún lam 2 chữ số thì fai sữa như thế nạo ạ ( 1 To 21)
 
Lần chỉnh sửa cuối:
Upvote 0
Được rồi bác ơi. e cảm ơn bác nhiều lắm. cái nay cao siêu quá e không biết
Bác co thể giải thích them cho e biết nghĩa của cai dòng này dc không ạ !!
Dim idx As Long, dVal As Double, ctr As Control
For idx = 1 To 4
Set ctr = Me.Controls("tb0" & idx)
If IsNumeric(ctr.Text) Then dVal = dVal + CDbl(ctr.Text)
Next
MakeSum = dVal
Bài đã được tự động gộp:


Được rồi bác ơi. e cảm ơn bác nhiều lắm. cái nay cao siêu quá e không biết
Bác co thể giải thích them cho e biết nghĩa của cai dòng này dc không ạ !!
Dim idx As Long, dVal As Double, ctr As Control
For idx = 1 To 4
Set ctr = Me.Controls("tb0" & idx)
If IsNumeric(ctr.Text) Then dVal = dVal + CDbl(ctr.Text)
Next
MakeSum = dVal
- Có mấy từ bác viết tắc e không hiểu được
- vã lại đó là vòng lặp đối với 1 số. ( 1 To 9). jo minh mún lam 2 chữ số thì fai sữa như thế nạo ạ ( 1 To 21)
- Vì mấy textboxes bạn cần xét nó có tên là tb01, tbo2, tb03 và tb04. Để ý con số thứ tự ở cuối là từ 1 đến 4 nên tôi đã dùng vòng lập duyệt từ 1 đến 4 ---> For idx = 1 To 4
- Dùng phép nối chuỗi, nối "tb0" và biến idx để có được tên các textboxes ---> "tb0" & idx
- Lấy đối tượng textbox dựa vào tên đã lấy trước đó ---> Set ctr = Me.Controls("tb0" & idx)
- Có được đối tượng textbox rồi, giờ chỉ việc lấy giá trị của nó thôi ---> CDbl(ctr.Text)
- Tiếp theo cộng dồn ---> dVal = dVal + CDbl(ctr.Text)
- Lấy kết quả sau cùng ---> MakeSum = dVal
Hết!
--------------
Muốn làm với 2 chữ số thì "chơi chiêu". Ví dụ:
Mã:
For idx = 1 to 15
  Set ctr = Me.Controls("tb" & Right("0" & idx, 2))
 .....
Hoặc
Mã:
For idx = 1 to 15
  Set ctr = Me.Controls("tb" &  Format(idx, "00"))
 .....
 
Lần chỉnh sửa cuối:
Upvote 0
- Vì mấy textboxes bạn cần xét nó có tên là tb01, tbo2, tb03 và tb04. Để ý con số thứ tự ở cuối là từ 1 đến 4 nên tôi đã dùng vòng lập duyệt từ 1 đến 4 ---> For idx = 1 To 4
- Dùng phép nối chuỗi, nối "tb0" và biến idx để có được tên các textboxes ---> "tb0" & idx
- Lấy đối tượng textbox dựa vào tên đã lấy trước đó ---> Set ctr = Me.Controls("tb0" & idx)
- Có được đối tượng textbox rồi, giờ chỉ việc lấy giá trị của nó thôi ---> CDbl(ctr.Text)
- Tiếp theo cộng dồn ---> dVal = dVal + CDbl(ctr.Text)
- Lấy kết quả sau cùng ---> MakeSum = dVal
Hết!
--------------
Muốn làm với 2 chữ số thì "chơi chiêu". Ví dụ:
Mã:
For idx = 1 to 15
  Set ctr = Me.Controls("tb" & Right("0" & idx, 2))
.....
Hoặc
Mã:
For idx = 1 to 15
  Set ctr = Me.Controls("tb" &  Format(idx, "00"))
.....
- Được rồi bác ạ. e cảm ơn bac nhiều lắm
 
Upvote 0
Mã:
Private Sub cmdtt_click()

Dim a As Long, b As Long, c As Long, d As Long, e As Long, f As Long, g As Long, h As Long, i As Long, l As Long, m As Long

Dim n As Long, o As Long, u As Long, t As Long, r As Long, W As Long, q As Long, p As Long, v As Long, x As Long
    

If Me!tb01 <> "" Then
    a = Me!tb01.Value
Else
a = 0
End If
If Me!tb02 <> "" Then
    b = Me!tb02.Value
Else
b = 0
End If
If Me!tb03 <> "" Then
    c = Me!tb03.Value
Else
c = 0
End If
If Me!tb04 <> "" Then
    d = Me!tb04.Value
Else
d = 0
If Me!tb05 <> "" Then
    e = Me!tb04.Value
Else
e = 0
End If
If Me!tb06 <> "" Then
    f = Me!tb06.Value
Else
f = 0
End If
If Me!tb07 <> "" Then
    g = Me!tb07.Value
Else
g = 0
End If
If Me!tb08 <> "" Then
    h = Me!tb08.Value
Else
h = 0
End If
If Me!tb09 <> "" Then
    i = Me!tb09.Value
Else
i = 0
End If
If Me!tb10 <> "" Then
    l = Me!tb10.Value
Else
l = 0
End If
If Me!tb11 <> "" Then
    m = Me!tb11.Value
Else
m = 0
End If
If Me!tb12 <> "" Then
    n = Me!tb12.Value
Else
n = 0
End If
If Me!tb13 <> "" Then
    o = Me!tb13.Value
Else
o = 0
End If
If Me!tb14 <> "" Then
    u = Me!tb14.Value
Else
u = 0
End If
If Me!tb15 <> "" Then
    t = Me!tb15.Value
Else
t = 0
End If
If Me!tb16 <> "" Then
    r = Me!tb16.Value
Else
r = 0
End If
If Me!tb17 <> "" Then
    W = Me!tb17.Value
Else
W = 0
End If
If Me!tb18 <> "" Then
    q = Me!tb18.Value
Else
q = 0
End If
If Me!tb19 <> "" Then
    p = Me!tb19.Value
Else
p = 0
End If
If Me!tb20 <> "" Then
    v = Me!tb20.Value
Else
v = 0
End If
If Me!Tb21 <> "" Then
    x = Me!Tb21.Value
Else
x = 0
End If
End If

Me!tbtt = a + b + c + d + e + f + g + h + i + l + m + n + o + u + t + r + W + q + p + v + x
End Sub

Private Sub cmdxoa_click()
Me!tbtt = ""
End Sub
Untitled.png
- MN cho em hỏi xíu. với userform nay, Lần nhập đầu tiên---- e nhập số ở (1), nhấn Sum (2), là no hiện KQ
- Xong e nhấn SAVE (3) => dữ liệu ở (1) sẽ mất để nhập cái khác vào (ô Sum vẫn còn kết quả)
- Lần nhập thứ 2------ e tiếp túc nhập các số khác ở (1)(lúc này ô tổng vẫn còn) , nhấn Sum (2) => thì Ô Sum no lại nhảy tổng của lần nhập thứ 2
- P/S vậy phải làm ntn để tổng no cộng được liên tục qua các lần SAVE. mong các bac giúp đở !!!
 
Upvote 0
code cho textbox1
Mã:
Private Sub TextBox1_Change()
Dim n As Long, m As Long, Kq As Long
n = TextBox1.Value
If TextBox2 <> "" Then
    m = TextBox2.Value
Else
    m = 0
End If
TextBox3.Value = n + m
End Sub
code cho textbox2
Mã:
Private Sub TextBox2_Change()
Dim n As Long, m As Long, Kq As Long
n = TextBox2.Value
If TextBox1 <> "" Then
    m = TextBox1.Value
Else
    m = 0
End If
TextBox3.Value = n + m
End sub
Textbox3 sẽ tự nhảy kết quả!!!!!đúng theo ý bạn chưa???
Hi bạn. Thế cho mình hỏi là nếu như 4 textbox thì làm như thế nào vậy, mình cũng đang cần phần này.
Bạn giúp mình với nhé
Cảm ơn bạn nhiều!
 
Upvote 0
Hi mình gởi file đính kèm
bạn xem dùm mình nhé
Cảm ơn bạn
 

File đính kèm

Upvote 0
Chào tất cả mọi người ! cho mình xin code visual excel sao chép tập tin trên CMD or code chạy tập tin *.bat cũng được.
(Mình có dùng lệnh FileCopy của visual excel rồi nhưng khi copy thường bị lỗi là do tập tin đó được mở ở máy khác trong mang lan)
rất cám ơn
 
Upvote 0
Công thức cộng trừ nhân chia thì có rồi, vậy còn cách tính giá trị trung bình của textbox1, textbox2, textbox3 vào trong ô textbox4 thì làm ntn ạ.
 
Upvote 0

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

Back
Top Bottom