Ẩn Wooksheet theo điều kiện

Liên hệ QC

duong22000

Thành viên thường trực
Tham gia
8/5/13
Bài viết
322
Được thích
23
Em có 1 tập tin như sau: 1 sheet ("tenlop"): nhập tên lớp trong bảng (từ ô D11: G11)
Các bác sĩ cho biết thêm: Và đoạn mã chạy để đổi tên bảng thành các lớp tương ứng với tên các lớp
Mã:
 Sub Doiten_lop ()
'Khoi6
Sheet2.Name = Sheet1.Range ("D11")
Sheet3.Name = Sheet1.Range ("D12")
Sheet4.Name = Sheet1.Range ("D13")
Sheet5.Name = Sheet1.Range ("D14")

'Khoi7
Sheet6.Name = Sheet1.Range ("e11")
Sheet7.Name = Sheet1.Range ("e12")
Sheet8.Name = Sheet1.Range ("e13")
Sheet9.Name = Sheet1.Range ("e14")

'Khoi8
Sheet10.Name = Sheet1.Range ("f11")
Sheet11.Name = Sheet1.Range ("f12")
Sheet12.Name = Sheet1.Range ("f13")
Sheet13.Name = Sheet1.Range ("f14")

'Khoi9
Sheet14.Name = Sheet1.Range ("g11")
Sheet15.Name = Sheet1.Range ("g12")
Sheet16.Name = Sheet1.Range ("g13")
Sheet17.Name = Sheet1.Range ("g14")

End Sub [/ CODE]
Bài đã được tự động gộp:

Các bác sĩ cho biết thêm: Nhưng có thể số lớp sẽ thay đổi, ví dụ khối 6, 7, 8,9 chỉ có 3 lớp (tức là vùng dữ liệu D14: G14 là trống) thì các sheet tương ứng với các lớp không có dữ liệu tại vùng D11: G14 sẽ ẩn đi. Ngược lại khi ô dữ liệu trong bảng D11: G14 có dữ liệu, thì các sheet tương ứng hiện lai
Các bác sĩ cho biết thêm: Em xin cảm ơn các bác ạ!
 
EM XI GỬI FILE VÍ DỤ MẪU
 

File đính kèm

  • mau.xlsm
    28.4 KB · Đọc: 3
Em có 1 tập tin như sau: 1 sheet ("tenlop"): nhập tên lớp trong bảng (từ ô D11: G11)
Các bác sĩ cho biết thêm: Và đoạn mã chạy để đổi tên bảng thành các lớp tương ứng với tên các lớp
Mã:
 Sub Doiten_lop ()
'Khoi6
Sheet2.Name = Sheet1.Range ("D11")
Sheet3.Name = Sheet1.Range ("D12")
Sheet4.Name = Sheet1.Range ("D13")
Sheet5.Name = Sheet1.Range ("D14")

'Khoi7
Sheet6.Name = Sheet1.Range ("e11")
Sheet7.Name = Sheet1.Range ("e12")
Sheet8.Name = Sheet1.Range ("e13")
Sheet9.Name = Sheet1.Range ("e14")

'Khoi8
Sheet10.Name = Sheet1.Range ("f11")
Sheet11.Name = Sheet1.Range ("f12")
Sheet12.Name = Sheet1.Range ("f13")
Sheet13.Name = Sheet1.Range ("f14")

'Khoi9
Sheet14.Name = Sheet1.Range ("g11")
Sheet15.Name = Sheet1.Range ("g12")
Sheet16.Name = Sheet1.Range ("g13")
Sheet17.Name = Sheet1.Range ("g14")

End Sub [/ CODE]
Bài đã được tự động gộp:

Các bác sĩ cho biết thêm: Nhưng có thể số lớp sẽ thay đổi, ví dụ khối 6, 7, 8,9 chỉ có 3 lớp (tức là vùng dữ liệu D14: G14 là trống) thì các sheet tương ứng với các lớp không có dữ liệu tại vùng D11: G14 sẽ ẩn đi. Ngược lại khi ô dữ liệu trong bảng D11: G14 có dữ liệu, thì các sheet tương ứng hiện lai
Các bác sĩ cho biết thêm: Em xin cảm ơn các bác ạ!
Nếu có 5 lớp mỗi khối thì sao?
 
Nếu có 5 lớp mỗi khối thì sao?
5 Lớp, 6 lớp hay nhiều hơn nữa thì do mình tạo cái bảng dữ liệu D11:G.............
ở đây mình ví dụ vùng nhập liệu D11:G14 ( chỉ nhập tối đa 4 lớp) nếu nhiều lớp hơn thì mình lại chỉnh bảng và code để cho phù hợp
 
"Bác sĩ" ở đây là nói ai vậy? Bác sĩ trong bệnh viện của bạn phải không?

Dim kSheets(6 To 9) ' nhiều hơn 4 lớp mõi khối thì thay ở đây, số lớp mối khối kkhông nhất thiết phải bằng nhau
kSheets(6) = VBA.Array( Sheet2, Sheet3, Sheet4, Sheet5)
kSheet2(7) = VBA.Array(...)
...
Dim kNames(6 To 9)
kNames(6) = VBA.Array( "D11", "D12", "D13", "D14")
kNames(7) = ...
...
' Lưu ý là dữ liệu trong sheet1 phải đúng và phù hợp.
' Không phù hợp thì code sẽ chết giữa chùng và không biết đường để sửa.
With Sheet1
For i = LBound(kSheets) To UBound(kSheets)
For j = 0 To UBound(kSheets(i))
kSheets(i)(j).Name = .Range(kNames(i)(j)).Value
Next i
End With
 
Web KT
Back
Top Bottom