Giúp đỡ tạo nút bấm đến sheet khác đồng thời ẩn hết tất cả các sheet còn lại (1 người xem)

Liên hệ QC

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

hoangtrong_vbnd

Thành viên hoạt động
Tham gia
14/1/11
Bài viết
156
Được thích
7
Giới tính
Nam
Như chủ đề đưa ra mong các bác giúp đỡ, e đã thử qua nhiều đoạn code trên diễn đàn nhưng chưa đúng ý lắm (VD như tạo button có điều kiện ...)
Bây giờ e có 1 file excel trên sheet đầu tiên tạo các nút bấm, các nút này sẽ liên kết đến từng sheet còn lại nhưng làm sao để khi nhấn vào nó sẽ chỉ hiện sheet mình liên kết tới đồng thời ẩn tất cả các sheet còn lại
E chỉ biết vẽ bằng shape -> edit text để điền vào-> assign macro liên kết đến macro -> chuột phải vào shapes và chọn all text để điền tên sheet mình muốn liên kết tới
E còn gà lắm mong các bác giúp đỡ ... thanks các bác quan tâm !!!
 
Trên diễn đàn đã có những bài dạng này rồi, bạn chịu khó search, tìm hiểu.
Tham khảo bài này: http://www.giaiphapexcel.com/forum/...hấn-để-link-đến-các-sheet&p=245462#post245462
em đã biết bài này từ lâu ... nhưng nó chỉ link đến sheet khác chứ không đồng thời ẩn hết tất cả các sheet
bác giúp e sửa code chút được ko
Sub Link2Sh()
With ActiveSheet
With Sheets
(.Shapes(Application.Caller).AlternativeText)
.
Visible = True: .Select
End With
.Visible = 2
End With
End Sub
hoặc thay số 2 bằng false nhưng vẫn ko ẩn các sheet khác đi
 
Lần chỉnh sửa cuối:
Upvote 0
em đã biết bài này từ lâu ... nhưng nó chỉ link đến sheet khác chứ không đồng thời ẩn hết tất cả các sheet
bác giúp e sửa code chút được ko

