Tùy chỉnh thêm texbox trên userform

Liên hệ QC

quoc1995db

Thành viên mới
Tham gia
1/4/19
Bài viết
23
Được thích
11
Chào mọi người trên GPE
Mình đang vướn một vấn đề khi nhập liệu trên userform đó là mình muốn tạo nhiều texbox tùy chỉnh theo ý muốn mục đích là để mình nhập cùng lúc nhiều hóa đơn chung một khách hàng.
mong mọi người có thể giúp mình ạ
cảm ơn mọi người!
 
Lập một cái Userform như bạn nói với ví dụ vài textboxes. Giả dụ như vừa "tự động" thêm 10 textboxes.
Lưu ý là cỡ trên 6-7 textboxes mới thấy cái form dễ nhìn thế nào, chứ 1-2 chả thấy gì đâu.
 
Upvote 0
Vâng Đúng rồi anh @hao93tbdtn anh có thể giúp em chỗ này hoặc cho em xin file mẫu để em tìm hiểu cách làm của anh.
 
Upvote 0
Mình cũng thấy trên mạng thui chứ không làm được :v
 
Upvote 0
Vâng Đúng rồi anh @hao93tbdtn anh có thể giúp em chỗ này hoặc cho em xin file mẫu để em tìm hiểu cách làm của anh.
Nếu kiểu như trong clip thì dùng 5, 6 textbox nhập liệu, 1 listbox 5, 6 cột để hiển thị, 1 vài nút nhấn để nhập mới, lưu xuống listbox, sửa xoá, và lưu xuống sheet
 
Upvote 0
Chào mọi người trên GPE
Mình đang vướn một vấn đề khi nhập liệu trên userform đó là mình muốn tạo nhiều texbox tùy chỉnh theo ý muốn mục đích là để mình nhập cùng lúc nhiều hóa đơn chung một khách hàng.
mong mọi người có thể giúp mình ạ
cảm ơn mọi người!
Tạo một CommandButton để mỗi khi click vào đó thì userform sẽ tạo ra một textbox mới, sau khi tạo có thể hiệu chỉnh chiều dài, chiều rộng, vị trí...

PHP:
Private Sub CommandButton1_Click()
Dim txtbox As Control
Set txtbox = UserForm1.Controls.Add("Forms.TextBox.1")
End Sub
 
Upvote 0
Chào mọi người trên GPE
Mình đang vướn một vấn đề khi nhập liệu trên userform đó là mình muốn tạo nhiều texbox tùy chỉnh theo ý muốn mục đích là để mình nhập cùng lúc nhiều hóa đơn chung một khách hàng.
mong mọi người có thể giúp mình ạ
cảm ơn mọi người!
Thường nếu số lượng Textbox hạn chế ở mức nào đó ví dụ 20-30 thì người ta vẽ luôn đầy đủ trên form đúng vị trí kích thước từ lúc thiết kế giao diện
Khi thực thi code thì ẩn hết các textbox đó đi, sau đó khi cần thì hiện lại thông qua thuộc tính
.Visible = True /False

Còn muốn các tính chất chung cho 1 đối tượng (ở đây là textbox) thì viết class cho đối tượng đó (nhưng trong VBA thì class khá hạn chế )
 
Upvote 0
Theo tôi bạn làm như bài #6. Nếu mỗi dòng dữ liệu trên sheet cần vd. 10 trường thì cần 10 TextBox. Chả lý gì lại tạo vd. 40, 50 hay 60 TextBox để "đề phòng" nhập 4, 5 hay 6 dòng. Chỉ tạo 10 TextBox cho 1 dòng thôi. Có thể dùng nút hoặc dùng sự kiện là nhấn Enter khi trỏ văn bản đang ở ô vd. "Số lượng" thì đập toàn bộ 10 TextBox vào ListBox rồi xóa các TextBox để nhập mới. Các dòng trong ListBox có thể chọn ra 10 TextBox kia để chỉnh sửa rồi lại đập về ListBox để làm mới. Khi đã ưng dữ liệu trong ListBox rồi thì đập tất cả (4, 5, 6 hoặc 20) xuống sheet. Thế thôi.
 
Upvote 0
Theo tôi bạn làm như bài #6. Chả lý gì lại tạo vd. 40, 50 hay 60 TextBox
- đập toàn bộ 10 TextBox vào ListBox rồi xóa các TextBox để nhập mới.
- Các dòng trong ListBox có thể chọn ra 10 TextBox kia để chỉnh sửa rồi lại đập về ListBox để làm mới.
- đập tất cả (4, 5, 6 hoặc 20) xuống sheet. Thế thôi.
Làm như bài 6 và như anh @batman1 khuyên hay ở chỗ "đập" 1 phát. Chứ 50/ 60 textbox mà vừa ý khi gán xuống sheet là chạy vòng lặp miệt mài
 
Upvote 0
Máy tính sẽ xì khói ra đằng mồm á bác?
Đó mới là 1 chuyện. Cái hại không lường trước đó là các textbox sinh ra thêm bằng code (30, 40) có kiểm soát được tên đặt cho nó không, tab index thế nào, rồi khi vòng lặp cho cả 50, 60 textbox cả cũ lẫn mới có gõ nhầm lộn xộn tên textbox không, xuống đúng cột của dữ liệu trên sheet không.
 
Upvote 0
. . . vấn đề khi nhập liệu trên userform: mục đích là để mình nhập cùng lúc nhiều hóa đơn chung một khách hàng. . . . .
Theo mình biết thì mỗi hóa đơn luôn có 2 phần: Phần chung & phần chi tiết
Phần chung gồm: Ngày-tháng, Mã khách hàng/Nhà cung cấp (& các dữ liệu liên quan)
Phần chi tiết gồm mã hàng, tên hàng, ĐVT, đơn giá & số lượng; Phần này có thể có nhiều dòng & ít nhất 1 dòng

Theo mình thì nhập dữ liệu cho 1 hóa đơn đầy đủ, sau kiểm tra ta nhấn nút lưu dữ liệu lên trang tính từng hóa đơn 1
Lí do sao bạn lại muốn nhập nhiều hóa đơn cùng 1 lúc vậy; Hay bạn muốn trang dữ liệu mình sẽ trở thành đống rác do 1 cái lỡ tay?
 
Upvote 0
Đó mới là 1 chuyện. Cái hại không lường trước đó là các textbox sinh ra thêm bằng code (30, 40) có kiểm soát được tên đặt cho nó không, tab index thế nào, rồi khi vòng lặp cho cả 50, 60 textbox cả cũ lẫn mới có gõ nhầm lộn xộn tên textbox không, xuống đúng cột của dữ liệu trên sheet không.
trời! Với cái sự hiểu biết nửa mùa của cháu về vba mà vẫn thi thoảng lòe bịp mấy đứa con gái chưa học vba thì xem ra việc sài nhiều textbox là bất khả thi. Nguyên cái việc đặt tên textbox sao cho nó đẹp như bác nói cũng thấy phức tạp quá trời.
 
Upvote 0
trời! Với cái sự hiểu biết nửa mùa của cháu về vba mà vẫn thi thoảng lòe bịp mấy đứa con gái chưa học vba thì xem ra việc sài nhiều textbox là bất khả thi. Nguyên cái việc đặt tên textbox sao cho nó đẹp như bác nói cũng thấy phức tạp quá trời.
Thì xem code trong file bài 11 đó. Nhấn nhấn tạo thêm sướng tay vì đẹp quá mà. Đầy form thì lại nhấn nhấn xoá như ảo thuật. Ấy mà có biết từng cái textbox tên gì đâu mà gọi, định đóng form để xem khai sinh có tên không thì nó đã biến mất còn đâu. Rồi khi xoá cứ thế mà xoá từ dưới lên chứ không chỉ định xoá 1 dòng mong muốn được
 
Upvote 0
Chào bạn, đây là video của mình up lên,
Các hàng textbox và combobox điều được tạo nên bằng .Controls.Add.Controls.Remove
Còn khi đưa dữ liệu xuống Bảng tính thì chỉ cần đưa tất cả vào 1 mảng 2 chiều nên tốc độ rất nhanh và không bị lộn xộn

Capture.PNG
 
Upvote 0
Chào bạn, đây là video của mình up lên,
Các hàng textbox và combobox điều được tạo nên bằng .Controls.Add.Controls.Remove
Còn khi đưa dữ liệu xuống Bảng tính thì chỉ cần đưa tất cả vào 1 mảng 2 chiều nên tốc độ rất nhanh và không bị lộn xộn
Có file không bạn? Chỉ có hình và clip thì làm sao bạn ấy làm được?
 
Upvote 0
Có file không bạn? Chỉ có hình và clip thì làm sao bạn ấy làm được?
Dạ cái này em nhớ là lúc trước có ai đó có viết bài nên em có học lỏm được nên em cũng không up gì lên cả, nếu có thể thì em sẽ làm bài hướng dẫn lại và code. Còn do file em sử dụng trong công việc nên tách dữ liệu ra gửi file riêng hơi tốn công ạ.
 
Upvote 0
Theo mình biết thì mỗi hóa đơn luôn có 2 phần: Phần chung & phần chi tiết
Phần chung gồm: Ngày-tháng, Mã khách hàng/Nhà cung cấp (& các dữ liệu liên quan)
Phần chi tiết gồm mã hàng, tên hàng, ĐVT, đơn giá & số lượng; Phần này có thể có nhiều dòng & ít nhất 1 dòng

Theo mình thì nhập dữ liệu cho 1 hóa đơn đầy đủ, sau kiểm tra ta nhấn nút lưu dữ liệu lên trang tính từng hóa đơn 1
Lí do sao bạn lại muốn nhập nhiều hóa đơn cùng 1 lúc vậy; Hay bạn muốn trang dữ liệu mình sẽ trở thành đống rác do 1 cái lỡ tay?
vi giao 1 một khách hàng cùng 1 chuyến đi nhưng lại có nhiều hóa đơn nên mình muốn nhập cùng lúc để hiện ra số tiền vận chuyển của chuyến đó cả bao gồm chi tiết của hóa đơn,nhằm mục đính báo cáo chi phí vận chuyển và volume của từng chuyến.
 
Upvote 0
Web KT
Back
Top Bottom