[Xin Giúp Đỡ]Ẩn Mouse Curso sau 5s không di chuyển

Liên hệ QC

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 ạ
 
(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?
 
(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?
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:

(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 ạ!
 
Dùng cách API thôi bạn: GetCursorPos, ShowCursor. . . .
 
Bạn chịu khó google "getcursorpos vba excel" và "ShowCursor vba excel"
 
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.
 
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 = YY 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, kk = 0
 
Lần chỉnh sửa cuối:
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
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.
 
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 ạ!
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
 
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.
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
 
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
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 ạ!
 
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 ? ;)
 
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 ? ;)
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!
Bài đã được tự động gộp:

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
Sub này gọi khi Open_Workbook hay gọi trước các sub khác hả bác?
 
Lần chỉnh sửa cuối:
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 ạ!

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.
 
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.
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 ạ.
Bác xem hướng em với ạ!
 
Web KT
Back
Top Bottom