Hỏi về Data validation -> không cho trùng dữ liệu (9 người xem)

Liên hệ QC

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

Ăn gian edit bài sau khi có trả lời nha! Phạm luật chơi là phạt nặng à nha!

Có thêm tình trạng 2 là mất thẻ ở đâu ra? Hình như chỉ có tình trạng 2 là không còn sử dụng.
Cứ cho là có đi, thì sửa code bác Cò 1 chút, thêm vào list cho phép con số 2, và nếu là 2 thì không cho nhập kí rì hết.

Ngoài ra làm cảnh báo luôn đây.
Món này mình kém lắm,
Bác Ptm 0412, pác có thể nói rõ hơn quy trình viết code này không,
Mình không rõ các câu thông báo này, code của nó được viết ở đâu cả,
Thank pác!
 
Các câu cảnh báo nằm trong name.
Quy trình viết code à, code đó của Bác Cò, tôi chỉ thêm tí mắm muối. Có lẽ Bác ấy (và cả tôi) record macro và sửa chút đỉnh và đặt điều kiện theo ý mình.
 
Lần chỉnh sửa cuối:
Món này mình kém lắm,
Bác Ptm 0412, pác có thể nói rõ hơn quy trình viết code này không,
Mình không rõ các câu thông báo này, code của nó được viết ở đâu cả,
Thank pác!

Các câu cảnh báo nằm trong name.
Quy trình viết code à, code đó của Bác Cò, tôi chỉ thêm tí mắm muối. Có lẽ Bác ấy (và cả tôi) record macro và sửa chút đỉnh và đặt điều kiện theo ý mình.

Hic hic, viết code mà người dùng không biết gì về nó càng thảm hại hơn, code là cố định địa chỉ cells, còn nếu làm mà không code có thể copy sao chép vẫn hiểu. Mình cố muốn làm trên Excel cho người chưa biết VBA, nhưng chưa đáp ứng được yêu cầu.

Thầy Mỹ làm trên Excel giúp bạn ấy đi, code này mà ứng dụng trên bảng biểu của bạn ấy là bó tay.

@: ba.ho_eis: Bạn cũng nên gửi File thật của bạn lên đi sẽ dễ dàng giúp cho bạn!
 
Hic hic, viết code mà người dùng không biết gì về nó càng thảm hại hơn, code là cố định địa chỉ cells, còn nếu làm mà không code có thể copy sao chép vẫn hiểu. Mình cố muốn làm trên Excel cho người chưa biết VBA, nhưng chưa đáp ứng được yêu cầu.

@: ba.ho_eis: Bạn cũng nên gửi File thật của bạn lên đi sẽ dễ dàng giúp cho bạn!
Sao lại coi thường bạn mình đến thế? Người ta khi áp dụng sẽ phải thay đổi cho phù hợp, không thay đổi được sẽ hỏi tiếp chứ có sao đâu?

Thầy Mỹ làm trên Excel giúp bạn ấy đi, code này mà ứng dụng trên bảng biểu của bạn ấy là bó tay.

Đã bó tay thì công thức cũng sẽ bó tay!
Viết code hay công thức gì cũng vậy, đâu bao giờ copy 100% vào là xài được ngay? Cố gắng lắm thì cũng là dùng 1 Name động áp dụng dự phòng cho dữ liệu nhập thêm vào, người dùng cũng phải vận dụng lại cho dữ liệu thực. Nhưng tin chắc là bạn mình không tệ như Learning nói, trừ phi Learning đang khích tướng để người khác làm cho Learning xem.

Tôi thì không bị khích tướng đâu, nhưng cũng post cách làm lên đây, coi như khỏi thưởng khỏi phạt.

1. Về VBA: Dùng 1 Name động co dãn 2 chiều, sẽ không phải sửa code cho dữ liệu thực, nhưng sẽ phải sửa Name cho phù hợp dữ liệu thực. Name trong file là:
=OFFSET(ValiVBA!$D$5;0;0;COUNTA(ValiVBA!$A$5:$A$1000);COUNTA(ValiVBA!$D$4:$IV$4))

2. Về Validation không dùng VBA:

