anhtuan1066 đã viết:
Xem ý tưởng tại Sheet1 và Sheet2... Tôi nghĩ nó khá đơn giản và dể hiểu đấy!
Oh, cách atuan khá hay NHƯNG theo atuan thì hóa ra là chọn đúng thì chạy - khác hướng của bạn hoavotuyet1980 rùi - bạn ý mún là thay đổi trình tự chạy của 1 tổ hợp các sub VBA (hoavotuyen1980 xác nhận đúng/không điều này nhé, tks)
SA_DQ đã viết:
Bạn thử với macro này xem sao?
Bác SA_DQ ah, hình như code của bạn lại trở lại một serri IF ELSE rùi - mà hoavotuyet1980 lại đang sơ serri này rùi???
hoavotuyet1980 đã viết:
Tại tôi có một số công thức VBA ở đây. Theo tôi nghĩ có thể để được sắp xếp theo một trình tự nào đó mà không phải viết quá nhiều trình tự chạy cho mỗi tình huống sử lý. Như lệnh 1 chạy a, b, c; lệnh 2 chạy b, a, c, d; lệnh 3 chạy a, c, b, d..v.v.//
Mà chỉ muốn loại bỏ những lệnh thừa khi gặp lỗi thôi. Như chạy c, a, g là vô lý vì f chưa được chạy. Vì tình huống xử lý phải cực nhọc chọn If rồi lại IFElse..IFElse... hay Case...Case... vô số lần (khoảng 5!, 6!) là vất vả rồi. Sao không để người dùng tự quyết định lấy nhỉ... Mình cần cho họ biết cái nào sai thôi.
Sẳn gặp thằng Click lên Cell nên thấy tiện cho công việc này vì nút lệnh đâu có ghép được lệnh chứ. Mà không thể viết code chỉ để xử lý tình huống từng cái đúng không?
Vậy ta vẫn xử lý tình huống nhưng chỉ chọn những cái sai thôi.
một ý tưởng - mới đọc sơ, thấy khá hay (khá khen cho 8X); góp ý mấy điểm thế này nhé:
- bạn ah, việc viết CT với ý tưởng chia thành SUB/ FUNCTION (chương trình con / hàm) là ý tưởng rút ngắn các đoạn code và có thể sử dụng đi sử dụng lại nhiều lần, cũng như trình tự thực hiện chúng rùi
- thứ 2 bạn nói là "ta vẫn xử lý tình huống nhưng chỉ chọn những cái sai" vậy phải cân nhắc là tổ hợp sai phải nhỏ hơn tổ hợp đúng thì mới nên cân nhắc nếu k thì giống như: ta trộn thóc với gạo -> nhặt riêng ra ta phải cân nhắc cái nào ít hơn mới nên chọn (thóc / gạo)
- Có vài ý thế này góp ý tưởng của bạn:
+ bạn muốn xét được trình tự và tổ hợp chọn --> bạn phải bắt được cả quá trình người SD chọn chứ k chỉ bắt target 1 ô như vậy -> vì thế theo tôi thì bạn nên có điều kiện : khi nào thì kết thúc chọn (Vd tổ hợp phải đủ 4 / hay có 1 ô để bấm tín hiệu
(cờ) chọn xong rùi thực hiện CODE đi)
+ không biết bạn có biết các hằng của VB k nhỉ? thường nó được đặt là có giá trị số nguyên nhưng các số nguyên này cách quãng nhau --> NSD chỉ cần cho biết 1 số nguyên tổng --> tự VB biết là tổ hợp của các hằng nào được chọn:
ví dụ thô thiển (xin lỗi các women nhé) sau giúp bạn hiếu nhé:
"Chọn 1 cô gái có khả năng chọn tổ hợp 4 tiêu chuẩn đặt ra : Xinh đẹp, Năng động, Hiền thảo, Nội trợ
Người chọn theo điền form ký hiệu NSD (chỉ là VD thôi nhé) có thể đưa ra chọn các tổ hợp tiêu chuẩn khác nhau có thể 1,2,3 hay cả 4 tiêu chuẩn --> vậy làm sao để biết ng ta chọn tổ hợp nào qua chỉ 1 con số???"
Cách giải quyết thế này
đặt "Xinh đẹp" - tương ứng 1 ; "Năng động" -2 ; "Hiền thảo" -4; "Nội trợ" - 8
NSD có thể chọn trong khoản từ 1,2,..,15
KHI ĐÓ, ta có
- nếu NSD chọn
10 chẳng hạn -> 10=8+2 -> chọn 2 tiêu chuẩn:
Năng động và Nội trợ
- nếu NSD chọn
5 chẳng hạn -> 5=1+4 -> chọn 2 tiêu chuẩn: Năng động và Nội trợ
- nếu NSD chọn
15 chẳng hạn -> 15=1+2+4+8 -> chọn cả 4 tiêu chuẩn
- nếu NSD chọn
7 chẳng hạn -> 10=1+2+4 -> chọn 3 tiêu chuẩn: Xinh đẹp, Năng động và Nội trợ
...v.v
Chắc các bạn dễ hỉu vấn đề
--> bài của hoavotuyen1980 cũng nên đặt như thế cho tương ứng các ô --> dễ dàng phát ra tổ hợp