Hướng dẫn cách tạo menu nút bấm thêm đến nhiều sheet

Liên hệ QC

Manhhungstone

Thành viên mới
Tham gia
13/4/10
Bài viết
31
Được thích
4
Mình thấy bạn Manhhungmhnh gửi xin hỏi diễn đàn cách ẩn hiện menu đến sheet rất hay mình muốn làm như vậy nhưng khi mình thêm các mục nữa thì không biết làm nhờ mọi người hướng dẫn thêm nhé/ cảm ơn nhiều/
 

File đính kèm

  • Them BTGotoSheet.rar
    11.6 KB · Đọc: 524
-Tạo một nút đưa chuột về trang (Page) nào đó theo chỉ định (Nút bấm đi theo màn hình thì hay biết mấy).
-Tạo nút về trang chính (nút có tên tiếng anh là bach.. hay gì đó).

Có cần thiết phải dùng Nút bấm trôi được hay không?. Excel là phần mềm bảng tính, có cần phải bảo nó biểu diển không?

Trong trang DATA bạn đã Freeze Panes rồi, chỉ cần đặt Nút ở cửa sổ cố định là xong thôi.

Ở đây mình không sử dụng Butons mà là AutoShape (có trong file của Bạn đó) và Mình góp ý thế này: trang DATA là Trang chính, tại trang này có n AutoShape để đến n Trang khác (Trang phụ) còn mỗi Trang phụ chỉ cần 1 AutoShape DATA (về trang DATA thôi).

Cứ mỗi AutoShape Bạn cần làm 2 bước sau (tương tự như Bác ndu96081631 đã nói phần trên rồi):
a) Gõ nhãn của AutoShape trùng với tên sheet mà bạn muốn liên kết
b) Click phải vào nó, chọn Assign Macro, chọn macro có tên là GotoSh rồi bấm OK

Trên trang DATA Mình chỉ tạo 2 nút Cong_manh (để về trang Cong_manh) và Dem_manh thôi, các nút khác bạn làm tương tự.

Trên các Trang phụ ví dụ trang Cong_manh tạo 1 nút "Về DATA" có nhãn là DATA, Assign Macro chọn GotoSh. Bạn chỉ cần copy nút này dán vào các trang khác là xong - tự bạn làm để biết nhé.

Góp ý thêm: các AutoShape của Bạn khi in ra sẽ có trên trang tài liệu còn các AutoShape do mình tạo khi in ra không thấy. Cách làm: nhắp chuột phải vào AutoShape, chọn Format AutoShape\ Properties bỏ chọn trong hộp Print object.

File đính kèm: http://www.4shared.com/rar/DFzqn2Ht/Nho_tao_nut_bam_xong.html
 
Lần chỉnh sửa cuối:
Upvote 0
Thì sửa code lại tí thôi ---> Khi các nút con hiện ra, bạn chỉ cần chọn 1 cell bất kỳ trên sheet là các nút ấy sẽ ẩn lập tức
Xem file
Em có áp dụng bài #16 và kết hợp thêm chế độ ẩn sheet
Ngoài các code bài 16, em có thêm các code sau
Mã:
Sub ShowAllShs_T()
    Dim sh As Worksheet
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheet3.shapes("Button 91").TextFrame.Characters
        For Each sh In ThisWorkbook.Worksheets
            If sh.name <> "Main" Then
            'sh.Visible = .text = "SHOW ALL"
                sh.Visible = (.text = "SHOW ALL") + 2
            End If
        Next
        .text = IIf(.text = "SHOW ALL", "HIDE ALL", "SHOW ALL")
    End With
    Application.ScreenUpdating = True
End Sub
Mã:
Sub Auto_Open()
    Dim wks As Worksheet, shp1 As Shape
    Set wks = Worksheets("Main")
    Set shp1 = wks.shapes("Button 91")
    If shp1.TextFrame.Characters.text = "HIDE ALL" Then ShowAllShs_T
End Sub
Khi đang chế độ ẩn Sheet thì khi chọn nút con (nút để Link đến các sheet) thì không thể nhảy đến sheet cần đến? Mà fải bật Show All (ở trong nút "Sổ Chi Tiết") thì nó mới chịu nhảy đến sheet em muốn!
---
Ý em muốn khi đang ở chế độ ẩn thì khi chọn nút con để có thể Link đến Sheet cần đến được không?
********************
Câu hỏi 2: Tại sheet "Main" khi em Khi em tạo khoảng 80 nút (vừa nút cha vừa nút con) thì không thể được, nó cho tạo khỏang 65 nút mà thôi, không biết có cách nào để tạo 80 nút nó trên?
Nếu tạo khoảng 80 nút thì code báo lỗi (chỗ em tô màu đỏ)
Mã:
Sub Reset()
  Dim shp As Shape
  With ActiveSheet