Vẫn phải sửa tham chiếu trong công thức dùng làm list cho Validation (A1:B2) và công thức chọn list của validation. Công thức đó là:

=IF(HLOOKUP(3;$D4:D4;1;1)=0;$A$1:$A$2;IF(HLOOKUP(3;$D4:D4;1;1)=1;$B$1:$B$2;" "))
 

File đính kèm

Lần chỉnh sửa cuối:
Sao lại coi thường bạn mình đến thế? Người ta khi áp dụng sẽ phải thay đổi cho phù hợp, không thay đổi được sẽ hỏi tiếp chứ có sao đâu?



Đã bó tay thì công thức cũng sẽ bó tay!
Viết code hay công thức gì cũng vậy, đâu bao giờ copy 100% vào là xài được ngay? Cố gắng lắm thì cũng là dùng 1 Name động áp dụng dự phòng cho dữ liệu nhập thêm vào, người dùng cũng phải vận dụng lại cho dữ liệu thực. Nhưng tin chắc là bạn mình không tệ như Learning nói, trừ phi Learning đang khích tướng để người khác làm cho Learning xem.

Tôi thì không bị khích tướng đâu, nhưng cũng post cách làm lên đây, coi như khỏi thưởng khỏi phạt.

1. Về VBA: Dùng 1 Name động co dãn 2 chiều, sẽ không phải sửa code cho dữ liệu thực, nhưng sẽ phải sửa Name cho phù hợp dữ liệu thực. Name trong file là:
=OFFSET(ValiVBA!$D$5;0;0;COUNTA(ValiVBA!$A$5:$A$1000);COUNTA(ValiVBA!$D$4:$IV$4))

2. Về Validation không dùng VBA:

Vẫn phải sửa tham chiếu trong công thức dùng làm list cho Validation (A1:B2) và công thức chọn list của validation. Công thức đó là:

=IF(HLOOKUP(3;$D4:D4;1;1)=0;$A$1:$A$2;IF(HLOOKUP(3;$D4:D4;1;1)=1;$B$1:$B$2;" "))
Hjx,.. Pác ptm0412 thật nhiệt tình không như bạn Learning_Excel chỉ toàn nói thôi không hè.
Giờ em muốn mở rộng thêm,
Pác ptm0412 & Learning_Excel xem giúp em với.
Em có đính kèm file.
Thanks các pác!
 

File đính kèm

Hjx,.. Pác ptm0412 thật nhiệt tình không như bạn Learning_Excel chỉ toàn nói thôi không hè.
Giờ em muốn mở rộng thêm,
Pác ptm0412 & Learning_Excel xem giúp em với.
Em có đính kèm file.
Thanks các pác!

Ái chà, hình như bạn là người đang cần giúp đỡ thì phải, mình hỏi nhiều như vậy cốt để biết rõ chi tiết bạn cần làm là gì để có hướng giúp bạn tốt hơn thôi.
Nếu như làm theo File của bạn thì có nhiều điều bất cập. Lấy ví dụ, nếu người thuê sách trả sách ngay trong ngày thì bạn sẽ xử sự sao đây? Vài trăm thẻ cũng không sao, tạm là thủ công được đi, nếu hàng ngàn, hàng vạn cuốn sách bạn sẽ xử lý như thế nào nhỉ? Còn nữa, 1 bộ truyện có nhiều cuốn, nếu họ mượn trọn bộ thì không nói gì, mượn vài cuốn trong bộ truyện đó không biết phải sử dụng bao nhiêu thẻ nhỉ?

Tôi đang định viết 1 chương trình cho bạn, không biết bạn có hứng thú không nhỉ? (lại nói nữa đó, chưa thấy làm)
 
LearningExcel đã viết:
Xin lỗi, Mình có một thắc mắc nho nhỏ, Bạn có biết Code của Thầy PTM nằm ở đâu không?
LearningExcel đã viết:
Hic hic, viết code mà người dùng không biết gì về nó càng thảm hại hơn,
Tôi đang định viết 1 chương trình cho bạn, không biết bạn có hứng thú không nhỉ?
Mình cũng có 1 thắc mắc nho nhỏ: Learning định viết chương trình bằng VBA hay công thức vậy?
 
Mình cũng có 1 thắc mắc nho nhỏ: Learning định viết chương trình bằng VBA hay công thức vậy?

Heheheh, không dám "múa rìu qua mắt thợ" nhưng chương trình dành cho bạn ấy hoàn toàn bằng VBA, chẳng có công thức nào ở đây! Đầu nhập sách, cho thuê sách, trả sách, ..., đều nhập bằng UserForm, không phải nhọc công gõ từng cái chi cho mệt! Sáng giờ lu bu công việc quá không làm được, giờ sẽ bắt tay làm nếu bạn ấy đồng tình.

Hay em cứ làm đi rồi gửi lên luôn, nhờ các Thầy kiểm tra giúp lỗi? Lần đầu tiên em dùng chính textbox thông báo nhập thiếu, nhập sai mà không phải dùng Msgbox để thông báo! Vừa đỡ tốn thời gian bấm OK, vừa trực quan!
 
Ái chà, hình như bạn là người đang cần giúp đỡ thì phải, mình hỏi nhiều như vậy cốt để biết rõ chi tiết bạn cần làm là gì để có hướng giúp bạn tốt hơn thôi.
Nếu như làm theo File của bạn thì có nhiều điều bất cập. Lấy ví dụ, nếu người thuê sách trả sách ngay trong ngày thì bạn sẽ xử sự sao đây? Vài trăm thẻ cũng không sao, tạm là thủ công được đi, nếu hàng ngàn, hàng vạn cuốn sách bạn sẽ xử lý như thế nào nhỉ? Còn nữa, 1 bộ truyện có nhiều cuốn, nếu họ mượn trọn bộ thì không nói gì, mượn vài cuốn trong bộ truyện đó không biết phải sử dụng bao nhiêu thẻ nhỉ?

Tôi đang định viết 1 chương trình cho bạn, không biết bạn có hứng thú không nhỉ? (lại nói nữa đó, chưa thấy làm)
Hjx, em cũng định đề cập đến vấn đề sách mượn & trả 1 ngày nhưng sợ rắc rối, pác giải quyết được vấn đề này nữa thì tôt quá,
Với lại yêu cầu này chỉ vậy thôi Pác Learning_Excel ơi, ko nhiều như pác tưởng đâu, ko cần phải theo dõi yêu cầu 1 bộ có nhiều quyển sách đâu,
Cái em cần là làm sao theo dõi được quá trình bắt đầu phát hành - mượn - trả - hỏng của từng quyển sách(vì mỗi quyển có 1 mã riêng rồi).
Các pác xem giúp em,
Chúc cả nhả vui vẻ!
 
Heheheh, không dám "múa rìu qua mắt thợ" nhưng chương trình dành cho bạn ấy hoàn toàn bằng VBA, chẳng có công thức nào ở đây!
Không sợ chuyện "viết code mà người dùng không biết gì về nó càng thảm hại hơn" nữa à?
baho đã viết:
Hjx, em cũng định đề cập đến vấn đề sách mượn & trả 1 ngày nhưng sợ rắc rối, pác giải quyết được vấn đề này nữa thì tôt quá,
Với file bài trên, hoặc code hoặc không code, xoá gõ lại đều được. Thí dụ cho mượn, gõ 1. Trả trong ngày không thể gõ 0 đè lên 1, thì xoá phứt số 1 đi, trả về tình trạng đã trả chưa ai mượn của ngày trước đó. File này chỉ theo dõi tình trạng, miễn tình trạng đúng thì thôi, đâu có tính tiền thuê sách đâu mà lo.
Còn 1 cuốn sách ngày 8/1 mua về, khi mua về rồi mới nhập thêm 1 mã, thêm tình trạng 0 vô cột tình trạng ban đầu. Sau đó mới bắt đầu cho thuê. Ai điên mà quay về 6/1 (ngày trong quá khứ) xách đi cho thuê?
 
Lần chỉnh sửa cuối:
Lẽ ra đã hoàn tất chiều qua, nhưng vì mãi vui chơi với Anh NGHĨA VioletDylan nên chưa kịp hoàn tất. Đến giờ, tôi đã viết xong chương trình Quản lý Thư viện sách này, không hẳn là dành riêng cho bạn ba.ho_eis, mà cho tất cả mọi người còn thiếu nhiều kinh nghiệm như tôi cùng nhau nghiên cứu thêm về VBA; đặc biệt là tôi muốn chứng minh rằng, qua chương trình này tôi đã học hỏi, rút ra những kinh nghiệm quý báu từ các Thầy, các Đàn Anh đi trước ở diễn đàn giaiphapexcel.com này rất nhiều. Nhờ diễn đàn mà ngay từ đầu "nhập gia", kiến thức VBA của tôi bắt đầu từ con số 0, cho đến nay tôi có thể làm được một vài chương trình hữu ích cho riêng mình. Tôi cảm thấy mình thật hạnh phúc!

Giới thiệu đôi nét về Chương trình này:

Chương trình có các Form như:

MENU FORM:

attachment.php


Với Form Menu này bạn có thể dễ dàng lựa chọn thao tác của bạn.


FORM MƯỢN SÁCH:

attachment.php


Mã sách lấy từ Thư viện, đã lọc những sách đã Cho Mượn và sách Hư Hỏng, chỉ còn lại Sách Mới và Sách chưa cho mượn, sắp xếp theo Sách nhập mới cho đến sách nhập cũ. (Khi nhập sẽ không cho nhập Mã sách khác mã thư viện)

Mã khách hàng được Đề nghị là <Mã sách_ddmmyy_HH:MM>, như vậy sẽ tránh được trùng mã số khách nhằm bảo đảm truy xuất về sau. Nhưng người dùng có thể dùng mã số khác, sẽ thông báo nếu mã đó đã tồn tại trong CSDL.

Ngày mượn, ngày nhập, ngày trả nói chung khi nhấp vào Textbox ngày sẽ hiện một Form lịch, mặc định là ngày hiện hành, chỉ cần click chuột vào ngày nào cần chọn là có ngay trên Textbox không cần phải gõ ngày tháng.

Sau khi điền đầy đủ thông tin và click Nhập, sẽ được ghi vào Sheet Quản lý Sách, đồng thời sẽ ghi vào tình trạng sách đó CHO MƯỢN trong sheet THƯ VIỆN.


FORM TRẢ SÁCH:

attachment.php


Khi khách hàng trả sách, chọn đúng mã khách hàng sẽ được thông tin về sách đã mượn.

Nhập số ngày trả sẽ cho ra giá trị số ngày. Sẽ hiện thông báo NGÀY NHẬP KHÔNG HỢP LÝ khi chọn ngày trước cả ngày mượn sách.

Cách tính số ngày = ngày trả + 1 - ngày mượn.

Cũng như Form Mượn Sách, sau khi nhập xong sẽ nhập vào Sheet Quản lý Sách ngày trả và xóa chữ CHO MƯỢN tại Sheet Thư Viện.


FORM NHẬP SÁCH MỚI:

attachment.php


Nhập sách mới vào THƯ VIỆN, Mã Sách được đề nghị theo số thứ tự kế tiếp liền kề trên nó một số n+1, nhưng cũng có thể đổi mã sách tùy thích và nếu như có trùng mã số sẽ được nhận thông báo.

Sau khi nhập vào, Mặc định sẽ ghi vào THƯ VIỆN là SÁCH MỚI.

FORM GHI NHẬN TÌNH TRẠNG HƯ HỎNG CỦA SÁCH

attachment.php


Nếu có sách hư hỏng, thì cập nhật tại đây, tình trạng sách có 2 giá trị: Hư hỏng và Sách mới (chắc có lẽ sẽ không dùng để ghi Sách mới vì sau khi Cập nhật sách mới đã được nhập vào trước đó rồi).



-----------------------------------------------------

Trong sheet THƯ VIỆN sẽ dễ dàng nhận ra sách nào là sách hư hỏng, cho mượn ... Dùng Conditional Formatting để cho loại sách Hư Hỏng mà đỏ, sách Cho Mượn màu xanh, còn lại Sách mới, sách chưa thuê (không ghi tình trạng) màu đen.

------------------------------------------
Mặc dù đã rất cố gắng nhưng vẫn không tránh khỏi thiếu sót và lỗi, kính mong các Thầy, đàn Anh và các bạn giúp đỡ, hướng dẫn, chỉ giáo thêm.

Chân thành cám ơn!
 

File đính kèm

  • Picture1.jpg
    Picture1.jpg
    20 KB · Đọc: 116
  • Picture2.jpg
    Picture2.jpg
    18.1 KB · Đọc: 111
  • Picture3.jpg
    Picture3.jpg
    18.1 KB · Đọc: 113
  • Picture4.jpg
    Picture4.jpg
    20.5 KB · Đọc: 111
  • Picture5.jpg
    Picture5.jpg
    19.4 KB · Đọc: 111
Thật đáng ghi nhận Learning_Excel,
Anh ấy đã nghiên cứu rất kỳ công. Hy vọng đây là ứng dụng sẽ giúp ích cho mọi người.
Chúc GPEC mình ngày càng nhiều thêm những đóng góp của mọi người!
 
Thật đáng ghi nhận Learning_Excel,
Anh ấy đã nghiên cứu rất kỳ công. Hy vọng đây là ứng dụng sẽ giúp ích cho mọi người.
Chúc GPEC mình ngày càng nhiều thêm những đóng góp của mọi người!

Đọc cái bài này của bạn tôi cứ thấy mắc cười, nhất là câu "Thật đáng ghi nhận...". Bài mình gửi mà bạn không nhận ra điều gì là quan trọng sao? Ngoài mấy cái hình ra thì chẳng thể hiện được gì cả!

Sau đây là File đính kèm, hy vọng bạn sẽ hài lòng!

Với mong mỏi được hoàn thiện thêm về code, mong các Thầy kiểm tra lỗi và bổ sung những phần còn khiếm khuyết cho File này. Xin chân thành cảm ơn!

<<VBA Pass: minhthien321>>

=========================================================================
ĐỂ TẢI FILE PHÙ HỢP VỚI EXCEL 2003, CLICK VÀO ĐƯỜNG DẪN SAU:
http://www.giaiphapexcel.com/forum/...-Validation-như-thế-nào&p=261948#post261948
 
Lần chỉnh sửa cuối:
File này có một lỗi nghiêm trọng mà không thể bẩy lỗi, buộc lòng phải dùng Properties để khắc phục, không biết các Thầy có nhận ra không ta?
 
Đọc cái bài này của bạn tôi cứ thấy mắc cười, nhất là câu "Thật đáng ghi nhận...". Bài mình gửi mà bạn không nhận ra điều gì là quan trọng sao? Ngoài mấy cái hình ra thì chẳng thể hiện được gì cả!

Sau đây là File đính kèm, hy vọng bạn sẽ hài lòng!

Với mong mỏi được hoàn thiện thêm về code, mong các Thầy kiểm tra lỗi và bổ sung những phần còn khiếm khuyết cho File này. Xin chân thành cảm ơn!

<<VBA Pass: minhthien321>>
Đừng qua nghệu mạn như vậy chứ, tôi biết là bạn đang trong quá trình nghiên cứu nên ko đề cập thôi,
Tôi chỉ nhận xét về hình thức bên ngoài thôi, nhưng đó cũng là quá trình nghiên cứu của Learning_Excel chúng ta nên ghi nhận.
Thanks Learning_Excel rất nhiều, tôi se tìm hiểu sâu hơn về vấn đề này, chúc bạn thành công!
 
File này có một lỗi nghiêm trọng mà không thể bẩy lỗi, buộc lòng phải dùng Properties để khắc phục, không biết các Thầy có nhận ra không ta?

Thứ nhất là file có pass mà đòi góp ý.

Thứ 2, là file mở startup form lên là ẩn application. Mới nhấn nút mở 1 form, chỉ xem chưa làm gì, nhấn nút thoát, báo lỗi đòi debug. Có pass mà debug cái nỗi gì, nên cancel, nhấn End.
Thế là đi luôn. Lại phải vào task manager tắt excel.

Do đó, hai loại file này, không bao giờ muốn mở lần 2.
 
Lần chỉnh sửa cuối:
Tôi đánh giá cao sự nhiệt tình của Learning_Excel, chỉ một câu hỏi thôi mà bạn đã làm cả một chương trình, hiếm khi ai làm như bạn.

