E chào các anh chị ạ.
E có 1 file excel và e muốn vô hiệu hóa nút close của workbook và thoát file bằng nút exit tự tạo trên userform ạ.( vì form của e là form đăng nhập ạ)
Trong workbook_ beforeclose. E để thử
Cancel = true
Đã vô hiệu hóa đc nút close của workbook và nút exit trên usrform e viết
Activeworkbook.close
Application.quit.
Tuy nhiên lúc e click nút exit để thoát toàn bộ thì file lại ko thoát hết mà gần như chỉ ở dạng treo.và chỉ cần mở 1 file excel khác là file của e lại hiện đè lên ạ.
E mới tìm hiểu nên con nhiều thứ ko biết mong ac giúp đỡ ạ
Username : 1
Pass : 1
E chào các anh chị ạ.
E có 1 file excel và e muốn vô hiệu hóa nút close của workbook và thoát file bằng nút exit tự tạo trên userform ạ.( vì form của e là form đăng nhập ạ)
Trong workbook_ beforeclose. E để thử
Cancel = true
Đã vô hiệu hóa đc nút close của workbook và nút exit trên usrform e viết
Activeworkbook.close
Application.quit.
Tuy nhiên lúc e click nút exit để thoát toàn bộ thì file lại ko thoát hết mà gần như chỉ ở dạng treo.và chỉ cần mở 1 file excel khác là file của e lại hiện đè lên ạ.
E mới tìm hiểu nên con nhiều thứ ko biết mong ac giúp đỡ ạ
Username : 1
Pass : 1
E chào các anh chị ạ.
E có 1 file excel và e muốn vô hiệu hóa nút close của workbook và thoát file bằng nút exit tự tạo trên userform ạ.( vì form của e là form đăng nhập ạ)
Trong workbook_ beforeclose. E để thử
Cancel = true
Đã vô hiệu hóa đc nút close của workbook và nút exit trên usrform e viết
Activeworkbook.close
Application.quit.
Tuy nhiên lúc e click nút exit để thoát toàn bộ thì file lại ko thoát hết mà gần như chỉ ở dạng treo.và chỉ cần mở 1 file excel khác là file của e lại hiện đè lên ạ.
E mới tìm hiểu nên con nhiều thứ ko biết mong ac giúp đỡ ạ
Username : 1
Pass : 1
Trong file em đã bỏ Cancel = true ở workbook _ beforeclose rồi ạ. Anh thêm vào lại vào giúp e sau đó thoát ra bằng nút exit trên userform. Và vào 1 file excel khác anh sẽ thấy file LoGin của em đang bị treo cùng với file mới ạ.
Tôi vốn kỵ không dùng code lộn xộn với Application cho nên không muốn thử.
Chỉ là cái lô gic như vầy, bạn nghĩ hợp lý thì thử, không thì thôi:
Excel cần phân biệt khi nào bạn bẫm x để close và khi nào bạn bấm cái nút exit để close.
Nếu dúng lô gic như vậy thì thử:
- đặt một biến toàn cục tên là BamNutExit (kiểu boolean)
- trong nút exit của userform, trước khi gọi Activeworkbook.close, thì đặt
BamNutExit = true
- trong workbook_ beforeclose, đặt
Cancel = Not BamNutExit (thay vì true)
Chú thích: sử dụng trực tiếp biến toàn cục là cách rất thô và sơ đẳng. Người có kinh nghiệm thường giấu nó đi và truy cập một cách kín đáo hơn:
- đặt biến toàn cục là private thay vì public: Private BamNutExit As Boolean
- đặt hàm SetBamNutExit(). Hàm này chỉ đặt BamNutExit = true
- đặt hàm GetBamNutExit()
Function GetBamNutExit() As Boolean
GetBamNutExit = BamNutExit
End Function
Bạn nên rút kinh nghiệm lần sau. Bạn chỉ phải mô tả yêu cầu thực của bạn còn việc chọn phương pháp thì để cho người khác. Không có chuyện bạn chọn workbook_ beforeclose rồi muốn người khác phải đi theo con đường đó. Người ta có chọn hay không thì để người ta quyết định.
Nếu không đúng ý thì dừng đọc tiếp ở đây. Nếu đúng ý thì toàn bộ code trong tập tin:
1. Trong ThisWorkbook
Mã:
Private Sub workbook_open()
Application.Visible = False
ActiveWindow.DisplayWorkbookTabs = False
Login.Show
End Sub
2. Trong UserForm
Mã:
Option Explicit
Private Sub Cmb_Login_Click()
If dn.Text = "1" And mk.Text = "1" Then
Application.Visible = True
ActiveWindow.DisplayWorkbookTabs = True
Unload Me
Else
MsgBox " Kięm tra lai pass vŕ username"
End If
End Sub
Private Sub Cmb_Exit_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim answer
If Application.Visible = False Then
answer = MsgBox("Ban có muôn thoát chuong trinh không ?", vbYesNo + vbQuestion, "EXIT")
If answer = vbYes Then
Application.Visible = True
ActiveWindow.DisplayWorkbookTabs = True
ThisWorkbook.Close (True)
Else
Cancel = 1
End If
End If
End Sub
Do em diễn đạt chưa cụ thể nên là mọi người ko hiểu hết ý của em ạ.
E có file Login đính kèm ở trên. Giờ e muốn vô hiệu hóa nút close (×) của workbook để ko thể thoát đc file login .và nếu muốn thoát file thì phải click nút Home em đang tạo ở worksheet để hiện userform và thoát file bằng nút Exit trên userform ạ.
Mong mọi người giúp em với ạ
Bạn nên rút kinh nghiệm lần sau. Bạn chỉ phải mô tả yêu cầu thực của bạn còn việc chọn phương pháp thì để cho người khác. Không có chuyện bạn chọn workbook_ beforeclose rồi muốn người khác phải đi theo con đường đó. Người ta có chọn hay không thì để người ta quyết định.
Nếu không đúng ý thì dừng đọc tiếp ở đây. Nếu đúng ý thì toàn bộ code trong tập tin:
1. Trong ThisWorkbook
Mã:
Private Sub workbook_open()
Application.Visible = False
ActiveWindow.DisplayWorkbookTabs = False
Login.Show
End Sub
2. Trong UserForm
Mã:
Option Explicit
Private Sub Cmb_Login_Click()
If dn.Text = "1" And mk.Text = "1" Then
Application.Visible = True
ActiveWindow.DisplayWorkbookTabs = True
Unload Me
Else
MsgBox " Kięm tra lai pass vŕ username"
End If
End Sub
Private Sub Cmb_Exit_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim answer
If Application.Visible = False Then
answer = MsgBox("Ban có muôn thoát chuong trinh không ?", vbYesNo + vbQuestion, "EXIT")
If answer = vbYes Then
Application.Visible = True
ActiveWindow.DisplayWorkbookTabs = True
ThisWorkbook.Close (True)
Else
Cancel = 1
End If
End If
End Sub
Do em diễn đạt chưa cụ thể nên là mọi người ko hiểu hết ý của em ạ.
E có file Login đính kèm ở trên. Giờ e muốn vô hiệu hóa nút close (×) của workbook để ko thể thoát đc file login .và nếu muốn thoát file thì phải click nút Home em đang tạo ở worksheet để hiện userform và thoát file bằng nút Exit trên userform ạ.
Mong mọi người giúp em với ạ