Hiện sheet khi thỏa mãn điều kiện trong một ô (1 người xem)

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

nguyet1982db

Thành viên chính thức
Tham gia
10/12/14
Bài viết
92
Được thích
4
Cách ẩn hiện sheet trong workbook thì em đã làm được rồi. Tuy nhiên để hiện hoặc ẩn một sheet khi thỏa mãn điều kiện trong một ô của sheet khác thì em tìm trên diễn đàn không có. Rất mong các thầy chỉ bảo theo file đính kèm.
 

File đính kèm

Lần chỉnh sửa cuối:
Cách ẩn hiện sheet trong workbook thì em đã làm được rồi. Tuy nhiên để hiện hoặc ẩn một sheet khi thỏa mãn điều kiện trong một ô của sheet khác thì em tìm trên diễn đàn không có. Rất mong các thầy chỉ bảo theo file đính kèm.

Bạn tham khảo bài này:
http://www.giaiphapexcel.com/forum/showthread.php?37055-Tạo-nút-nhấn-để-link-đến-các-sheet
Làm đúng theo hướng dẫn sẽ đáp ứng được nhu cầu của bạn đấy
 
Upvote 0
Bạn tham khảo bài này:
http://www.giaiphapexcel.com/forum/showthread.php?37055-Tạo-nút-nhấn-để-link-đến-các-sheet
Làm đúng theo hướng dẫn sẽ đáp ứng được nhu cầu của bạn đấy
Bài này thì mình đã hiểu tuy nhiên yêu cầu của mình lại khác hơn. Ví dụ sheet1 tại ô A1 có điều kiện là "tìm" thì khi bấm buttom1 sẽ hiện ra sheet2(TIM); nếu ô A1 có điều kiện là "tới" bấm buttom1 thì sẽ hiện sheet3(TOI); tại sheet2(TIM) và sheet3(TOI) có một buttom bấm vào sẽ trở lại sheet1.
 
Upvote 0
Không có bác nào giúp em à. trên bài http://www.giaiphapexcel.com/forum/showthread.php?37055-Tạo-nút-nhấn-để-link-đến-các-sheet/page9 cũng có người hỏi nhưng không thấy ai trả lời. Hay trong VB không làm được điều này.
Mã:
Sub abc()
    Dim i&
    i = Application.WorksheetFunction.Match(Cells(1, 1), Columns(3), 0) + 1
    Sheets(i).Activate
End Sub
Sub back()
    Sheets(1).Activate
End Sub
Sub abc gắn với nút bấm ở sheet1. Sub back gắn với 2 nút bấm ở các sheet kia. Đổi file thành xlsm.
 
Upvote 0
Mã:
Sub abc()
    Dim i&
    i = Application.WorksheetFunction.Match(Cells(1, 1), Columns(3), 0) + 1
    Sheets(i).Activate
End Sub
Sub back()
    Sheets(1).Activate
End Sub
Sub abc gắn với nút bấm ở sheet1. Sub back gắn với 2 nút bấm ở các sheet kia. Đổi file thành xlsm.

Với Macro trên thì tìm đến các sheet thỏa mãn điều kiện tại ô A1, mà các sheet đó lằm liền kề với sheet1 (dòng code
Columns(3), 0) + 1). Tuy nhiên nếu các sheet(TIM) hoặc sheet(TOI)không lằm liền kề phía sau sẽ không hiện đúng. Bác có cao kiến gì giải quyết được vấn đề là các sheet(TIM),sheet(TOI) lằm ở bất kỳ đâu hoặc các sheet đó đang chế độ xlSheetHidden cũng tìm và hiện ra đúng không bác.
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu muốn nằm bất kỳ đâu cũng được nhưng tên sheet phải trùng với giá trị trong ô hoặc có 1 bảng tra tên sheet. File của bạn tên sheet là "toi" nhưng bảng tra là "tới" nên chỉ có thể làm dựa vào thứ tự sheet thôi.
 
