- Tham gia
- 3/7/07
- Bài viết
- 4,946
- Được thích
- 23,208
- Nghề nghiệp
- Dạy đàn piano
Tôi có 3 Form, trong mỗi Form có vài Textbox. Những Textbox này khi nhấn đúp vào nó, sẽ mở Form Numpad ra. Form Numpad sẽ được dùng như một bàn phím để nhập số vào trong các Textbox.
Vấn đề là, làm sao để Numpad nhập số vào đúng cái Textbox đã gọi nó?
Tôi chỉ là dân amatơ về VBA, cho nên tôi đã dùng cách này: Tôi đặt trong Form Numpad 2 cái Textbox ẩn, có tên là AAA và BBB, và khi nhấn đúp vào một Textbox nào đó trong 3 cái Form kia, thì có một đoạn Code gán tên của Form cho AAA và gán tên của Textbox cho BBB. Ví dụ, khi nhấn đúp vào Textbox số 1 trong UserForm3:
Rồi khi nhấn vào các phím trong Numpad, thì sẽ chạy "một rừng" IF để kiểm tra xem sẽ nhập số vào cái nào... Ví dụ, khi nhấn nút có chữ C (ClearAll) dùng để xóa hết dữ liệu đang có trong một Textbox (khi nhập nhầm chẳng hạn), thì chạy code này:
Chạy rất tốt, nhưng dài dòng quá! Có cách nào ngắn hơn không?
Tối hôm qua, tôi có hỏi sư nương của tôi, nàng nói tôi thử dùng cái này:
Mới đọc thì thấy khoái quá! Đúng rồi chứ còn gì nữa, nghĩa là khi nhấn vào CBClearAll thì gán cho cái Textbox có tên giống như tên của BBB ở trong cái Form có tên giống tên của AAA cái giá trị = 0...
Thế nhưng, VBA hỏng hiểu! Nó hỏng biết UserForms(AAA) là cái gì, cũng chẳng hiểu Controls(BBB) là cái gì!
Vậy xin gửi bài toán này lên đây, nhờ các cao thủ ra tay giúp.
Tôi chỉ là dân amatơ về VBA, cho nên tôi đã dùng cách này: Tôi đặt trong Form Numpad 2 cái Textbox ẩn, có tên là AAA và BBB, và khi nhấn đúp vào một Textbox nào đó trong 3 cái Form kia, thì có một đoạn Code gán tên của Form cho AAA và gán tên của Textbox cho BBB. Ví dụ, khi nhấn đúp vào Textbox số 1 trong UserForm3:
PHP:
Private Sub TB1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
NumPad.AAA.Value = "UserForm3"
NumPad.BBB.Value = "TB1"
NumPad.Show
End Sub
PHP:
Private Sub CBClearAll_Click()
If AAA.Value = "UserForm1" Then
If BBB.Value = "TB1" Then UserForm1.TB1.Value = 0
If BBB.Value = "TB2" Then UserForm1.TB2.Value = 0
If BBB.Value = "TB3" Then UserForm1.TB3.Value = 0
If BBB.Value = "TB4" Then UserForm1.TB4.Value = 0
If BBB.Value = "TB5" Then UserForm1.TB5.Value = 0
ElseIf AAA.Value = "UserForm2" Then
If BBB.Value = "TB1" Then UserForm2.TB1.Value = 0
If BBB.Value = "TB2" Then UserForm2.TB2.Value = 0
If BBB.Value = "TB3" Then UserForm2.TB3.Value = 0
If BBB.Value = "TB4" Then UserForm2.TB4.Value = 0
ElseIf AAA.Value = "UserForm3" Then
If BBB.Value = "TB1" Then UserForm3.TB1.Value = 0
If BBB.Value = "TB2" Then UserForm3.TB2.Value = 0
If BBB.Value = "TB3" Then UserForm3.TB3.Value = 0
End If
End Sub
Tối hôm qua, tôi có hỏi sư nương của tôi, nàng nói tôi thử dùng cái này:
PHP:
Private Sub CBClearAll_Click()
UserForms(AAA).Controls(BBB).Value = 0
End Sub
Thế nhưng, VBA hỏng hiểu! Nó hỏng biết UserForms(AAA) là cái gì, cũng chẳng hiểu Controls(BBB) là cái gì!
Vậy xin gửi bài toán này lên đây, nhờ các cao thủ ra tay giúp.
File đính kèm
Lần chỉnh sửa cuối: