Tạo vòng lặp để xử lý nhiều checkbox ??? (1 người xem)

Liên hệ QC

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

dinh_trong_hoa

Thành viên mới
Tham gia
14/8/12
Bài viết
23
Được thích
3
Chào các ban !

Hiện mình đang thiết kết mẫu đơn cho công ty, mẫu đơn gồm 02 sheet, sheet1 là biểu mẫu dùng để in ấn, sheet2 dùng để nhập thông tin, mỗi sheet có 21 checkbox tác động tương ứng.
VD: checkbox1 của sheet2 = true thì checkbox1 của sheet1 = true
Nếu dùng hàm (IF) thì dài quá, mình muốn tạo một vòng lặp để cho gọn. Mong các bạn giúp đỡ giải quyết vấn đề. Mình chỉ mới làm quen với VBA nên mong các bạn hưỡng dẫn chi tiết giùm.

Xin chân thành cám ơn!
 
Chào các ban !

Hiện mình đang thiết kết mẫu đơn cho công ty, mẫu đơn gồm 02 sheet, sheet1 là biểu mẫu dùng để in ấn, sheet2 dùng để nhập thông tin, mỗi sheet có 21 checkbox tác động tương ứng.
VD: checkbox1 của sheet2 = true thì checkbox1 của sheet1 = true
Nếu dùng hàm (IF) thì dài quá, mình muốn tạo một vòng lặp để cho gọn. Mong các bạn giúp đỡ giải quyết vấn đề. Mình chỉ mới làm quen với VBA nên mong các bạn hưỡng dẫn chi tiết giùm.

Xin chân thành cám ơn!

Bạn gửi cái file bạn lên đi, diễn tả thì khó hình dung quá!
 
Upvote 0
Chào các ban !

Hiện mình đang thiết kết mẫu đơn cho công ty, mẫu đơn gồm 02 sheet, sheet1 là biểu mẫu dùng để in ấn, sheet2 dùng để nhập thông tin, mỗi sheet có 21 checkbox tác động tương ứng.
VD: checkbox1 của sheet2 = true thì checkbox1 của sheet1 = true
Nếu dùng hàm (IF) thì dài quá, mình muốn tạo một vòng lặp để cho gọn. Mong các bạn giúp đỡ giải quyết vấn đề. Mình chỉ mới làm quen với VBA nên mong các bạn hưỡng dẫn chi tiết giùm.

Xin chân thành cám ơn!

Đại loại thế này
PHP:
Sub chkbox()
Dim i
For i = 1 To 21
   Sheets(1).CheckBoxes(i) = Sheets(2).CheckBoxes(i).Value
Next
End Sub
 
Upvote 0
Bạn gửi cái file bạn lên đi, diễn tả thì khó hình dung quá!

vd:
if sheets(sheet2).checkbox1=true then sheets(sheet1).checkbox1=true else sheets(sheet1).checkbox1=false

+ Cứ thế từ checkbox1 -> checkbox21-+*/, vì thế mình muốn thay bằng vòng lặp nhưng chưa biết cách đặt biến và thiết lập lệnh
 
Upvote 0
Phương thứ này mình đã thử qua nhưng nó không chạy được

