gameonly308
Thành viên hoạt động



- Tham gia
- 4/5/09
- Bài viết
- 197
- Được thích
- 10
Chào các bác, em muốn hỏi làm cách nào để khi em ở Sheet1 mà chuột không di chuyển thì sau 5s nó sẽ ẩn đi. Em cảm ơn ạ
Em làm 1 cái ứng dụng tự động tính toán theo thời gian, nên chỉ để màn hình đó và update hàm now() theo mỗi giây. Nên chuột cứ 1s nó lại quay tròn 1 tí. Vì thế e muốn ẩn nó đi ạ.(Xin nói trước là mình không biết làm đâu nha!)
Trong Excel làm chuyện này để làm gì vậy hở bạn?
Có hàm check move của mouse thì em nghĩ chắc cũng có hàm check idle của mouse. Bác nào đi qua biết bảo em với ạ!(Xin nói trước là mình không biết làm đâu nha!)
Trong Excel làm chuyện này để làm gì vậy hở bạn?
Bác có đoạn code đó, hay bài hướng dẫn nào ko cho em xin với ạ!Dùng cách API thôi bạn: GetCursorPos, ShowCursor. . . .
Ẩn cursor thì ok rồi bác, nhưng ý em muốn hỏi làm sao để so sánh khi cursor không di chuyển 5s ý ạBạn chịu khó google "getcursorpos vba excel" và "ShowCursor vba excel"
Khi cursor thay đổi thì nó update lại cả 2 giá trị X và Y ở now() và A,B ở now()+5s thì so sánh thế nào đc bác?GetCursorPos trước và sau 5s, so sánh các field .X và .Y giữa 2 lần, nếu không sai khác hay sai khác nhỏ thì coi như mouse không đụng đậy.
Thực ra là em dùng hàm tô Shape với mỗi 1s, dùng DoEvents sẽ không bị chuột xoay ah bác. Nhưng để chuột ẩn em nghĩ sẽ đẹp hơn vì chủ yếu màn hình dùng để tô Shape, ko cần click chuột nhiều ngoài yêu cầu đặc biệt.Bạn không muốn thấy con chuột xoay thì:
1. Thử thêm DoEvents vào các thủ tục (tất cả).
2. Dùng SetTimer (Hàm WinAPI) để gọi một hàm thực thi, và kết thúc thì sử dụng KillTimer để kết thúc tiến trình ở SetTimer thay thế cho OnTime trong VBA.
3. Bạn cũng có thể gọi một thủ tục lặp vô tận với một Waittime WinAPI cho đến khi gán 1 biến là False để thoát và thêm DoEvents vào các thủ tục.
không có DoEvents thì không thể làm được gì trừ khi Kết thúc tiến trình ứng dụng Excel.
Bạn lưu ý VBA chỉ hoạt động trên một luồng duy nhất, vì vậy bạn nên chạy code VB Script ngoài luồng kết hợp.
Để so sánh vị trí chuột, bạn chỉ cần tạo ba biến toàn cục XX, YY, kk để lưu lại X và Y, nếu sau 1 giây X = XX và Y = YX thì cho kk = kk + 1
nếu kk = 5 thì hide cursor, tiếp tục lưu lại vị trí XX = X, YY = Y. Nếu X <> XX hoặc Y <> YY thì Show cursor
Nếu bạn chỉ muốn không thấy chuột quay thì làm vầy.Em làm 1 cái ứng dụng tự động tính toán theo thời gian, nên chỉ để màn hình đó và update hàm now() theo mỗi giây. Nên chuột cứ 1s nó lại quay tròn 1 tí. Vì thế e muốn ẩn nó đi ạ.
Bài đã được tự động gộp:
Có hàm check move của mouse thì em nghĩ chắc cũng có hàm check idle của mouse. Bác nào đi qua biết bảo em với ạ!
Sub ABC()
Application.Cursor = xlNorthwestArrow
'...
Application.Wait Now + TimeSerial(0, 0, 2)
'...
Application.Cursor = xlDefault
End Sub
Nếu vậy thì Code phải 0% lỗi, hoặc bẫy lỗi để đi đến Show Cursor, hoặc Show Cursor HandleThực ra là em dùng hàm tô Shape với mỗi 1s, dùng DoEvents sẽ không bị chuột xoay ah bác. Nhưng để chuột ẩn em nghĩ sẽ đẹp hơn vì chủ yếu màn hình dùng để tô Shape, ko cần click chuột nhiều ngoài yêu cầu đặc biệt.
Em dùng bẫy lỗi On Error Resume Next trong trường hợp bật sheet khác ko phải sheet chứa object. Bác có thể viết code cho em tham khảo hàm ẩn chuột được k ạ, em mò mãi mà cái vòng lặp + 5s chưa viết đc ạ!Nếu vậy thì Code phải 0% lỗi, hoặc bẫy lỗi để đi đến Show Cursor, hoặc Show Cursor Handle
Dạ, khi di chuột thì sẽ show lại đó bác, khi nó đứng im thì ẩn, thì ng dùng di chuột thì nó hiện lại. Như ở windows ý bác!Hì hì, hide mouse cursor rồi thì trong điều kiện nào phải show lại bạn ? Chứ không lẽ hide quài sao ?![]()
Sub này gọi khi Open_Workbook hay gọi trước các sub khác hả bác?Nếu bạn chỉ muốn không thấy chuột quay thì làm vầy.
Mã:Sub ABC() Application.Cursor = xlNorthwestArrow '... Application.Wait Now + TimeSerial(0, 0, 2) '... Application.Cursor = xlDefault End Sub
Em dùng bẫy lỗi On Error Resume Next trong trường hợp bật sheet khác ko phải sheet chứa object. Bác có thể viết code cho em tham khảo hàm ẩn chuột được k ạ, em mò mãi mà cái vòng lặp + 5s chưa viết đc ạ!
Vâng em xin rút kn. Quả thật thì như code, em muốn viết được code khi mouse idle 5s thì cursor sẽ ẩn ạ.Gợi ý cho bạn để được sớm có code: Tiêu đề sai chữ Curso , dư chữ Mouse (Phần cứng, phụ kiện), và nằm không đúng phụ lục, và khi đăng bài mới, bạn hãy hỏi đầy đủ những gì mình muốn, thay vì hỏi đơn lẻ trong phần trả lời.
Bạn thêm 2 dòng đó vào đầu và cuối code của bạn thôi.Sub này gọi khi Open_Workbook hay gọi trước các sub khác hả bác?
Dạ, như em đọc hiểu thì với code update 1s, khi đến giây thứ 2 nó sẽ set cursor như cũ.Bạn thêm 2 dòng đó vào đầu và cuối code của bạn thôi.