Upvote 0
Nếu muốn nằm bất kỳ đâu cũng được nhưng tên sheet phải trùng với giá trị trong ô hoặc có 1 bảng tra tên sheet. File của bạn tên sheet là "toi" nhưng bảng tra là "tới" nên chỉ có thể làm dựa vào thứ tự sheet thôi.
Bác viết cho em cái code với ô A1 trùng với sheet hiện (kể cả sheet đã bị ẩn nhé bác), em sẽ dùng hàm để gán chữ "tới" thành chữ "toi" rồi hiện theo chữ đã gán. Rất mong bạn giúp đỡ
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ơi thế không có cách nào à ví dụ như gán ô có chữ "tới" với một từ là nào đó "TOI" chẳng hạn thì sẽ ra sheet(TOI) hoặc chữ "tìm" gán với từ TIM thì ra sheet(TIM). Rất mong bạn giúp đỡ
Nếu không có bảng tra thì có thể làm được nhưng sẽ rất tốn công.
Cách dễ nhất là bạn lập 1 bảng tra, ví dụ: cột A link đến cột B; cột B chứa "TỚI", "TÌM"; cột C chứa TOI, TIM. Sau đó dùng VLOOKUP để dò tìm tên sheet trong cột C. Dùng vòng lặp For each sh in sheets để duyệt tất cả các sheet, nếu sh.name trùng với kết quả VLOOKUP thì sh.activate.
Mã:
Sub abc()
dim sh as worksheet
For each sh in sheets
If sh.name=range("A1") then
sh.activate
exit sub
End if
Next
End sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu không có bảng tra thì có thể làm được nhưng sẽ rất tốn công.
Cách dễ nhất là bạn lập 1 bảng tra, ví dụ: cột A link đến cột B; cột B chứa "TỚI", "TÌM"; cột C chứa TOI, TIM. Sau đó dùng VLOOKUP để dò tìm tên sheet trong cột C. Dùng vòng lặp For each sh in sheets để duyệt tất cả các sheet, nếu sh.name trùng với kết quả VLOOKUP thì sh.activate.
Cái này đâu cần phải vòng lập. Cứ Set wks = Sheets("Tên sheet gì gì đó") ---> Nếu không báo lỗi có nghĩa là trong workbook có tồn tại thằng sheet gì gì đó và ngược lại
 
Upvote 0
Cái này đâu cần phải vòng lập. Cứ Set wks = Sheets("Tên sheet gì gì đó") ---> Nếu không báo lỗi có nghĩa là trong workbook có tồn tại thằng sheet gì gì đó và ngược lại
Mã:
Private Sub CommandButton1_Click()
On Error GoTo endsub
Sheets(Cells(1, 1).Text).Activate
endsub:
End Sub
 
Upvote 0
Cái này đâu cần phải vòng lập. Cứ Set wks = Sheets("Tên sheet gì gì đó") ---> Nếu không báo lỗi có nghĩa là trong workbook có tồn tại thằng sheet gì gì đó và ngược lại

Các bác làm thực tập trên file em đính kèm cho em rõ hơn, vì em là new members mà. Thank các bác nhiều
 

File đính kèm

Upvote 0
Mã:
Private Sub CommandButton1_Click()
    On Error GoTo endsub
    Dim s$
    s = Cells(1, 1)
    Sheets(s).Visible = -1
    Sheets(s).Activate
endsub:
End Sub
Cám ơn anh nhiều em đã làm được. Chúc anh và gia đình xang năm mới An khang, Thịnh Vượng
Có gì khó khăn các Anh giúp em nhé. Thân
 
Upvote 0
Đáng lẽ phải là On error goto "code báo không có sheet" - bài #11 có nói chuyện báo lỗi này mà!
lý do: bấm nút xong không thấy gì cả, làm sao biết được do tên sheet sai hay do trục trặc gì khác?
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom