Ẩn Sheet tự động

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

nguyenanhkietgo

Thành viên mới
Tham gia
13/7/23
Bài viết
5
Được thích
0
Em có 3 Sheet: Sheet1, Sheet2, Sheet3
Yêu cầu: Tự động ẩn 2 Sheet2 và Sheet3 khi tắt File Excel đi ạ
Nhờ các anh chị giúp ạ.
 
Giúp em với ạ. Em không biết dùng
Bài đã được tự động gộp:
Khi nào biết cách dán vào Module "ThisWorkbook" thì dùng. Giờ thì phải dùng phương án thủ công là nhớ ẩn trước khi đóng thôi.
Mã:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
MsgBox "Chuan bi an 2 sheet ne!!!"
Sheets("Sheet2").Visible = xlSheetHidden
Sheets("Sheet3").Visible = xlSheetHidden
ThisWorkbook.Save
Application.DisplayAlerts = True
End Sub
 
Khi nào biết cách dán vào Module "ThisWorkbook" thì dùng. Giờ thì phải dùng phương án thủ công là nhớ ẩn trước khi đóng thôi.
Đáng lẽ bạn phải bảo thớt "bao giờ biết dùng hãy nghĩ đến hai từ tự động. Trước khi biết sự kiện là cái quái gì thì chuyện tự động coi như nằm ngoài tay với".

Không biết mà bày đặt chảnh choẹ thì cái file sẽ nát bét.
 
Khi nào biết cách dán vào Module "ThisWorkbook" thì dùng. Giờ thì phải dùng phương án thủ công là nhớ ẩn trước khi đóng thôi.
Mã:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
MsgBox "Chuan bi an 2 sheet ne!!!"
Sheets("Sheet2").Visible = xlSheetHidden
Sheets("Sheet3").Visible = xlSheetHidden
ThisWorkbook.Save
Application.DisplayAlerts = True
End Sub
Bác @cantl giờ giúp làm sao tự động... hiện 2 sheet bị ẩn đi nè!
 
Có đó Bác @VetMini ơi, ví dụ như em, có 1 file trên ổ đĩa mạng. File này toàn bộ máy công ty đều mở xem được. File có 3 sheet: Sheet1(BaoCao), Sheet2(Nhap), Sheet3(Xuat). Em là người nhập liệu trên file này. Hàng ngày em nhập, xuất vào sheet2 và sheet3. Xong thì đóng file, và lúc này sheet2 và sheet3 ẩn, sheet1(BaoCao) Protectsheet, chỉ cho xem và lọc in thôi. Khi mở file lên em cho hiện sheet2 và sheet3 ra để nhập liệu.
 
Lỳ thật.
Lúc đóng file, dùng sự kiện để ẩn sheets.
Lúc mở file, dùng sự kiện để hiện sheets.
Rốt cuộc thì ẩn với ai?
Ít nhất phải có điều kiện gì trước khi hiện sheets chứ!

Chú thích: code ẩn sheet thông thường là do muốn làm gọn cái status bar khi mở ra - ví dụ có cả đống sheets, nhưng bình thường chỉ cần một vài cái hiện ra thôi.
Muốn chơi kiểu người này có quyền xem sheet, người khác không thì phải code kiểu khác.
 
Muốn chơi kiểu người này có quyền xem sheet, người khác không thì phải code kiểu khác.
Đúng đó Bác @VetMini , tức là chỉ mình em xem sheet2 và sheet3 thôi, và làm việc trên 2 sheet này, còn các người khác chỉ xem sheet1 thôi, và họ có thể lọc mục nào họ thích để báo cáo thôi.
 
Tự động ẩn, rồi tự động hiện.
Chẳng lẽ bạn không nhìn ra cái lô gic quá hiển nhiên: thì đừng tự động ẩn!
Bác nghiêm túc quá đó! Những cái nhỏ nhỏ vầy mà đưa lên đây hỏi thì không nên xài VBA, ham hố lỡ nó trở chứng biết đường đâu mà chữa.
 
Em có tải file này.
Nhưng chưa thử. Anh @ongke0711
Bài đã được tự động gộp:

Bác @VetMini hiện thời em đang dùng code củ chuối này ạ:
Mã:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("O1")) Is Nothing Then
           Sheet1.Unprotect Password:="GPE"
           Sheet2.Visible = xlSheetVisible
           Sheet3.Visible = xlSheetVisible
           Sheet1.Range("D1").EntireColumn.Hidden = False
        End If
        If Not Intersect(Target, Range("P1")) Is Nothing Then
           Sheet1.Protect Password:="GPE", UserInterfaceonly:=True, AllowSorting:=True, AllowFiltering:=True
           Sheet2.Visible = xlSheetVeryHidden
           Sheet3.Visible = xlSheetVeryHidden
           Sheet1.Range("D1").EntireColumn.Hidden = True
        End If
    End If
End Sub
Tức là khi em chọn "O1" sheet1 thì mở khóa sheet1, hiện sheet2 và sheet3.
Khi em chọn "P1" sheet1 thì khóa sheet1, ẩn sheet2 và sheet3 ạ.
Mong Bác @VetMini và các anh cho cách nào khác tối ưu hơn ạ.
 
Lần chỉnh sửa cuối:
Đúng đó Bác @VetMini , tức là chỉ mình em xem sheet2 và sheet3 thôi, và làm việc trên 2 sheet này, còn các người khác chỉ xem sheet1 thôi, và họ có thể lọc mục nào họ thích để báo cáo thôi.
Tại sao bạn không thử Environ("computername") hoặc Environ("username")? Ràng buộc nếu computername/username của bạn thì hiện sheet2 và sheet3, còn lại thì ẩn sheet2 và sheet3. Hoặc có thể ràng buộc bằng địa chỉ IP nếu IP máy tính của bạn không thay đổi...
 
File nằm trên ổ đĩa mạng nha bạn @syquyen1987 , mình cũng không rành VBA lắm, bạn có thể làm cho mình với.
 
File nằm trên ổ đĩa mạng nha bạn @syquyen1987 , mình cũng không rành VBA lắm, bạn có thể làm cho mình với.
File nằm trên ổ đĩa mạng nha bạn @syquyen1987 , mình cũng không rành VBA lắm, bạn có thể làm cho mình với.
Bạn có thể tham khảo code như sau:
Mã:
Private Sub Workbook_Open()
Dim a As String
a = Environ$("computername")
If a = "XINGAI" Then
    Sheet1.Unprotect Password:="GPE"
    Sheet2.Visible = xlSheetVisible
    Sheet3.Visible = xlSheetVisible
Else
    Sheet1.Protect Password:="GPE", UserInterfaceonly:=True, AllowSorting:=True, AllowFiltering:=True
    Sheet2.Visible = xlSheetVeryHidden
    Sheet3.Visible = xlSheetVeryHidden
    Sheet1.Range("D1").EntireColumn.Hidden = True
End If
End Sub
 
Cám ơn bạn @syquyen1987 , để mai lên công ty mình thử nha. Nhà có 1 cái máy bàn cùi bắp à.
 
Computer name đây phải không bạn @syquyen1987 :
Loi5784.png
Sao mình chép code vào và file nằm chính trên máy luôn, sao mở file vẫn khóa sheet1 và sheet2 và sheet3 vẫn ẩn.
Mã:
Private Sub Workbook_Open()
Dim a As String
a = Environ$("computername")
If a = "VOILY7RLQBWL7Z1" Then
    Sheet1.Unprotect Password:="GPE"
    Sheet2.Visible = xlSheetVisible
    Sheet3.Visible = xlSheetVisible
Else
    Sheet1.Protect Password:="GPE", UserInterfaceonly:=True, AllowSorting:=True, AllowFiltering:=True
    Sheet2.Visible = xlSheetVeryHidden
    Sheet3.Visible = xlSheetVeryHidden
    Sheet1.Range("D1").EntireColumn.Hidden = True
End If
End Sub
 
Web KT
Back
Top Bottom