Quang Hải sơ ý viết thiếu thôi. Chỗ đỏ đỏ
Mà bạn đọc code cũng phải tư duy chút ít chứ. 0 suy nghĩ?
Một vế có .Value một vế không có mà không tò mò cho cả 2 vế giống nhau, tức đều có .Value à?
Mã:
Sub chkbox()
Dim i
    For i = 1 To 21
       Sheets(1).CheckBoxes(i)[SIZE=4][COLOR=#ff0000].Value[/COLOR][/SIZE] = Sheets(2).CheckBoxes(i).Value
    Next
End Sub
 
Upvote 0
Quang Hải sơ ý viết thiếu thôi. Chỗ đỏ đỏ
Mà bạn đọc code cũng phải tư duy chút ít chứ. 0 suy nghĩ?
Một vế có .Value một vế không có mà không tò mò cho cả 2 vế giống nhau, tức đều có .Value à?
Mã:
Sub chkbox()
Dim i
    For i = 1 To 21
       Sheets(1).CheckBoxes(i)[SIZE=4][COLOR=#ff0000].Value[/COLOR][/SIZE] = Sheets(2).CheckBoxes(i).Value
    Next
End Sub

Phương thức của bạn mình đã từng thử qua rồi không chạy được nên mới post bài nhờ trợ giúp, chứ không phải mình không biết tư duy
 
Upvote 0
Phương thức của bạn mình đã từng thử qua rồi không chạy được nên mới post bài nhờ trợ giúp, chứ không phải mình không biết tư duy
Xét về cơ bản thì code của mình viết sẽ chạy được mà. Chắc là có gì không bình thường quá. Hay là gởi file lên cho mau lẹ.
Không có file nên cứ theo lý thuyết mà viết nên không có chỗ nào để test cả.
Để chứng minh lý thuyết là đúng thì bạn xem file của mình nhá
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xét về cơ bản thì code của mình viết sẽ chạy được mà. Chắc là có gì không bình thường quá. Hay là gởi file lên cho mau lẹ.
Không có file nên cứ theo lý thuyết mà viết nên không có chỗ nào để test cả.
Để chứng minh lý thuyết là đúng thì bạn xem file của mình nhá

File đính kèm của bạn đúng ý mỉnh rồi đấy, nhưng mình dùng checkbox của menu activeX control có lẽ vì thế mà không sử dụng được code của ban, minh gởi lại file mẫu bạn hướng dẫn giùm mình
 

File đính kèm

Upvote 0
Bạn đổi phương án bằng cách gán linkedcell cho tất cả các Checkbox, 2 sheet giống nhau, rồi xử lý trên các cells đó, khỏi vòng lặp.
Thí dụ
Sheet1.Range("A5:A8") = Sheet2.Range("A5:A8")

Thậm chí không cần VBA cũng làm được bằng công thức đơn giản. lưu ý khi chỉ dùng công thức, thì không được check bên sheet1, sẽ mất công thức.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
File đính kèm của bạn đúng ý mỉnh rồi đấy, nhưng mình dùng checkbox của menu activeX control có lẽ vì thế mà không sử dụng được code của ban, minh gởi lại file mẫu bạn hướng dẫn giùm mình

Giải pháp để làm bài này tôi không bàn đến
Tôi chỉ thắc mắc: Bạn cần nhiều checkbox như vậy để làm cái gì?
Bởi vì nếu biết rõ được công việc cụ thế của bạn, tôi tin chắc sẽ gợi ý cho bạn những cách khác hay hơn (vì chả ai đi vẽ cả đống object trên bảng tính như vậy cả)
 
Upvote 0
File đính kèm của bạn đúng ý mỉnh rồi đấy, nhưng mình dùng checkbox của menu activeX control có lẽ vì thế mà không sử dụng được code của ban, minh gởi lại file mẫu bạn hướng dẫn giùm mình
Cái đồ quỷ này dễ ẹc mà. Bạn thử mày mò xem. Khi nào bí quá thì mình ra tay. Làm sẵn hết cho các bạn thì cũng không phải là cách hay nhất. Mình gợi ý cho bạn tẹo: trước cái .CheckBox thì còn có anh này nữa "OLEObjects", và sửa lại tí mới chạy. Chịu khó nhé.
Come on!
 
Upvote 0
Phương thức của bạn mình đã từng thử qua rồi không chạy được nên mới post bài nhờ trợ giúp, chứ không phải mình không biết tư duy

Thực ra người không suy nghĩ là tôi. Vì không nhất thiết phải thêm .Value do Value là thuộc tính mặc định.
Lúc đó tôi hơi mệt. Xin lỗi bạn nhé.
-----------
Nếu bạn dùng Activex Control thì

Mã:
Sub chkbox()
Dim i
    For i = 1 To 21
       Sheets(1).OLEObjects(i).Object.Value = Sheets(2).OLEObjects(i).Object.Value
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Thực ra người không suy nghĩ là tôi. Vì không nhất thiết phải thêm .Value do Value là thuộc tính mặc định.
Lúc đó tôi hơi mệt. Xin lỗi bạn nhé.
-----------
Nếu bạn dùng Activex Control thì

Mã:
Sub chkbox()
Dim i
    For i = 1 To 21
       Sheets(1).OLEObjects(i).Object.Value = Sheets(2).OLEObjects(i).Object.Value
    Next
End Sub

Cám ơn bạn nhiều
Mình đã làm được :-=
 
Upvote 0
Giải pháp để làm bài này tôi không bàn đến
Tôi chỉ thắc mắc: Bạn cần nhiều checkbox như vậy để làm cái gì?
Bởi vì nếu biết rõ được công việc cụ thế của bạn, tôi tin chắc sẽ gợi ý cho bạn những cách khác hay hơn (vì chả ai đi vẽ cả đống object trên bảng tính như vậy cả)

-Bạn ơi, mẫu đơn của mình để cập là do cơ quan nhà nước ban hành, mình tạo form là để thuận tiện việc khai báo, không thể thay đổi được.
vd : mỹ phẩm nó 21 dạng, tiêu đề của một dạng sản phẩm nó rất dài, sản phẩm của bạn thuộc dạng nào thì chọn dạng đó
-Nếu bạn lang thang trên mạng sẽ gặp nhiều trường hợp giống mình, có dự án lến tới 72 checkbox.
 
Upvote 0
-Bạn ơi, mẫu đơn của mình để cập là do cơ quan nhà nước ban hành, mình tạo form là để thuận tiện việc khai báo, không thể thay đổi được.
vd : mỹ phẩm nó 21 dạng, tiêu đề của một dạng sản phẩm nó rất dài, sản phẩm của bạn thuộc dạng nào thì chọn dạng đó
-Nếu bạn lang thang trên mạng sẽ gặp nhiều trường hợp giống mình, có dự án lến tới 72 checkbox.

Tôi dám cá với bạn nếu bạn đưa file lên đây, tôi sẽ có cách "chế" lại chỉ cần 1 checkBox hoặc thậm chí là chẳng có cái CheckBox nào vẫn đáp ứng được nhu cầu
Còn nếu bạn vẫn thích 72 cái CheckBox ấy thì... tùy vậy
 
Upvote 0
Mình Spam chút, ý kiến Ndu là hoàn toàn có lý. Chẳng ai lại đi vẽ 1 mục chọn vài chục cái CheckBox như vậy cả. Giả sử mẫu đơn của bạn có hàng chục mục chọn thì trên sheet có đến cả trăm hay ngàn cái CheckBox. Chỉ riêng việc quản lý tên và vị trí của nó thôi đã mệt rồi. Chưa kể mỗi CheckBox lại kèm theo Code điều khiển nữa thì file nặng phải biết, không biết máy yếu có Load nổi không nữa.
Trong khi vấn đề này hoàn toàn có thể sử dụng chính Cell để giải quyết. Nó vừa nhanh hoạt vừa hoạt động cơ động (CheckBox dùng chuột còn tạm chứ dùng bàn phím thì còn mệt). Vậy nên Ndu muốn yêu cầu của bạn thế nào để lựa chọn giải pháp trước khi đi tìm cách sử dụng nó.
 
Upvote 0
Tôi dám cá với bạn nếu bạn đưa file lên đây, tôi sẽ có cách "chế" lại chỉ cần 1 checkBox hoặc thậm chí là chẳng có cái CheckBox nào vẫn đáp ứng được nhu cầu
Còn nếu bạn vẫn thích 72 cái CheckBox ấy thì... tùy vậy

-Tôi tin là bạn có khả năng đó, nhưng qua những những gì bạn nói tôi cảm thấy bản chưa hình dung được tính chất của sự việc, tôi post thử một đoạn mẫu đơn sử dụng checkbox để các bản thử chơi.
-Nội dung của đề bài là: Khi muốn nhâp khẩu mỹ phẩm bạn phải kê khai với cơ quan chức năng về nhưng tính chất đặc trưng của những sản phẩm bạn muốn nhập, mẫu đơn của cơ quan lý nó thiết kế theo dạng checkbox, sản phẩm thuộc dạng nào thì click vào dạng đó. Nhu cầu của tôi là thay vi kéo lên kéo xuống để điền vào thì bất tiện, tôi muốn thiết kế một form tập chung những gi cần khai báo lại như một măm cơm thao tác 1 lần cho tiện, và quan sát được tổng thể nội dung đã điền vào nếu sai sẽ phát hiện dễ dàng. Khi khai bao xong thì in ra đóng dấu đem nộp.
*Lưu ý: không phải check all nha, check theo tính chất của từng loại mỹ phẩm.
 

File đính kèm

Upvote 0
-Tôi tin là bạn có khả năng đó, nhưng qua những những gì bạn nói tôi cảm thấy bản chưa hình dung được tính chất của sự việc, tôi post thử một đoạn mẫu đơn sử dụng checkbox để các bản thử chơi.
-Nội dung của đề bài là: Khi muốn nhâp khẩu mỹ phẩm bạn phải kê khai với cơ quan chức năng về nhưng tính chất đặc trưng của những sản phẩm bạn muốn nhập, mẫu đơn của cơ quan lý nó thiết kế theo dạng checkbox, sản phẩm thuộc dạng nào thì click vào dạng đó. Nhu cầu của tôi là thay vi kéo lên kéo xuống để điền vào thì bất tiện, tôi muốn thiết kế một form tập chung những gi cần khai báo lại như một măm cơm thao tác 1 lần cho tiện, và quan sát được tổng thể nội dung đã điền vào nếu sai sẽ phát hiện dễ dàng. Khi khai bao xong thì in ra đóng dấu đem nộp.
*Lưu ý: không phải check all nha, check theo tính chất của từng loại mỹ phẩm.

Bạn cũng phải mô tả cho mọi người biết BẠN MUỐN LÀM ĐIỀU GÌ TRONG FILE NÀY chứ
Ngoài ra, bạn có đề cập đến "mẫu đơn của cơ quan lý nó thiết kế theo dạng checkbox" ---> Vậy cái MẪU ĐƠN ấy đâu?
 
Lần chỉnh sửa cuối:
Upvote 0
-Tôi tin là bạn có khả năng đó, nhưng qua những những gì bạn nói tôi cảm thấy bản chưa hình dung được tính chất của sự việc, tôi post thử một đoạn mẫu đơn sử dụng checkbox để các bản thử chơi.
-Nội dung của đề bài là: Khi muốn nhâp khẩu mỹ phẩm bạn phải kê khai với cơ quan chức năng về nhưng tính chất đặc trưng của những sản phẩm bạn muốn nhập, mẫu đơn của cơ quan lý nó thiết kế theo dạng checkbox, sản phẩm thuộc dạng nào thì click vào dạng đó. Nhu cầu của tôi là thay vi kéo lên kéo xuống để điền vào thì bất tiện, tôi muốn thiết kế một form tập chung những gi cần khai báo lại như một măm cơm thao tác 1 lần cho tiện, và quan sát được tổng thể nội dung đã điền vào nếu sai sẽ phát hiện dễ dàng. Khi khai bao xong thì in ra đóng dấu đem nộp.
*Lưu ý: không phải check all nha, check theo tính chất của từng loại mỹ phẩm.

Tôi đã từng biết Thầy Ndu làm những "checkbox ảo" bằng công thức, rất gọn nhẹ, nếu đúng điều kiện thì nó có dấu check, ngược lại thì không! Chỉ vì bạn không đưa cái file thật lên và diễn tả đầy đủ những gì bạn cần, đôi khi bạn còn được nhiều hơn cả mong đợi nữa đấy!
 
Upvote 0
Mình Spam chút, ý kiến Ndu là hoàn toàn có lý. Chẳng ai lại đi vẽ 1 mục chọn vài chục cái CheckBox như vậy cả. Giả sử mẫu đơn của bạn có hàng chục mục chọn thì trên sheet có đến cả trăm hay ngàn cái CheckBox. Chỉ riêng việc quản lý tên và vị trí của nó thôi đã mệt rồi. Chưa kể mỗi CheckBox lại kèm theo Code điều khiển nữa thì file nặng phải biết, không biết máy yếu có Load nổi không nữa.
Trong khi vấn đề này hoàn toàn có thể sử dụng chính Cell để giải quyết. Nó vừa nhanh hoạt vừa hoạt động cơ động (CheckBox dùng chuột còn tạm chứ dùng bàn phím thì còn mệt). Vậy nên Ndu muốn yêu cầu của bạn thế nào để lựa chọn giải pháp trước khi đi tìm cách sử dụng nó.

Bạn thân mếm ! Hàng ngày công ty tôi phải khai báo mấy chục loại mỹ phẩm khác nhau nên hiệu quả luôn đặc trên hết,
tôi muốn rút gọn phần code nên mới có ý sử dụng vòng lặp, tạo một macro sau khi khai báo xong cho chạy marco là nó tự điền thông tin trên form sang biểu mẫu, chứ đâu viết code cho từng checkbox làm gì
 
Upvote 0
xin tham gia một cách làm bằng công thức, (chứ ko phải dùng code)
 

File đính kèm

Upvote 0
Bạn thân mếm ! Hàng ngày công ty tôi phải khai báo mấy chục loại mỹ phẩm khác nhau nên hiệu quả luôn đặc trên hết,
tôi muốn rút gọn phần code nên mới có ý sử dụng vòng lặp, tạo một macro sau khi khai báo xong cho chạy marco là nó tự điền thông tin trên form sang biểu mẫu, chứ đâu viết code cho từng checkbox làm gì

Cuối cùng bạn cũng không chịu trả lời những gì tôi hỏi ở bài 19
Thôi... kệ bạn vậy! Chán, chả muốn tham gia
 
Upvote 0
Tôi đã từng biết Thầy Ndu làm những "checkbox ảo" bằng công thức, rất gọn nhẹ, nếu đúng điều kiện thì nó có dấu check, ngược lại thì không! Chỉ vì bạn không đưa cái file thật lên và diễn tả đầy đủ những gì bạn cần, đôi khi bạn còn được nhiều hơn cả mong đợi nữa đấy!
Bạn thân mếm !Mình có khó của mình, hồ sơ của công ty không tiện đăng tải tùm lum mặc dù có ý hỗ trợ cho công việc.Nhìn chung mình thì không có rắc rối gì, chẳng qua mình muốn hoàn thiện, làm gọn lại phần code và học hỏi thêm các phương thức hay hơn. File mình đăng tải là file thật, nó tới 7-8 trang mình xóa bỏ những cái không liên quang đến chủ đề cho gọn. Như mình đã nói file mình gởi là biểu mẫu, thây vì kéo xuống từng trang để nhập thông tin, thì mình muốn tạo một form gọi là "bảng khai báo" tập hợp những mục cần điền thông tin lại để thao tác cho tiện, mấy mục khác thi ok, riêng mục có chứa mấy cái checkbox mình không có cách nào khác là tạo thêm máy các checkbox tưng ứng trên form, thay vì viét code là if ....chekbox1=true......, thì mình muốn dùng vòng lặp sẽ gọn hơn nên mới đăng bài xin trợ giúp, một số bạn thắc mắc sao lại dùng nhiều checkbox, nếu các bạn có ý hay hơn xin bổ sung giùm mình

Cuối cùng bạn cũng không chịu trả lời những gì tôi hỏi ở bài 19
Thôi... kệ bạn vậy! Chán, chả muốn tham gia
Bạn thân mến !
Mình đã đăng file theo gơi ý của bạn, bạn có ý hay hơn xin mơi bổ sung.

xin tham gia một cách làm bằng công thức, (chứ ko phải dùng code)

Bạn thân mến !
Cám ơn bạn đã góp ý, trước đây mình cũng dùng công thức + simbol để giải quyết nhưng với số lương công thức cần phải tạo nhiều làm cho file nặng chạy chậm, nên mình chuyển sang ứng dụng vba mình thấy hiệu quả hơn nhiều. Do mình chưa rành vba nên vài chỗ còn gặp khó khăn, hoặc viết code lòng vòng nhìn chói mắt
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn thân mến !
Cám ơn bạn đã góp ý, trước đây mình cũng dùng công thức + simbol để giải quyết nhưng với số lương công thức cần phải tạo nhiều làm cho file nặng chạy chậm, nên mình chuyển sang ứng dụng vba mình thấy hiệu quả hơn nhiều. Do mình chưa rành vba nên vài chỗ còn gặp khó khăn, hoặc viết code lòng vòng nhìn chói mắt

bạn cứ đi lòng vòng như vậy những người giúp bạn sẻ chán.
bạn hãy đưa một file lên, nói rỏ những mục nào thì check vào checkbox nào, bạn đưa một đóng checkbox, thì ai hiểu mà làm cho bạn. (giống file mình là vi dụ cho bạn, tên A thì check vào checkbox 2,5,7..v.v., hoặc như thế nào giống với công việc của bạn). đó là ý của anh Ndu hỏi bạn đó
 
Upvote 0
Tôi thấy có lẽ nên chấm dứt ở đây.
Nếu bạn dinh_trong_hoa có nhu cầu thì chắc không cần chào mời bạn ấy cũng sẽ nhờ.
Mỗi người có nhu cầu khác nhau, có lý do nào đó.
Các bạn cứ ép làm tôi liên tưởng tới một đối thoại.

Có anh chàng nọ ...

- Nếu em muốn anh sẽ chiều em.
- Không, em không muốn.
- Anh hỏi thật mà. Em muốn thì anh sẽ chiều em liền.
- Không mà.
- Thế thì anh chiều em!
-----------
Đừng ai có ý nghĩ "đen tối" nhé. Có nhiều chuyện có thể chiều lắm đó.
 
Upvote 0
Tôi nghĩ tác giả đã đưa file 2 lần, 2 file tuy khác nhau nhưng cùng 1 mục đích. Có lẽ tác giả diễn đạt kém. Tôi tạm hiểu thế này:

Sheet1 là 1 cái mẫu dài ngoằng phải đánh dấu vào checkbox để in ra nộp cho cơ quan nhà nước. Các checkbox đó sẽ nằm rải rác ở nhiều trang in và đếm được 21 cái.

Sheet2 là 1 cái thu gọn của form kia, 21 checkbox nằm gọn trong 1 trang màn hình để đánh dấu cho nhanh. Tác giả muốn khi đánh dấu vào form thu gọn này, là có thể in form đầy đủ để đi nộp.

Để đạt mục đích này, thì code bài #8 của Quanghai, #13 của siwtom, dùng công thức bài #10 của tôi là đáp ứng xong.

Đặt trường hợp bạn nghe theo ndu và muốn bỏ 21 cái checkbox bên sheet 2 (form thu gọn), bạn có thể dùng 21 ô chỉ dùng để gõ Yes/No hoặc làm biếng hơn thì T/F
Trong sheet1 (form đầy đủ), bạn cũng tạo linked cells cho 21 checkbox. Mỗi ô link đó bạn gõ công thức:

=(Sheet2!A1="T")
với A1 là ô tương ứng.

Khỏi VBA gì nữa
 
Upvote 0
Đặt trường hợp bạn nghe theo ndu và muốn bỏ 21 cái checkbox bên sheet 2 (form thu gọn), bạn có thể dùng 21 ô chỉ dùng để gõ Yes/No hoặc làm biếng hơn thì T/F
Trong sheet1 (form đầy đủ), bạn cũng tạo linked cells cho 21 checkbox. Mỗi ô link đó bạn gõ công thức:

=(Sheet2!A1="T")
với A1 là ô tương ứng.

Khỏi VBA gì nữa

Ý em là sẽ thay cái CheckBox (object) kia bằng cái Checkbox dạng ký tự đặc biệt
Chỉ thế thôi nhưng phải có file cụ thể mới làm được
 
Upvote 0
Ý em là sẽ thay cái CheckBox (object) kia bằng cái Checkbox dạng ký tự đặc biệt
Chỉ thế thôi nhưng phải có file cụ thể mới làm được

nếu mình hiểu đúng, sheet2 sẽ không cần in, nên không cần đúng là checkbox hoặc tương tự checkbox. Do đó gõ ào ào T, T, F, T, F, ... cũng đạt.

Thậm chí ô nào có thì quánh T hoặc X, ô nào không cần thì bỏ trống, cũng được tuốt.

Nói thêm, căn cứ vào code của 3 cái nút lệnh to đùng trong file, có thể hiểu là tác giả nhập nhanh 1 form, in ra, xóa đi, nhập nhanh form kế tiếp. Lúc này chỉ cần bôi đen A1:A21 xóa sạch là ok.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi nghĩ tác giả đã đưa file 2 lần, 2 file tuy khác nhau nhưng cùng 1 mục đích. Có lẽ tác giả diễn đạt kém. Tôi tạm hiểu thế này:

Sheet1 là 1 cái mẫu dài ngoằng phải đánh dấu vào checkbox để in ra nộp cho cơ quan nhà nước. Các checkbox đó sẽ nằm rải rác ở nhiều trang in và đếm được 21 cái.

Sheet2 là 1 cái thu gọn của form kia, 21 checkbox nằm gọn trong 1 trang màn hình để đánh dấu cho nhanh. Tác giả muốn khi đánh dấu vào form thu gọn này, là có thể in form đầy đủ để đi nộp.

Để đạt mục đích này, thì code bài #8 của Quanghai, #13 của siwtom, dùng công thức bài #10 của tôi là đáp ứng xong.

Đặt trường hợp bạn nghe theo ndu và muốn bỏ 21 cái checkbox bên sheet 2 (form thu gọn), bạn có thể dùng 21 ô chỉ dùng để gõ Yes/No hoặc làm biếng hơn thì T/F
Trong sheet1 (form đầy đủ), bạn cũng tạo linked cells cho 21 checkbox. Mỗi ô link đó bạn gõ công thức:

=(Sheet2!A1="T")
với A1 là ô tương ứng.

Khỏi VBA gì nữa

Cám ơn bạn đã diễn giải giùm mình, bạn nói đúng ý mình rồi đó !
Khả năng diễn giải của mình hơi kém, nghe các bạn bình luận là mình biết các bạn không hiểu ý mình, càng muốn giải thích cho rõ thì lại càng làm cho các bạn rối.
Đúng như ptm0412 giải thích, sự việc đơn giản vậy thôi, chỉ cần 1 cái vòng lặp là mọi thứ đều ổn.
Về phương pháp thực hiện thì mình thấy vba hay hơn vì mình thiết kế cho nhiều người dùng, nhìn vào giao diện là ai cũng hiểu không cần giải thích nhiều
 
Upvote 0
Cám ơn bạn đã diễn giải giùm mình, bạn nói đúng ý mình rồi đó !
Khả năng diễn giải của mình hơi kém, nghe các bạn bình luận là mình biết các bạn không hiểu ý mình, càng muốn giải thích cho rõ thì lại càng làm cho các bạn rối.
Đúng như ptm0412 giải thích, sự việc đơn giản vậy thôi, chỉ cần 1 cái vòng lặp là mọi thứ đều ổn.
Về phương pháp thực hiện thì mình thấy vba hay hơn vì mình thiết kế cho nhiều người dùng, nhìn vào giao diện là ai cũng hiểu không cần giải thích nhiều

Đâu phải tôi không hiểu ý bạn (hiểu thừa nữa là khác)
Vấn đề là tôi sẽ làm vào đâu trong file của bạn?
Hoặc giả sử tôi tự mình giả lập 1 file thì liệu khi bạn xem xong có tự áp dụng vào file thật của bạn được không?
-------------
Nói chung là tôi chẳng muốn mất công để làm cái việc "tưởng tượng" kiểu như vậy!
 
Upvote 0
Bạn thân mếm ! Hàng ngày công ty tôi phải khai báo mấy chục loại mỹ phẩm khác nhau nên hiệu quả luôn đặc trên hết,
tôi muốn rút gọn phần code nên mới có ý sử dụng vòng lặp, tạo một macro sau khi khai báo xong cho chạy marco là nó tự điền thông tin trên form sang biểu mẫu, chứ đâu viết code cho từng checkbox làm gì
Bạn không hiểu ý tôi rồi, đằng sau mỗi cái CheckBox ấy là cả đống Code điều khiển cho nó chứ nếu chỉ là cái hình ảnh thôi thì sao nó biết bạn nháy chuột tự động điền dấu Check vào ô, tự động thay đổi giá trị và gán giá trị cho 1ô nào đó. Nó âm thầm chiếm tài nguyên của máy, trong khi thằng khác ăn ít hơn mà có khi còn hiệu quả hơn. Đấy là những cái mà anh em tham gia với bạn, bằng sự chân tình, bằng kinh nghiệm và cả những cái giá phải trả mày mò tìm tòi.
Giờ nói riêng về cái file của bạn, bạn tìm cách liên kết trực tiếp từ Sheet nhập liệu sang sheet Report rồi in luôn. Vậy các thông số bạn đăng ký với Nhà nước thế này bạn không lưu à. Nếu đã lưu thì cơ chế lưu trữ và khai thác nó cũng khác đi. Tôi ví dụ thế này, trong Mục 1 có 30 chọn lựa (Giả sử bạn chọn các số 01,05,08,20,26. Vậy thì cả mục 1 tôi cũng chỉ cần 1 ô nhập 01,05,08,20,26 là xong (Nhưng vẫn có thể chọn lựa cho từng ô nếu muốn).Trong sheet Nhập DL ta khoá tất cả các ô chỉ để các ô điền dữ liệu, vậy là khi di chuyển nó chỉ nhẩy vào các ô cần điền mà thôi.Nhập xong lưu lại. Sau này khi nào cần in đơn số bao nhiêu la chỉ cần chọn số đó là vẫn in được đúng theo mẫu của Nhà nước.Chính vì vậy mà Ndu mới kêu bạn nên gửi file sơ bộ.

Hì, tôi nhắc bạn hay là bài của bạn được các anh ptm0412,Ndu,Siuwtom ... toàn những vị nội công thâm hậu nhất GPE giúp bạn đấy. Thế nên các ý kiến các vị ấy bạn nên xem xét lại để vận dụng sẽ hiệu quả hơn. Mặt khác, nếu bạn vẫn làm thế này thì tôi biết Ndu còn có chiêu viết Class Module cho hàng lô điều khiển cùng loại thế này chỉ vài đoạn code ngắn bạn thay cho cả đống Code sử lý sự kiện cho từng Control đấy.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom