Nhờ mọi người giúp đỡ khi ẩn Sheet dùng VBA (1 người xem)

Liên hệ QC

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

quanghuy89hd

Thành viên mới
Tham gia
6/1/10
Bài viết
2
Được thích
0
Các bác cho em hỏi chút ah. Em muốn bảng excel của em trông chuyên nghiệp 1 chút nên đã dùng VBA để tạo bảng như trong file đính kèm. Bây giờ em cũng dùng VBA để ẩn đi các Sheet, chỉ để 1 Sheet chính thôi. Nhưng khi ẩn đi thì lúc mình ấn vào mấy cái nút link trong Sheet 1 thì lại ko được nữa. Các bác giúp em cách để khi ẩn đi mà vẫn có thể link được sang các sheet đã ẩn với ah. Thanks các bác nhiều!!!
 

File đính kèm

Các bác cho em hỏi chút ah. Em muốn bảng excel của em trông chuyên nghiệp 1 chút nên đã dùng VBA để tạo bảng như trong file đính kèm. Bây giờ em cũng dùng VBA để ẩn đi các Sheet, chỉ để 1 Sheet chính thôi. Nhưng khi ẩn đi thì lúc mình ấn vào mấy cái nút link trong Sheet 1 thì lại ko được nữa. Các bác giúp em cách để khi ẩn đi mà vẫn có thể link được sang các sheet đã ẩn với ah. Thanks các bác nhiều!!!

Tham khảo và làm theo bài này nhé:
http://www.giaiphapexcel.com/forum/showthread.php?37055-Tạo-nút-nhấn-để-link-đến-các-sheet
 
Upvote 0
Theo tôi thì đã dùng nút lệnh thì không nên dùng luôn cái Hyperlink, nhưng nếu bạn muốn dùng thì như vầy đi:

Tại Code của Sheet2 và Sheet3:

PHP:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    Dim sh As Worksheet
    Sheets("Sheet1").Visible = xlSheetVisible
    Sheets("Sheet1").Activate
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet1" Then sh.Visible = xlSheetVeryHidden
    Next
End Sub

Tương tự với Sheet1, các nút lệnh như sau:

PHP:
Private Sub CommandButton2_Click()
    Dim sh As Worksheet
    Sheets("Sheet2").Visible = xlSheetVisible
    Sheets("Sheet2").Activate
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet2" Then sh.Visible = xlSheetVeryHidden
    Next
End Sub

''=================================================

Private Sub CommandButton3_Click()
    Dim sh As Worksheet
    Sheets("Sheet3").Visible = xlSheetVisible
    Sheets("Sheet3").Activate
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet3" Then sh.Visible = xlSheetVeryHidden
    Next
End Sub
 
Upvote 0
Mấu chốt vấn đề là ở chỗ này: -Không thể ẩn Sheet nào đó nếu nó đang nhận Focus (Đang Active). Để có thể ẩn nó trước hết phải chuyển Focus sang sheet nào đó có thể (Có thể nhìn thấy). Ví dụ của bạn thì Sheet1 là sheet luôn hiện nên ta cứ chọn luôn nó rồi ẩn sheet cũ là xong.
Nếu bạn muốn dùng Link thì bạn làm như sau:

-Trước mỗi lệnh chọn sheet thêm 1 dòng hiện sheet.
-Bạn dùng 1 code chung để ẩn các sheet cũ.

Tóm lại với ví dụ của bạn chép code sau vào vùng code của sheet1 thay toàn bộ code của bạn là ổn

Mã:
Private Sub CommandButton2_Click()
Sheet2.Visible = xlSheetVisible
Sheet2.Activate
End Sub
'------------------------------------
Private Sub CommandButton3_Click()
Sheet3.Visible = xlSheetVisible
Sheet3.Activate
End Sub
'------------------------------------
Private Sub Worksheet_Activate()
For Each Sheet In Sheets
If Sheet.Name <> "Sheet1" Then Sheet.Visible = 2
Next
End Sub
 
Upvote 0
Theo tôi thì đã dùng nút lệnh thì không nên dùng luôn cái Hyperlink, nhưng nếu bạn muốn dùng thì như vầy đi:

Tại Code của Sheet2 và Sheet3:

PHP:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    Dim sh As Worksheet
    Sheets("Sheet1").Visible = xlSheetVisible
    Sheets("Sheet1").Activate
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet1" Then sh.Visible = xlSheetVeryHidden
    Next
End Sub

Tương tự với Sheet1, các nút lệnh như sau:

PHP:
Private Sub CommandButton2_Click()
    Dim sh As Worksheet
    Sheets("Sheet2").Visible = xlSheetVisible
    Sheets("Sheet2").Activate
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet2" Then sh.Visible = xlSheetVeryHidden
    Next
End Sub

''=================================================

Private Sub CommandButton3_Click()
    Dim sh As Worksheet
    Sheets("Sheet3").Visible = xlSheetVisible
    Sheets("Sheet3").Activate
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Sheet3" Then sh.Visible = xlSheetVeryHidden
    Next
End Sub
Nếu dùng Hyperlink thay cho Button thì code vầy:
PHP:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  With Sheets(Replace(Split(Target.SubAddress, "!")(0), "'", ""))
    .Visible = -1: .Select
  End With
  Sh.Visible = 2
End Sub
Code này đặt trong Thisworkbook, 1 code duy nhất cho tất cả các Hyperlink
 
Upvote 0
Web KT

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

Back
Top Bottom