Vô hiệu hóa nút close (×) của workbook

Liên hệ QC

Linh Tú_96

Thành viên mới
Tham gia
25/10/19
Bài viết
4
Được thích
0
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
 

File đính kèm

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
- Hiện tại mình mở thì thấy nhấn nút exit sẽ thoát workbook .. mở 1 file excel khác lên có thấy hiện ra login đâu???
 
Upvote 0
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
Bạn mô tả chi tiết hơn vấn đề bạn mong muốn.
 
Upvote 0
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 ạ.
 
Upvote 0
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
 
Upvote 0
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 tôi hiểu được lôgíc của Login thì là như sau. Khi mở tập tin thì giao diện của Excel bị ẩn, chỉ có 1 Form. Không làm sao có thể làm việc với tập tin. Nếu người dùng nhấn X hoăc Exit và nếu đồng ý thì đóng tập tin và hiện giao diện. Nếu không đồng ý thì vẫn chỉ được chiêm ngưỡng Form. Nhìn chán thì hoặc phải nhấn X hoặc Exit và đồng ý, hoặc nhập đúng mật khẩu và nhấn Login. Lúc đó Form sẽ biến mất và giao diện hiển thị lại với tập tin.

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

Tất nhiên người ta cũng có thể: mở Excel -> thiết lập tắt các macro -> mở Login -> vào xem code và xem mật khẩu -> đóng Login -> thiết lập bật các macro -> mở Login -> nhập mật khẩu -> làm biệc. Hoặc nhẹ nhàng hơn là không phải nhìn mật khẩu gì mà xóa toàn bộ code trong workbook_open -> lưu tập tin -> đóng Login -> thiết lập bật các macro -> mở Login -> làm việc.
 
Upvote 0
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ài đã được tự động gộp:

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 tôi hiểu được lôgíc của Login thì là như sau. Khi mở tập tin thì giao diện của Excel bị ẩn, chỉ có 1 Form. Không làm sao có thể làm việc với tập tin. Nếu người dùng nhấn X hoăc Exit và nếu đồng ý thì đóng tập tin và hiện giao diện. Nếu không đồng ý thì vẫn chỉ được chiêm ngưỡng Form. Nhìn chán thì hoặc phải nhấn X hoặc Exit và đồng ý, hoặc nhập đúng mật khẩu và nhấn Login. Lúc đó Form sẽ biến mất và giao diện hiển thị lại với tập tin.

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

Tất nhiên người ta cũng có thể: mở Excel -> thiết lập tắt các macro -> mở Login -> vào xem code và xem mật khẩu -> đóng Login -> thiết lập bật các macro -> mở Login -> nhập mật khẩu -> làm biệc. Hoặc nhẹ nhàng hơn là không phải nhìn mật khẩu gì mà xóa toàn bộ code trong workbook_open -> lưu tập tin -> đóng Login -> thiết lập bật các macro -> mở Login -> làm việc.
[/QUOTE

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 ạ
 
Upvote 0
Đã lòi cái đuôi ra rồi. :D

Khi hiện Form thì ẩn cái workbook đi là xong thôi.
 
Upvote 0
Web KT

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

Back
Top Bottom