Tôi đã kiểm tra lỗi trên nhiều máy tính, máy bàn có, laptop có, kiểm tra tại cơ quan có, ở nhà có, vẫn không phát hiện lỗi => chưa thấy lỗi do code.

Vậy là lỗi gì? Tôi vô tình mở Form và click vào màn hình máy tính (ngoài Form) và điều khiển được bên ngoài, vì thế, bạn đang sử dụng Properties cho Form tại mục ShowModal=False, tôi lại chọn UsfMenu, ShowModal=True, click vào FORM TRẢ SÁCH, rồi thoát, rồi chọn lại Form đó, hiện tượng là Form này ngưng hoạt động, treo Excel. Như vậy, chỉ có chọn ShowModal=False mới không bị lỗi này. Tại sao như vậy thì chỉ có các cao thủ mới có thể giải thích nổi!

To THẦY PTM0412:

LỖI DO NGƯỜI VIẾT LÀ CHUYỆN RẤT BÌNH THƯỜNG, NGƯỜI VIẾT CHƯƠNG TRÌNH THƯỜNG NÓI "CHƯƠNG TRÌNH KHÔNG CÓ LỖI LÀ CHƯƠNG TRÌNH CHẾT". CÓ THỂ LÀ LỖI LÀ DO SOLUTION, CŨNG CÓ THỂ LÀ LỖI DO HỆ ĐIỀU HÀNH. THẦY PTM0412 CÓ CÒN NHỚ NGAY NGÀY SINH NHẬT GIẢI PHÁP EXCEL LẦN THỨ 4 VỪA QUA KHÔNG? CHƯƠNG TRÌNH "TRÚC XINH" CỦA THẦY BỊ LỖI MÀ KHÔNG THỂ KHẮC PHỤC ĐƯỢC, LỖI GÂY RA DO THẦY KIỂM TRA TRÊN WINDOW XP, CÒN THỰC HIỆN TRÊN WINDOW 7 ĐÓ, CHẮC THẦY KHÔNG QUÊN.

THÔI THÌ HÃY ĐỘNG VIÊN, KHÍCH LỆ NHỮNG THÀNH VIÊN MỚI ĐANG CỐ GẮNG HỌC TẬP THÔNG QUA TRANG WEB BỔ ÍCH NÀY THẦY NHÉ!

TRÂN TRỌNG.
 
To THẦY PTM0412:

LỖI DO NGƯỜI VIẾT LÀ CHUYỆN RẤT BÌNH THƯỜNG, NGƯỜI VIẾT CHƯƠNG TRÌNH THƯỜNG NÓI "CHƯƠNG TRÌNH KHÔNG CÓ LỖI LÀ CHƯƠNG TRÌNH CHẾT". CÓ THỂ LÀ LỖI LÀ DO SOLUTION, CŨNG CÓ THỂ LÀ LỖI DO HỆ ĐIỀU HÀNH. THẦY PTM0412 CÓ CÒN NHỚ NGAY NGÀY SINH NHẬT GIẢI PHÁP EXCEL LẦN THỨ 4 VỪA QUA KHÔNG? CHƯƠNG TRÌNH "TRÚC XINH" CỦA THẦY BỊ LỖI MÀ KHÔNG THỂ KHẮC PHỤC ĐƯỢC, LỖI GÂY RA DO THẦY KIỂM TRA TRÊN WINDOW XP, CÒN THỰC HIỆN TRÊN WINDOW 7 ĐÓ, CHẮC THẦY KHÔNG QUÊN.
THÔI THÌ HÃY ĐỘNG VIÊN, KHÍCH LỆ NHỮNG THÀNH VIÊN MỚI ĐANG CỐ GẮNG HỌC TẬP THÔNG QUA TRANG WEB BỔ ÍCH NÀY THẦY NHÉ!

TRÂN TRỌNG.

Thứ nhất:

