Ẩn form khi bấm vào sheet

Liên hệ QC

phuoclocvl

Thành viên thường trực
Tham gia
28/3/12
Bài viết
220
Được thích
32
Dạ chào các Anh/Chị diễn đàn,
Em có 1 câu hỏi là:
Trong workbook mình có 1 form, có cách nào mình mở form ra sử dụng và khi bấm vào sheet thì form giấu để mình nhìn được hết bảng tính để dễ thao tác không ạ.
Chế độ VBModeless thì chỉ sử dụng đc các sheet khi mở form nhưng form vẫn hiện
Xin cảm ơn ạ,
 
Dạ chào các Anh/Chị diễn đàn,
Em có 1 câu hỏi là:
Trong workbook mình có 1 form, có cách nào mình mở form ra sử dụng và khi bấm vào sheet thì form giấu để mình nhìn được hết bảng tính để dễ thao tác không ạ.
Chế độ VBModeless thì chỉ sử dụng đc các sheet khi mở form nhưng form vẫn hiện
Xin cảm ơn ạ,
Làm cho nó cái sự kiện ở sheets.Ẩn Form đi là được.
 
Upvote 0
Ẩn xong rồi làm sao cho nó hiện ra lại?

(đây là gợi ý chứ không phải hỏi đố)
 
Lần chỉnh sửa cuối:
Upvote 0
À, đúng rồi anh VietMini nói đúng á, ròi sao cho nó show lại nhở, nhưng mà code cho sự kiện ẩn form trong sheet như thế nào anh Snow ơi.
Đây bạn xem nhé
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   UserForm1.Hide
End Sub
 
Upvote 0
Có nhiều cách để thực hiện, tuy nhiên khi đã sử dụng Form thì viết Code cũng sẽ nằm trong Form

Ví dụ như đoạn code dưới đây:

Form sẽ ẩn đi tùy điều kiện, ở đây sẽ sử dụng sự kiện SelectionChange để ẩn.

Nếu muốn hiện lại Form thì có thể tạo một shortcut key gán vào Sub đã gọi Form:
Ví dụ:
PHP:
Private oNewForm As UserForm1
Sub SubShowForm()
  On Error Resume Next
  'Ctrl + F1
  Application.Onkey "^{F1}"
  Application.Onkey "^{F1}", "'" & ThisWorkbook.Name & "'!SubShowForm"
  If oNewForm Is Nothing Then
    Set oNewForm = New UserForm1
  End If
  oNewForm.Show VBA.vbModeless
End Sub
----------------

hoặc cũng có thể Set thời gian hiện lại Form như đoạn code dưới.

--------- Copy đoạn code dưới vào Code của UserForm (Nếu trùng các thủ tục thì copy vào chung thủ tục)--------
PHP:
Private WithEvents App As Excel.Application

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  Me.Hide
  Application.OnTime VBA.Now + VBA.TimeSerial(0, 0, 5), "'" & ThisWorkbook.Name & "'!SubShowForm"
End Sub

Private Sub UserForm_Initialize()
  Set App = Excel.Application
End Sub

Private Sub UserForm_Terminate()
  Set App = Nothing
End Sub
 
Upvote 0
Web KT
Back
Top Bottom