Add TextBox trên form! (2 người xem)

  • Thread starter Thread starter ThuNghi
  • Ngày gửi Ngày gửi
Liên hệ QC

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

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Tôi có sh Data gồm 3 cột
- MaHH
- TenHH
- DVT
Tôi muốn tạo 1 form để nhập vào, thay vì vào form add từng textBox (TB) và đặt tên là: TB_Mahh, TB_TenHH ... thì hơi lâu, trường hợp có 50 cột mà add 50 TB thì copy và paste lâu quá.
Nhờ các bạn viết cho code add và đặt tên các TB đó.
Xin cám ơn.
Có thấy đâu đó trên GPE nhưng tìm bài của NDU thì viết bài mới hỏi nhanh hơn. (nhiều quá).
Đính kèm file.
 

File đính kèm

Ngoài cái thích ra, ta cũng phải tính hiệu quả chứ. Anh em xem 2 trường hợp sau cái nào nhanh hơn

Mã:
..................
For i=1 to 50
Rg(i)= Controls("Tbx" &right("00"& i,3).Value
Next
.................
và đoạn code

Mã:
.....................
For i=1 to 50
For each Ctr in Controls
if Ctr.Tag="Tbx" &right("00"& i,3) then Rg(i)=Ctr.Value
Next
Next
.......................
Qua đó nó ảnh hưởng đến việc chọn lựa hình thức đặt tên, đánh dấu.
Riêng việc quản lý Control bằng Index thì mình tham gia là không nên.

Dân sử dụng VBA có 1 cái thiệt thòi so với Visual Basic là không đặt được tên Control theo mảng. Trong VB nếu chép dán đối tượng liền được hỏi có đồng ý đặt tên theo mảng không? Việc đặt tên theo mảng sẽ dễ sử lý hơn nhiều nếu đặt tên mảng
 
Lần chỉnh sửa cuối:
Upvote 0
Ngoài cái thích ra, ta cũng phải tính hiệu quả chứ. Anh em xem 2 trường hợp sau cái nào nhanh hơn

Mã:
..................
For i=1 to 50
Rg(i)= Controls("Tbx" &right("00"& i,3).Value
Next
.................
và đoạn code

Mã:
.....................
For i=1 to 50
For each Ctr in Controls
if Ctr.Tag="Tbx" &right("00"& i,3) then Rg(i)=Ctr.Value
Next
Next
.......................
Qua đó nó ảnh hưởng đến việc chọn lựa hình thức đặt tên, đánh dấu.
Riêng việc quản lý Control bằng Index thì mình tham gia là không nên.
Không sao cả đâu anh à!
Em thì thường làm cách này: Cho các Control mà mình quan tâm vào 1 Frame, duyệt qua các control trong Frame này, chẳng chậm tí nào
Thêm nữa: Cở vài chục cái TextBox mà anh bắt nhớ tbx_20 là cái gì thì có mà chết (tên gợi nhớ đương nhiên sướng hơn chứ)
Ẹc... Ẹc...
 
Upvote 0
Vậy còn mình muốn trong userform hiện ngang 3 textbox, xuống 3 textbox... tiếp tiếp xuống 3 nữa giống bài của anh Sealand vậy là sao Thầy??? Thanks
Dùng 2 vòng lặp lồng nhau:
Thí dụ muốn vẽ 30 textbox thành 3 cột, mỗi cột 10:
PHP:
With ThisWorkbook.VBProject.VBComponents("UserForm1")
For i = 1 to 10
   for j = 1 to 3
        With .Designer.Controls.Add("forms.TextBox.1", SrcRng.Cells(1, i) & j)
             .Top = ..... : .Left = ....
             .Width= ....: .Height = ...
        End With
    Next
Next

Mở form và gán data vào:

PHP:
Private Sub UserForm_Initialize()
Dim Arr
Arr = Range("A1:C11").Value
For i = 1 To 3
    For j = 1 To 10
        Me.Controls(Arr(1, i) & j) = Arr(j + 1, i)
    Next
Next
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom