Hỏi- Cách đổi tên textbox trên form bằng code (1 người xem)

Liên hệ QC

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

VMH0307

Thành viên tiêu biểu
Tham gia
5/8/11
Bài viết
765
Được thích
605
Kính gửi: các Bác, các Thầy!
Hiện tại em đang có 1 form có nhiều textbox với những tên khác nhau, em muốn đổi tên những textbox này lại để có hệ thống và viết code được thuận tiện. Em muốn hỏi mình có code nào cho phép việc đổi tên textbox như vậy không ạ.
Rất mong nhận được sự giúp đỡ của các Bác, các Thầy.
Em xin cảm ơn
P/s: em có đọc trong help thì thấy dòng này.
Name1.JPG
 
Đối tượng TextBox có thuộc tính Text, bạn chỉ cần gán nội dung là được.
 
Upvote 0
Kính gửi: các Bác, các Thầy!
Hiện tại em đang có 1 form có nhiều textbox với những tên khác nhau, em muốn đổi tên những textbox này lại để có hệ thống và viết code được thuận tiện. Em muốn hỏi mình có code nào cho phép việc đổi tên textbox như vậy không ạ.
Rất mong nhận được sự giúp đỡ của các Bác, các Thầy.
Đương nhiên là được!
Ví dụ:
- Bạn có 1 UserForm gồm 7 TextBox
- Giờ bạn muốn đặt lại tên cho chúng theo thứ tự như vầy: txt_1, txt_2.... , txt_7
Vậy ta viết code thế này (code trong Module)
PHP:
Sub Test()
  Dim i As Long, ctl As Control
  With ThisWorkbook.VBProject.VBComponents("UserForm1")
    For Each ctl In .Designer.Controls
      If TypeOf ctl Is MSForms.TextBox Then
        i = i + 1
        ctl.Name = "txt_" & i
      End If
    Next
  End With
End Sub
 
Upvote 0
Hay quá, em làm được rồi, em cám ơn thầy rất nhiều. ^^
 
Upvote 0
Hỏi về - Cách tạo event cho nhiều textbox

Các thầy cho em hỏi thêm:
Cũng với số lượng textbox nhiều trên form, em muốn sử lý sự kiện (ví dụ change, enter hoặc exit) trên những textbox này mà không phải viết thủ công sự kiện cho từng textbox được không ạ?
Ở đây, em nhằm mục đích hiển thị ngay kiểu dữ liệu, định dạng, căn lề ngay sau khi mỗi textbox được nhập dữ liệu.
Mong các Thầy, bác giúp đỡ.
Em cám ơn.
 
Upvote 0
Các thầy cho em hỏi thêm:
Cũng với số lượng textbox nhiều trên form, em muốn sử lý sự kiện (ví dụ change, enter hoặc exit) trên những textbox này mà không phải viết thủ công sự kiện cho từng textbox được không ạ?
Ở đây, em nhằm mục đích hiển thị ngay kiểu dữ liệu, định dạng, căn lề ngay sau khi mỗi textbox được nhập dữ liệu.
Mong các Thầy, bác giúp đỡ.
Em cám ơn.

Cái này phải dùng Class Module mới giải quyết được!
Tôi lấy 1 ví dụ cho bạn tham khảo:
- Cho 1 UserForm với nhiều TextBox
- Yêu cầu chỉ cho phép nhập số trên TextBox
Ta viết code như sau:
1> Chèn 1 Class Module, đặt tên là clsTbxEvent với code sau:
PHP:
Public WithEvents tbx As MSForms.TextBox
Private Sub tbx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If InStr("1234567890." + Chr$(vbKeyBack), Chr$(KeyAscii)) = 0 Then
    MsgBox "Ban phai nhap so", , "THÔNG BÁO"
    KeyAscii = 0
  End If
End Sub
2> Chèn 1 UserForm, vẽ 1 vài TextBox và viết code cho UF:
PHP:
Dim Obj() As New clsTbxEvent
Private Sub UserForm_Initialize()
  Dim i As Long, Ctl As Control
  For Each Ctl In Me.Controls
    If TypeOf Ctl Is MSForms.TextBox Then
      i = i + 1
      ReDim Preserve Obj(1 To i)
      Set Obj(i).tbx = Ctl
    End If
  Next
End Sub
Chạy Form và thí nghiệm
Lưu ý rằng: Với Class Module kiểu như trên, sẽ không có sự kiện Exit hay Enter đâu nha (suy nghĩ kỹ sẽ thấy hoàn toàn hợp lý)
Từ ví dụ trên, bạn tự phát triển theo ý đồ riêng nhé
Tham khảo thêm bài viết này:
http://www.giaiphapexcel.com/forum/showthread.php?37075-Dùng-Class-Module-để-tạo-sự-kiện-người-dùng
 

File đính kèm

Upvote 0
Vâng, hay quá, có sự kiện Change là ổn thầy ạ ^^
 
Upvote 0
Web KT

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

Back
Top Bottom