File trúc xanh tôi đã test cả trăm lần, nhờ BNTT test cả chục lần, sau đó gởi cho Tigon, nguyenhuong, tungnguyen test mấy ngày, trước khi sử dụng chính thức. Trong đó BNTT và Tungnguyen xài Win7 mà không phát hiện lỗi. Hôm sau do lý gì đó chưa tìm ra, bị lỗi ngay trên máy mà mấy ngày trước tung nguyen test không sao. File này hoàn toàn không lỗi, và không liên quan gì đến Win7 hay Win XP. Tôi cũng đã test cả trên Excel 2003, 2007 và 2010.

Tại sao tôi dám khẳng định? Vì tôi đã viết cả tháng trời, vừa viết vừa nhờ mọi người góp ý, sửa chữa, và test đến khi hoàn thiện. Thực tế là năm ngoái sử dụng thành công, năm nay miền trung và miền bắc cũng sử dụng. Vừa rồi thêm 1 lần cadafi sử dụng thành công trong 1 cuộc hội thảo.

Thứ 2:

Cái chính ở đây là gì? Khi tôi nhờ mọi người góp ý và sửa chữa tôi đã để code mở. Cho đến giờ các file tôi gởi đi khắp nơi cũng đều không khoá VBA, không khoá cả sheet. Nếu lúc đó tôi khoá VBA và nhờ, tôi đã bị mắng thậm tệ rồi cuối cùng chả có trúc xanh trúc đỏ gì ráo.

Còn file của Learning Excel, chưa biết hay dở thế nào, vừa nhấn nút "thoát" trên form "Nhập cho thuê" nó liền đòi debug. Nếu VBA không khoá, nút debug không bị vô hiệu, tôi đã nhấn vào để xem code, sửa code, hoặc góp ý sửa. Vậy thì tại ai? Tôi muốn nhờ người ta sửa vòi nước trong nhà, tôi phải mở cửa cho người ta vào. Bảo người ta đứng ngoài đường mà sửa thì sửa cái quái gì?

Thứ 3:

Về cái vụ ẩn Application, rồi khi file bị lỗi thoát ra không phục hồi lại, tôi bị nhiều rồi, ghét lắm rồi. Không chỉ mình file của L.E. không đâu. Ghét cái phải vào Task Manager để tắt Excel ấy. Nếu L.E. còn muốn tôi xem, (cũng không chắc chuyện này lắm), thì phải gỡ khoá VBA và bỏ vụ dấu Application, bỏ cả vụ minimize toàn bộ các cửa sổ khác của tôi đang làm việc nữa. Cái file cũ lúc nãytôi nói là không mở lần 2, thực sự tôi đã mở lần 2, khi nhấn nút "xem sheet gì gì đó", nó bị như hình dưới đây. Mất 15 phút để tắt tất cả những cái đó rồi mở lên lại: Ở đâu ra 6 cái excel, 5 cái firefox, 24 cái Yahoo, 3 cái Snagit lớn, 12 SnagIt nhỏ, 17 cái hkcmd, 9 cái window explorer, ... và hàng mấy chục cái không tên?
Tôi độ chừng rằng khi ẩn Application, L.E. đã dùng lệnh của Windows thực thi cho tất cả các chương trình đang chạy của cả Windows. Rồi khi cho hiện lại, không chỉ cho hiện Active workbook, L.E. cho hiện tất cả lên, kể cả những chương trình hệ thống chạy ngầm trong Windows. Cái vụ can thiệp vào hệ thống kiểu này, tôi lại càng ghét thậm tệ hơn nữa.

Thế thì, không đời nào tôi mở lần 3, và tôi xoá vĩnh viễn ra khỏi ổ đĩa của tôi rồi.

Thứ 4:

Về phía Minhthien, thôi đừng làm cái việc kẻ tung người hứng nữa. Kêu L.E. ra nói cho đúng người cần nói.

Loi.jpg
 
Lần chỉnh sửa cuối:
Theo những lỗi mà PTM0412 đã nói, thì tôi kiểm tra lại và ghi nhận sự việc như sau:

1. Hiện tượng khi mở File của tôi bị một loạt các Icon thu nhỏ (như hình mà PTM0412 post) không xảy ra nếu như trước đó chưa mở sẳn một File Excel nào, và tôi xài Win7 & Excel 2007 dù File Excel nào đó mở trước cũng không xảy ra. Tôi test lại trên WinXP và Excel 2003 thì bị hiện tượng đó.

