Tự động hiện form khi không có thao tác nào trên file (1 người xem)

Liên hệ QC

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

quoc nhat

Thành viên tiêu biểu
Tham gia
8/3/12
Bài viết
567
Được thích
43
Nghề nghiệp
cán bộ ngành y tế
Đầu năm mới xin chúc ban quản trị và các thành viên dồi dào sức khỏe, hạnh phúc, chúc GPE ngày càng phát triển hơn nữa.



Em có câu hỏi này muốn nhờ mọi người giúp:
Có Code nào mà khi ta không có thao tác nào trên File chừng 2 phút thì Form sẽ tự động được bật lên giống chức năng chờ của máy vi tính không ạ?
các anh chị giúp em với nhé
 

File đính kèm

Em có câu hỏi này muốn nhờ mọi người giúp:
Có Code nào mà khi ta không có thao tác nào trên File chừng 2 phút thì Form sẽ tự động được bật lên giống chức năng chờ của máy vi tính không ạ?
các anh chị giúp em với nhé
Bạn tham khảo File xem có được không nhé
 

File đính kèm

Upvote 0
được rồi anh. cảm ơn anh nhiều
 
Upvote 0
Bạn tham khảo File xem có được không nhé

Bạn dùng sự kiện SheetSelectionChange để giải quyết? Đâu có đơn giản như vậy chứ!
Giả sử tôi chẳng chọn gì trên bảng tính mà tôi chỉ vẽ hình thì sao? Vẽ cũng xem là 1 thao tác chứ?
Nói chung, đã gọi là có thao tác tức là chuột hoặc bàn phím có tác động (còn họ tác động chuột, bàn phím theo cách nào thì tùy họ) ----> Giống như chương trình Screen Saver mới gọi là chuẩn
 
Upvote 0
Bạn dùng sự kiện SheetSelectionChange để giải quyết? Đâu có đơn giản như vậy chứ!
Giả sử tôi chẳng chọn gì trên bảng tính mà tôi chỉ vẽ hình thì sao? Vẽ cũng xem là 1 thao tác chứ?
Nói chung, đã gọi là có thao tác tức là chuột hoặc bàn phím có tác động (còn họ tác động chuột, bàn phím theo cách nào thì tùy họ) ----> Giống như chương trình Screen Saver mới gọi là chuẩn
Thầy nói quá chuẩn luôn, e cũng đã nghĩ tới những trường hợp này (Format, vẽ hình...) nhưng "lực bất tòng tâm" thầy àh. Thầy cho chúng em giải pháp đi!
 
Upvote 0
Thầy nói quá chuẩn luôn, e cũng đã nghĩ tới những trường hợp này (Format, vẽ hình...) nhưng "lực bất tòng tâm" thầy àh. Thầy cho chúng em giải pháp đi!

Cái này đương nhiên phải dùng đến hàm API mới giải quyết được.
Giải thuật là: Lấy vị trí x, y của con trỏ chuột xem chúng có thay đổi khộng... Nếu vị trí chuột không thay đổi sau 1 thời gian định trước thì sẽ kích hoạt sự kiện
1> Code cho module:
Mã:
Private Type POINTAPI
  x As Long
  y As Long
End Type
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public hWnd As Long, lCurPos(1 To 2) As Long, lCount As Long
Mã:
Sub TimeProc(ByVal H As Long, ByVal nMSG As Long, ByVal nID As Long, ByVal nTsys As Long)
  Dim lpPoint As POINTAPI
  On Error Resume Next
  GetCursorPos lpPoint
  If lCurPos(1) = lpPoint.x And lCurPos(2) = lpPoint.y Then
    lCount = lCount + 1
  Else
     lCount = 0
  End If
  [COLOR=#ff0000]If lCount >= 100 Then[/COLOR]
    ShowForm
  End If
  Application.StatusBar = lCount
  lCurPos(1) = lpPoint.x
  lCurPos(2) = lpPoint.y
End Sub
Mã:
Sub Proc_Stop()
  KillTimer hWnd, 0
  lCount = 0
  Application.StatusBar = ""
End Sub
Mã:
Sub Auto_Open()
  Proc_Stop
  hWnd = Application.hWnd
  SetTimer hWnd, 0, 100, AddressOf TimeProc
End Sub
Mã:
Sub ShowForm()
  Proc_Stop
  UserForm1.Show
End Sub
2> Code trong UserForm
Mã:
Private Sub UserForm_Initialize()
  Proc_Stop
End Sub
Private Sub UserForm_Terminate()
  Auto_Open
End Sub

Nói chung toàn bộ giải thuật là lấy vị trí của con trỏ chuột. Trong file tôi đặt thời gian chờ = 10s (chổ màu đỏ trong code)
Nếu muốn hoàn hảo hơn, phải có thêm code lấy tình trạng của bàn phím xem trong thời gian chờ có phím nào được nhấn không ---> các bạn tự nghiên cứu đi. Có thể tham khảo bài này:
http://www.giaiphapexcel.com/forum/...iện-textchange-khi-gõ-chữ&p=354593#post354593
 

File đính kèm

Upvote 0

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

Back
Top Bottom