[COLOR=#ff0000][B]    .DrawingObjects.Visible = False[/B][/COLOR]
    For Each shp In .shapes
      If InStr(shp.OnAction, "Main_1") Then shp.Visible = True
    Next
  End With
End Sub
------------
Mong các Thầy cô & anh chị giúp em! Em cảm ơn
--------
P/s: Trường hợp không giải quyết được! xin cho em 1 ý kiến!
 

File đính kèm

  • BTGotoSheet_5_3.xls
    75.5 KB · Đọc: 30
Upvote 0
Sheet đang ẩn thì không thể select được.

[tip2= ]Code nào cũng để On Error Resume Next rồi không biết tại sao code không chạy đúng ý
Phải để code chạy tự do mới biết dòng lệnh nào lỗi, và lỗi gì để sửa chứ?
[/tip2]
 
Lần chỉnh sửa cuối:
Upvote 0
Câu hỏi 2: Tại sheet "Main" khi em Khi em tạo khoảng 80 nút (vừa nút cha vừa nút con) thì không thể được, nó cho tạo khỏang 65 nút mà thôi, không biết có cách nào để tạo 80 nút nó trên?
Nếu tạo khoảng 80 nút thì code báo lỗi (chỗ em tô màu đỏ)

Bỏ câu màu đỏ đi.

PHP:
Sub Reset()
  Dim shp As Shape
  With ActiveSheet
'    .DrawingObjects.Visible = False'
    For Each shp In .shapes
      If InStr(shp.OnAction, "Main_1") Then
        shp.Visible = True
      Else
        shp.Visible = False
      End If
    Next
  End With
End Sub

Tuy nhiên, nếu nhiều nút quá cửa sổ Main sẽ rối. Chẳng thà dùng 1 combobox hoặc listbox chọn tên sheet, rồi nhấn nút, thì chỉ 1 nút là đủ.
 
Lần chỉnh sửa cuối:
Upvote 0
Em có áp dụng bài #16 và kết hợp thêm chế độ ẩn sheet
Ngoài các code bài 16, em có thêm các code sau
Mã:
Sub ShowAllShs_T()
    Dim sh As Worksheet
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheet3.shapes("Button 91").TextFrame.Characters
        For Each sh In ThisWorkbook.Worksheets
            If sh.name <> "Main" Then
            'sh.Visible = .text = "SHOW ALL"
                sh.Visible = (.text = "SHOW ALL") + 2
            End If
        Next
        .text = IIf(.text = "SHOW ALL", "HIDE ALL", "SHOW ALL")
    End With
    Application.ScreenUpdating = True
End Sub
Mã:
Sub Auto_Open()
    Dim wks As Worksheet, shp1 As Shape
    Set wks = Worksheets("Main")
    Set shp1 = wks.shapes("Button 91")
    If shp1.TextFrame.Characters.text = "HIDE ALL" Then ShowAllShs_T
End Sub
Khi đang chế độ ẩn Sheet thì khi chọn nút con (nút để Link đến các sheet) thì không thể nhảy đến sheet cần đến? Mà fải bật Show All (ở trong nút "Sổ Chi Tiết") thì nó mới chịu nhảy đến sheet em muốn!
---
Ý em muốn khi đang ở chế độ ẩn thì khi chọn nút con để có thể Link đến Sheet cần đến được không?
********************
Câu hỏi 2: Tại sheet "Main" khi em Khi em tạo khoảng 80 nút (vừa nút cha vừa nút con) thì không thể được, nó cho tạo khỏang 65 nút mà thôi, không biết có cách nào để tạo 80 nút nó trên?
Nếu tạo khoảng 80 nút thì code báo lỗi (chỗ em tô màu đỏ)
Mã:
Sub Reset()
  Dim shp As Shape
  With ActiveSheet
[COLOR=#ff0000][B]    .DrawingObjects.Visible = False[/B][/COLOR]
    For Each shp In .shapes
      If InStr(shp.OnAction, "Main_1") Then shp.Visible = True
    Next
  End With
End Sub
------------
Mong các Thầy cô & anh chị giúp em! Em cảm ơn
--------
P/s: Trường hợp không giải quyết được! xin cho em 1 ý kiến!
Sửa thế này:
1> Thêm sự kiện cho Thisworkbook:
Mã:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  Sheets(Target.Name).Visible = -1
  Sh.Visible = 2
End Sub
2> Sửa lại code có sẵn:
Mã:
Sub Main_1()
  Dim shp As Shape, tmp
  On Error Resume Next
  Reset
  With ActiveSheet
    For Each shp In .shapes
      tmp = Split(shp.AlternativeText, ":")(0)
      If .shapes(Application.Caller).AlternativeText = tmp Then shp.Visible = True
    Next
    With Sheets(.shapes(Application.Caller).AlternativeText)
      .Visible = -1
      .Select
    End With
    .Visible = 2
  End With
End Sub
Sub GotoSh()
  Reset
  On Error Resume Next
  With ActiveSheet
    With Sheets(Split(.shapes(Application.Caller).AlternativeText, ":")(1))
      .Visible = -1
      .Select
    End With
    .Visible = 2
  End With
End Sub
3> Assign Macro lại lần nữa:
Riêng button Sổ Tổng Hợp, bạn hãy show các menu con rồi Assign Macro lại cho các menu con này đến Sub GotoSh nhé
--------------------------
Em cảm ơn Thầy
Em có thấy 1 bài của thầy Ndu mà khi ẩn thì vẫn chọn sheet được, em đã thử nhưng vẫn chưa được?
http://www.giaiphapexcel.com/forum/showthread.php?37055-Tạo-nút-nhấn-để-link-đến-các-sheet
Tại bạn không để ý thôi... Ẩn mà vẫn Select được là vì người ta cho sheet hiện ra trước ---> Bạn thiếu công đoạn này thì làm sao Select được
 
Lần chỉnh sửa cuối:
Upvote 0
Trời ơi!
Code ndu nè:

Mã:
[COLOR=#000000][COLOR=#0000BB]Sub Link2Sh[/COLOR][COLOR=#007700]()
  [/COLOR][COLOR=#0000BB]With ActiveSheet
    With Sheets[/COLOR][COLOR=#007700](.[/COLOR][COLOR=#0000BB]Shapes[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Application[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Caller[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]AlternativeText[/COLOR][COLOR=#007700])
      [/COLOR][/COLOR][COLOR=#ff0000].Visible = True:[/COLOR][COLOR=#000000][COLOR=#007700] .[/COLOR][COLOR=#0000BB]Select
    End With
    [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Visible [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]2
  End With
End Sub  [/COLOR][/COLOR]
 
Upvote 0
Web KT
Back
Top Bottom