Nguyên nhân: CreateObject("Shell.Application").MinimizeAll (dòng lệnh cho tất cả các cửa sổ thu nhỏ), có thể rằng nếu File Excel của tôi mở và đang tồn tại File Excel nào đó thì cùng thuộc Shell.Application nên "đụng" nhau chăng?

Khắc phục: Thay dòng lệnh trên bằng lệnh Application.WindowState = xlMinimized, chỉ cho File Excel thu nhỏ, không can thiệp bên ngoài.


2. Hiện tượng mở 1 Form nào đó bị báo lỗi, là do dùng AutoFilter.

Nguyên nhân: Tôi đã dùng câu lệnh: ShowAllData (dòng lệnh cho hiện tất cả dữ liệu đã bị Filter), câu lệnh này chỉ dùng được đối với Excel 2007 trở lên, không thể dùng cho XL2003.

Khắc phục: Bỏ dòng lệnh đó.

==============================================================================

RÚT KINH NGHIỆM:

KHI THỰC HIỆN MỘT CHƯƠNG TRÌNH NÀO ĐÓ, PHẢI CHỌN CODE PHÙ HỢP VỚI VERSION NHỎ HƠN.

==============================================================================

ĐÃ SỬA LẠI CODE VÀ GỬI LẠI FILE, ĐÃ GỠ BỎ PASSWORD (MẶC DÙ TRƯỚC ĐÓ ĐÃ CÓ ĐƯA RA PASSWORD), GỠ BỎ APPLICATION.VISIBLE THEO Ý CỦA PTM0412.


 

File đính kèm

Lần chỉnh sửa cuối:
Nói lại cho rõ là:
- Khi mở file đó lên, là file Excel duy nhất đang mở.
- Firefox chỉ có 1 cửa sổ
- Yahoo Messenger đang online, nhưng không có cửa sổ chat nào.
- Ngoài ra không mở thêm cái gì khác.

1. Khi mở file, tất cả đều Minimize, cũng không có gì đáng nói
2. Khi nhấn nút mở sheet, cái câu lệnh quái quỷ gì không biết, có lẽ là maximize, nó Maximize cả Unikey, cả SnagIt, cả Norton Antivirus, Norton Goback, ... Nó Maximize cả Firefox update, Firefox Add-on, YM Auto update, YM toolbar, YM các loại đang chạy ngầm, Google Update các loại, Excel các loại đang chạy ngầm (các User form đã mở và chưa mở), ... Không những thế nó Maximize tất cả các file chương trình của hệ thống đang chạy ngầm, nên mới có những cái không có windows caption như hình.

Nếu quả thực là dùng CreateObject("Shell.Application").MinimizeAll, thì đó là sự can đảm dám dùng lệnh hệ thống can thiệp vào mọi chương trình đang chạy. May là chỉ Minimize và Maximize, Chứ nếu QuitAll thì thành chuyện lớn, chả biết hậu quả thế nào luôn.

Chuyện dùng lệnh hệ thống là cả chuyện dài, cỡ ndu cũng chỉ còn đang nghiên cứu chưa dùng nhiều, cùng lắm là để mở file (word, txt, nhạc, âm thanh, video...), để browse tìm vả liệt kê file trong folder, . . . chứ chưa thấy dùng lệnh hệ thống đánh tất cả các chương trình đang chạy bao giờ.

Ngay cả tôi, về Shell.Application do chưa tìm hiểu kỹ nên cũng không dám vọc vào. Do rằng tôi chỉ thuộc loại i tờ dạng chỉ biết sin 180 độ bằng bao nhiêu, chỉ biết tính cạnh góc vuông, chỉ học thuộc DatedIf chỉ lấy phần nguyên không lấy số lẻ, ... nên không dám với cao như thế này.

Cái file Trúc xanh của tôi cũng chỉ dám tự gọi là 1 game ứng dụng VBA Excel, cũng chưa dám gọi là Chương trình, Topic này vượt quá khỏi tầm với của tôi mất rồi. Thôi thì tôi quay về với căn bản For - next & vòng lặp cho xong. Xin kiếu topic này.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom