Xin hỏi về vòng lặp trong textbox

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

kyo

Nguyễn Khắc Duy
Thành viên danh dự
Tham gia
4/6/06
Bài viết
901
Được thích
2,716
Con có một form với nhiều textbox liên tục được đánh số (tabindex) từ 15 đến 50.

PHP:
Do Until Sheets("Data").Range("C" & i).Value = ""
    z = 6
    j = 15
    If Sheets("Data").Range("C" & i).Value = NhapDuLieu.tbSoHD.Value Then
        mhh = Sheets("Data").Range("G" & i).Value
        Do Until Sheets("DMHH").Range("A" & z).Value = ""
            If Sheets("DMHH").Range("A" & z).Value = mhh Then
                Do Until NhapDuLieu.Controls(j).Value = ""
                j = j + 5
                Loop
                NhapDuLieu.Controls(j).Value = mhh
                NhapDuLieu.Controls(j + 1).Value = Sheets("DMHH").Range("B" & z).Value
                NhapDuLieu.Controls(j + 2).Value = Sheets("DMHH").Range("C" & z).Value
                NhapDuLieu.Controls(j + 3).Value = Sheets("Data").Range("H" & i).Value
                NhapDuLieu.Controls(j + 4).Value = Sheets("Data").Range("I" & i).Value
            End If
            z = z + 1
        Loop
    End If
    i=i+1
Loop

Code này chạy gặp lỗi là không có lệnh nhapdulieu.controls(j). Nhưng con đã xem một ví dụ của một thành viên nào đó trên GPE và đã sử dụng phương thức controls này để duyệt qua các textbox. Xin mọi người sửa code giúp con.
 
Kyo chú ý là VBA dùng tên (Name) của Textbox để phân biệt và xử lý, chứ không dùng Tab Index.

Do đó, cần đặt tên cho Textbox theo cách mà ta có thể gọi bằng vòng lặp.
Thí dụ đặt tên từ TxtBox1 đến TxtBox30, và muốn xử lý chỉ các TxtBox15 đến TxtBox30. Code xoá trắng 16 textbox sẽ như sau:
PHP:
For i = 15 to 30
  Me.Controls("TxtBox" & i).Value = ""
Next
Còn nếu muốn gán giá trị TxtBox từ 1 đến 10 bằng các giá trị dòng i, cột từ B đến K:

PHP:
For i = 1 to 100
   For j = 1 to 10
      Me.Controls(("TxtBox" & j) = Cells(i, j + 1)
   Next
Next

Cộng 1, vì cột bắt đầu (cột B) là cột số 2, còn j bắtđầu từ 1
 
Upvote 0
Web KT

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

Back
Top Bottom