Chạy code đưa dữ liệu từ textbox trên userform xuống sheet bị treo máy . nhờ A/C tứ vấn

Liên hệ QC

guitarnguyen1989

Thành viên chính thức
Tham gia
31/7/16
Bài viết
59
Được thích
7
Chào A/C !

Mình tạo một userform : Chứa 115 textbox để nhập liệu , sau nhập thì Click vào nút Lưu Data để ghi dữ liệu vào sheets ("pak_in") , nhưng tốc độ quá chậm chạy code có khi mất 2 phút mới chạy xong code

Nhờ A/C tư vấn , giải thích dùm !

Thanks
 

File đính kèm

  • Test.xlsm
    55.6 KB · Đọc: 15
Chào A/C !

Mình tạo một userform : Chứa 115 textbox để nhập liệu , sau nhập thì Click vào nút Lưu Data để ghi dữ liệu vào sheets ("pak_in") , nhưng tốc độ quá chậm chạy code có khi mất 2 phút mới chạy xong code

Nhờ A/C tư vấn , giải thích dùm !

Cảm ơn
Mã:
Private Sub CommandButton5_Click()
  Dim Res(1 To 20, 1 To 9), Res2(1 To 20, 1 To 1)
  Dim LastRow As Long, Stt, k As Long, i As Long, j As Long
  With Sheets("Pak_in")
    LastRow = .Cells(Rows.Count, "B").End(xlUp).Row
    Stt = Cells(LastRow, 1).Value
    If IsNumeric(Stt) = False Then Stt = 0
  End With

  For i = 1 To 120 Step 6
    If Controls("TextBox" & i) = "" Then Exit Sub
    k = k + 1: Stt = Stt + 1
    Res(k, 1) = Stt
    Res(k, 2) = Cob_Staff_pak
    Res(k, 3) = Txt_day
    Res2(k, 1) = Cob_Input_pak
    For j = 0 To 5
      Res(k, 4 + j) = Controls("TextBox" & i + j)
      Controls("TextBox" & i + j) = ""
    Next j
  Next i
  With Sheets("Pak_in")
    .Range("A" & LastRow + 1).Resize(k, 9) = Res
    .Range("N" & LastRow + 1).Resize(k) = Res2
  End With
End Sub
 
Upvote 0
Chào A/C !

Mình tạo một userform : Chứa 115 textbox để nhập liệu , sau nhập thì Click vào nút Lưu Data để ghi dữ liệu vào sheets ("pak_in") , nhưng tốc độ quá chậm chạy code có khi mất 2 phút mới chạy xong code

Nhờ A/C tư vấn , giải thích dùm !

Cảm ơn
Góp ý cho bạn:
1/ Nên bố trí các Control theo trình tự của tiêu đề theo tôi thì nên dùng SheetForm sẽ thuận tiện cho việc tạo và In đơn hàng.
2/ Nên làm 1 sheet Danh mục chứa các đối tượng này: Mã NVL, Tên NVL, DVT, Số lượng, mã NCC, tên NCC, sau đó gán nó vào ListBox của UserForm để chọn được nhiều Tên NVL cùng lúc thì việc nhập liệu mới nhanh được.
 
Upvote 0
Chào A/C !

Mình tạo một userform : Chứa 115 textbox để nhập liệu , sau nhập thì Click vào nút Lưu Data để ghi dữ liệu vào sheets ("pak_in") , nhưng tốc độ quá chậm chạy code có khi mất 2 phút mới chạy xong code

Nhờ A/C tư vấn , giải thích dùm !

Cảm ơn

:) Bạn thiết kế cái userform rất đẹp nhưng không có tính thực tế và không ai thiết kế như vậy cả. 115 cái textbox?. Mấy cái form mà bạn thấy giống vậy, có từng dòng nhập liệu là có dùng công cụ chuyên cho nó - là dạng continuous form và cũng chỉ có số lượng textbox = số lượng cột, còn số dòng là do cái form đó hiển thị. Tiếc là Userform Excel không có hỗ trợ dạng Continous Form nên bạn cố ép thiết kế theo nó sẽ không hiệu quả. Thay vì nhập dạng Continuous thì nhập dạng Single Form và đây cũng là dạng nhập liệu phổ biến nhất, dễ nhìn, thao tác và dễ bẫy lỗi hơn dạng kia.
Dạng Single Form là dạng nhập liệu nhiều demo trên diễn đàn này hướng dẫn rồi đó. Nhập từng dòng rồi Enter (Lưu).
 
Upvote 0
Web KT
Back
Top Bottom