hoặc thay số 2 bằng false nhưng vẫn ko ẩn các sheet khác đi
Bạn nói gì lạ vậy, không những ẩn mà là "siêu ẩn" (xlSheetVeryHidden).
Nếu bạn muốn Hide/Unhide "bình thường" thì sửa lại 2 (xlSheetVeryHidden) thành 0 (xlSheetHidden):
Mã:
Sub Link2Sh()  With ActiveSheet
    With Sheets(.Shapes(Application.Caller).AlternativeText)
      .Visible = True: .Select
    End With
    .Visible = [B][SIZE=5][COLOR=#ff0000]0[/COLOR][/SIZE][/B]
  End With
End Sub
 
Upvote 0
Bạn nói gì lạ vậy, không những ẩn mà là "siêu ẩn" (xlSheetVeryHidden).
Nếu bạn muốn Hide/Unhide "bình thường" thì sửa lại 2 (xlSheetVeryHidden) thành 0 (xlSheetHidden):
Mã:
Sub Link2Sh()  With ActiveSheet
    With Sheets(.Shapes(Application.Caller).AlternativeText)
      .Visible = True: .Select
    End With
    .Visible = [B][SIZE=5][COLOR=#ff0000]0[/COLOR][/SIZE][/B]
  End With
End Sub
thì có nhiều trường hợp xảy ra trong công việc của mình mà ... VD e có file 10 sheet đi thì sheet đầu chứa các nút ấn, giờ e muốn tạo các liên kết sao cho ấn đến sheet 2 thì ẩn hết các sheet còn lại
nhưng mà e gà nên đọc bài "HD tạo menu nút bấm thêm đến nhiều sheet" ko được, nó nhiều đoạn code quá
có bác nào biết giúp e 1 đoạn code để chỉ liên kết đến 1 sheet còn tất cả các sheet khác sẽ "biến" đi cho gọn ...
 
Upvote 0
thì có nhiều trường hợp xảy ra trong công việc của mình mà ... VD e có file 10 sheet đi thì sheet đầu chứa các nút ấn, giờ e muốn tạo các liên kết sao cho ấn đến sheet 2 thì ẩn hết các sheet còn lại
nhưng mà e gà nên đọc bài "HD tạo menu nút bấm thêm đến nhiều sheet" ko được, nó nhiều đoạn code quá
có bác nào biết giúp e 1 đoạn code để chỉ liên kết đến 1 sheet còn tất cả các sheet khác sẽ "biến" đi cho gọn ...
Chẳng hiểu ý bạn là gì, cũng như bài #4 (code của Thầy ndu), bạn xem file đi rồi bàn tiếp.
 

File đính kèm

Upvote 0
Chẳng hiểu ý bạn là gì, cũng như bài #4 (code của Thầy ndu), bạn xem file đi rồi bàn tiếp.

Thật ra tác giả đã hỏi chủ đề này ít nhất chục lần rồi. Mọi thứ đã hướng dẫn rất cụ thể mà vẫn cứ.. hỏi hoài khiến tôi phát chán luôn
 
Upvote 0
Chẳng hiểu ý bạn là gì, cũng như bài #4 (code của Thầy ndu), bạn xem file đi rồi bàn tiếp.

Dễ hiểu thôi. Chỉ có một khả năng.

Trong bài của mình ndu không nói và bạn chủ chủ đề xem tập tin mà không chịu suy nghĩ. Đó là: phải có một bước nữa làm bằng tay, tức "bằng tay" ẩn tất cả các sheet chỉ để hiện sheet Trang chủ mà thôi. Từ lúc này ở mỗi thời điểm chỉ có 1 sheet duy nhất là hiện - sheet nào đó hoặc sheet Trang chủ
 
Upvote 0
Dễ hiểu thôi. Chỉ có một khả năng.

Trong bài của mình ndu không nói và bạn chủ chủ đề xem tập tin mà không chịu suy nghĩ. Đó là: phải có một bước nữa làm bằng tay, tức "bằng tay" ẩn tất cả các sheet chỉ để hiện sheet Trang chủ mà thôi. Từ lúc này ở mỗi thời điểm chỉ có 1 sheet duy nhất là hiện - sheet nào đó hoặc sheet Trang chủ

Cho dù tác giả không biết cái bước làm bằng tay này cũng không sao. Chỉ cần bỏ thời gian chừng 10 phút để thí nghiệm cũng sẽ phát hiện rằng: Sau khi thử bấm nút link qua lại thì lát sau các sheet cũng sẽ tự động ẩn hết mà chẳng cần phải làm gì thêm
Mới xem sơ sơ, không chịu thí nghiệm kỹ thì nó... phải vậy thôi anh à
 
Upvote 0
Cho dù tác giả không biết cái bước làm bằng tay này cũng không sao. Chỉ cần bỏ thời gian chừng 10 phút để thí nghiệm cũng sẽ phát hiện rằng: Sau khi thử bấm nút link qua lại thì lát sau các sheet cũng sẽ tự động ẩn hết mà chẳng cần phải làm gì thêm
Mới xem sơ sơ, không chịu thí nghiệm kỹ thì nó... phải vậy thôi anh à

Thí nghiệm thì cũng đòi hỏi phải suy nghĩ, quan sát và rút ra kết luận. Nhấn sheet1 rồi lại nhấn Trang chủ. Quan sát thấy sheet1 biến mất. Vậy phải "nẩy ra sáng kiến" - cái này đòi hỏi suy nghĩ - làm tương tự với sheet2. Cũng thành công nên lại tiếp tục với sheet3, sheet4, ..., sheet10.
Nhưng đã là không chịu suy nghĩ, không biết quan sát và rút ra kết luận thì làm sao biết là phải nhấn lần lượt sheet1 --> trang chủ --> sheet2 --> trang chủ --> ... --> sheet10? Không suy nghĩ mà cứ nhấn bừa thì rồi cứ nhấn mãi sheet1, sheet3, sheet4, sheet1, sheet5, sheet3, sheet1, sheet4, sheet5 ... cho tới mỏi tay, bó tay, đầu hàng
 
Upvote 0
Thí nghiệm thì cũng đòi hỏi phải suy nghĩ, quan sát và rút ra kết luận. Nhấn sheet1 rồi lại nhấn Trang chủ. Quan sát thấy sheet1 biến mất. Vậy phải "nẩy ra sáng kiến" - cái này đòi hỏi suy nghĩ - làm tương tự với sheet2. Cũng thành công nên lại tiếp tục với sheet3, sheet4, ..., sheet10.
Nhưng đã là không chịu suy nghĩ, không biết quan sát và rút ra kết luận thì làm sao biết là phải nhấn lần lượt sheet1 --> trang chủ --> sheet2 --> trang chủ --> ... --> sheet10? Không suy nghĩ mà cứ nhấn bừa thì rồi cứ nhấn mãi sheet1, sheet3, sheet4, sheet1, sheet5, sheet3, sheet1, sheet4, sheet5 ... cho tới mỏi tay, bó tay, đầu hàng
xin lỗi các bác em đang bị strees của công việc nên ko chịu suy nghĩ ... mong các bác thông cảm
e cũng biết là ko nên "ăn sẵn" nhưng tạm thời ko đủ tập trung để suy nghĩ sửa code cho ra theo ý của mình được (vì e chỉ biết copy code vào module rồi sửa 1 chút tên vùng, tên sheet ... rồi dùng assign macro cho nó chạy là xong)
1 lần nữa xl các bác ...
Và e xin bổ sung thêm vì bác hiểu sai ý em ... em chỉ tạo nút trên sheet Trang Chủ thôi các sheet còn lại ko tạo nút nào hêt,
khi ấn nút chuyển đến sheet 2 thì sẽ chuyển đến sheet 2 và vẫn hiện sheet TC , quay lại sheet TC bằng tay chứ ko bằng nút ấn,
ấn nút chuyển đến sheet 3 thì sẽ chuyển đến sheet 3 và vẫn hiện sheet TC
ý của e là các nút ấn này chỉ ở trên sheet TC thôi chứ ko có tạo nút quay lại sheet TC trên các sheet khác
 
Lần chỉnh sửa cuối:
Upvote 0
xin lỗi các bác em đang bị strees của công việc nên ko chịu suy nghĩ ... mong các bác thông cảm
e cũng biết là ko nên "ăn sẵn" nhưng tạm thời ko đủ tập trung để suy nghĩ sửa code cho ra theo ý của mình được (vì e chỉ biết copy code vào module rồi sửa 1 chút tên vùng, tên sheet ... rồi dùng assign macro cho nó chạy là xong)
1 lần nữa xl các bác ...
Và e xin bổ sung thêm vì bác hiểu sai ý em ... em chỉ tạo nút trên sheet Trang Chủ thôi các sheet còn lại ko tạo nút nào hêt,
khi ấn nút chuyển đến sheet 2 thì sẽ chuyển đến sheet 2 và vẫn hiện sheet TC , quay lại sheet TC bằng tay chứ ko bằng nút ấn,
ấn nút chuyển đến sheet 3 thì sẽ chuyển đến sheet 3 và vẫn hiện sheet TC
ý của e là các nút ấn này chỉ ở trên sheet TC thôi chứ ko có tạo nút quay lại sheet TC trên các sheet khác
Có thể đại khái là thế này, nhưng thấy nó sao sao í, file của bạn chắc nhiều sheet, hông lẽ 80 sheet thì tạo 79 nút bấm à. Híc, chắc còn phải nói nhiều
Thân
 

File đính kèm

Upvote 0
Có thể đại khái là thế này, nhưng thấy nó sao sao í, file của bạn chắc nhiều sheet, hông lẽ 80 sheet thì tạo 79 nút bấm à. Híc, chắc còn phải nói nhiều
Thân
thanks bác đúng ý e muốn làm thế này và đúng là e có 50 sheet nên muốn làm thế này cho gọn, nhưng sao click chuột phải vào nút button ko được vậy, e muốn xem cách làm thế nào
 
Upvote 0
thanks bác đúng ý e muốn làm thế này và đúng là e có 50 sheet nên muốn làm thế này cho gọn, nhưng sao click chuột phải vào nút button ko được vậy, e muốn xem cách làm thế nào

Đúng ý bạn và bạn có 50 sheet? Bạn định thết kế sheet "bàn phím" có 50 phím? Và soạn 50 SUB? Thế nếu có 100 sheet (có người đã từng có nhiều sheet hơn nữa) thì bàn phím 100 phím và 100 SUB?

Nhiều sheet thế thì có lẽ nên dùng 1 ComboBox và 1 SUB cho nó khỏe.

Cái "nút button" kia nó không phải sản phẩm của hãng Form Controls (thẻ Developer --> Insert --> mục Form Controls --> Button) mà nó là đồ của hãng ActiveX Controls (thẻ Developer --> Insert --> mục ActiveX Controls --> CommandButton)

Thao tác: Thẻ Developer --> chọn Design Mode --> phải chuột trên "nút button" --> chọn View code ...

Tôi không thiết kế bàn phím hay ComboBox và viết code cho bạn vì tôi không hứng thú gì những chuyện như thế. Ngoài ra tôi tin rằng đã có cách giải quyết trên GPE tốt hơn cái bạn gọi là "đúng ý e".
 
Upvote 0
**********************************************************
 
Lần chỉnh sửa cuối:
Upvote 0
tất nhiên là có nhiều cách rồi nhưng tạm thời cái này giúp ích cho e trước đã, khi nào rảnh thì sẽ có thể nghiên cứu trên GPE nhiều cách khác (còn bây giờ do áp lực công việc) nên cứ thế này đã. và file của e giống file vidu dưới nếu bác biết có topic nào liên quan thì chỉ dùm e với, e sẽ nghiên cứu 1 cách nghiêm túc để sản phẩm của mình tốt hơn
thanks bác
 

File đính kèm

Upvote 0
tất nhiên là có nhiều cách rồi nhưng tạm thời cái này giúp ích cho e trước đã, khi nào rảnh thì sẽ có thể nghiên cứu trên GPE nhiều cách khác (còn bây giờ do áp lực công việc) nên cứ thế này đã. và file của e giống file vidu dưới nếu bác biết có topic nào liên quan thì chỉ dùm e với, e sẽ nghiên cứu 1 cách nghiêm túc để sản phẩm của mình tốt hơn
thanks bác

Thôi, sắp hết năm rồi mà hôm nay tôi chưa làm điều thiện nào cả nên làm qua cho bạn.
Các chú ý:

1. Mỗi "nút" bạn phải gán cho 1 sheet mà nó sẽ mở. Phải có một căn cứ nào đó để có "nut" thì biết nó sẽ mở sheet nào. Có thể định nghĩa mảng 2 chiều gồm vd. 2 dòng trong đó dòng 1 là tên các nút (Rectangle 1, ...) và dòng 2 là tên các sheet tương ứng. Nhưng nếu text trên các nút đúng dạng như bạn đã nhập thì code cũng có thể đọc ra quan hệ "nút - sheet". Hiện thời tôi dùng cách 2, và như vậy text trên các nút phải có dạng như hiện thời, tức có dạng: <tên sheet không có dấu cách><dấu cách><các ký tự khác>. Bạn phải tuân thủ luật này. Nếu nhu cầu bắt phải có dấu cách trong tên sheet vd. "Du lieu bi mat" thì phải dùng cách khác, vd. cách 1.

2. Trong ThisWorkbook (Alt + F11 để vào VBE) có code
Mã:
Private Sub Workbook_Open()
    InVisible
End Sub

Private Sub InVisible()
Dim sh As Worksheet
    For Each sh In Worksheets
        Select Case sh.Name
            Case [COLOR=#ff0000]"TENKH", "CDPS", "MENU"[/COLOR]
            Case Else
                Sheets(sh.Name).Visible = xlSheetVeryHidden
        End Select
    Next
End Sub

tức khi mở tập tin thì tất cả các sheet trừ các sheet "TENKH", "CDPS", "MENU", sẽ bị ẩn.
Nếu bạn thêm sheet nào đó vào tập sheet "cố định" thì phải viết thêm vào dòng đỏ đỏ. Nếu xóa khỏi tập "cố định" thì phải xóa ở dòng đỏ đỏ. Nếu đổi tên sheet trong tập "cố định" thì cũng phải đổi tên trong dòng đỏ đỏ.

3. Chỉ khi chọn sheet mới để link thì sheet đang được link mới ẩn. Tức từ thời điểm chọn sheet nào đó để link thì luôn hiện: tất cả các sheet trong tập cố định + 1 sheet nào đó.

4. Tôi đã làm giúp bạn việc gán cho mỗi "nút" một Macro duy nhất là ShowSheet (trong Module1). Sau này nếu tập tin có thêm sheet thì bạn đặt thêm nút --> phải chuột --> Assign Macro --> chọn macro ShowSheet

5. Ý tưởng đầu tiên chưa chắc đã là ý tưởng hay nhất.

6. Mới test qua 1 lần
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom