Làm hiện nhiều sheet khi các ô có dữ liệu, nếu thiếu 1 ô sheet vẫn bị ẩn (1 người xem)

Liên hệ QC

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

chidung2009

Thành viên hoạt động
Tham gia
12/9/12
Bài viết
123
Được thích
8
Mình đã tạo macro, nhưng mới học nên còn gà mờ lắm.

Mã:
Sub UnhideSheet()
For Each bang In ThisWorkbook.Worksheets
    bang.Visible = True
Next bang
End Sub

Nhưng không biết làm thế nào để chuyển macro này thành code sự kiện cho Sheet.
Thứ 2: khi nhập đủ dữ liệu vào các ô như A1, D5, B6 thì các Sheet mới hiện. Còn nếu thiếu 1 trong những ô đó Sheet sẽ ko hiện ra.

Mình làm hai hôm nay rồi mà không đc. Anh chị nào giúp minh với.
 
Mình đã tạo macro, nhưng mới học nên còn gà mờ lắm.

Mã:
Sub UnhideSheet()
For Each bang In ThisWorkbook.Worksheets
    bang.Visible = True
Next bang
End Sub

Nhưng không biết làm thế nào để chuyển macro này thành code sự kiện cho Sheet.
Thứ 2: khi nhập đủ dữ liệu vào các ô như A1, D5, B6 thì các Sheet mới hiện. Còn nếu thiếu 1 trong những ô đó Sheet sẽ ko hiện ra.

Mình làm hai hôm nay rồi mà không đc. Anh chị nào giúp minh với.
Bạn đưa file của bạn lên đây. Trường hợp này không nên sử dụng code sự kiện cho Sheet. Ví dụ Sheet đó đang ẩn rồi, bạn không hiện nó lên lấy gì để mà nhập vô đây. Nên xài 1 sub cho tất cả các sheet, sheet nào không đủ điều kiện thì ẩn nó đi. Muốn hiện lại để nhập cho những lần sau thì lại hiện lại đồng loạt.
 
Upvote 0
Mình đã tạo macro, nhưng mới học nên còn gà mờ lắm.

Mã:
Sub UnhideSheet()
For Each bang In ThisWorkbook.Worksheets
    bang.Visible = True
Next bang
End Sub

Nhưng không biết làm thế nào để chuyển macro này thành code sự kiện cho Sheet.
Thứ 2: khi nhập đủ dữ liệu vào các ô như A1, D5, B6 thì các Sheet mới hiện. Còn nếu thiếu 1 trong những ô đó Sheet sẽ ko hiện ra.

Mình làm hai hôm nay rồi mà không đc. Anh chị nào giúp minh với.
Code đại loại thế này (sử dụng cho Sheet1 nhé):
[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
For i = 2 To ThisWorkbook.Sheets.Count
Sheets(i).Visible = (WorksheetFunction.CountA([A1], [D5], [B6]) = 3)
Next
End Sub[/GPECODE]
 
Upvote 0
Code đại loại thế này (sử dụng cho Sheet1 nhé):
[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
For i = 2 To ThisWorkbook.Sheets.Count
Sheets(i).Visible = (WorksheetFunction.CountA([A1], [D5], [B6]) = 3)
Next
End Sub[/GPECODE]

Cảm ơn bạn về Code này. cho mình hỏi có thể chuyển ngược lại không. ví dụ như các ô [A1], [D5], [B6] có dữ liệu thì hiện sheet, thiếu thì các sheet sẽ ẩn./-*+/
 
Upvote 0
Cảm ơn bạn về Code này. cho mình hỏi có thể chuyển ngược lại không. ví dụ như các ô [A1], [D5], [B6] có dữ liệu thì hiện sheet, thiếu thì các sheet sẽ ẩn./-*+/
Nó đang là như thế mà, có gì mâu thuẫn nhỉ? Bạn thử xóa dữ liệu 1 trong 3 ô đó của sheet1 xem nào.
Hay ý của bạn là không phải dựa vào sheet1 mà sheet nào cũng cần điều kiện 3 ô này có dữ liệu nhỉ?
 
Upvote 0
Nó đang là như thế mà, có gì mâu thuẫn nhỉ? Bạn thử xóa dữ liệu 1 trong 3 ô đó của sheet1 xem nào.
Hay ý của bạn là không phải dựa vào sheet1 mà sheet nào cũng cần điều kiện 3 ô này có dữ liệu nhỉ?
Ý của mình dựa vào sheel 1 thôi. Điều kiện 3 ô này cùng có dữ liệu thì mới hiện các sheel
Code trên bạn làm là: 1hiếu 1 ô thì hiện các sheel. đủ thì ẩn.
 
Upvote 0
Ý của mình dựa vào sheel 1 thôi. Điều kiện 3 ô này cùng có dữ liệu thì mới hiện các sheel
Code trên bạn làm là: 1hiếu 1 ô thì hiện các sheel. đủ thì ẩn.
Vô lý nhỉ, biểu thức WorksheetFunction.CountA([A1], [D5], [B6]) = 3 sẽ là TRUE nếu 3 ô này đều có dữ liệu, ngược lại (thiếu ô) thì sẽ trả về FALSE. Tôi thử thấy bình thường mà.
 
Upvote 0
Web KT

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

Back
Top Bottom