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.


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.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


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.
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.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


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 đỡ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.
Nếu không có bảng tra thì có thể làm được nhưng sẽ rất tốn công.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 đỡ
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
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ạiNế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
Private Sub CommandButton1_Click()
On Error GoTo endsub
Sheets(Cells(1, 1).Text).Activate
endsub:
End Sub


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
Đoạn code này nếu sheet bị ẩn sẽ không hiện ra
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ượngMã:Private Sub CommandButton1_Click() On Error GoTo endsub Dim s$ s = Cells(1, 1) Sheets(s).Visible = -1 Sheets(s).Activate endsub: End Sub