cách làm hiện thị các sheet khi lựa chọn một dữ liệu từ danh sách

Liên hệ QC

cuongxmen

Thành viên mới
Tham gia
12/5/09
Bài viết
14
Được thích
0
Nghề nghiệp
Giáo Viên
em đang làm một phần mềm quản lý điểm: Phần mềm đó mô tả như thế này. Nó bao gồm rất nhiều sheet mỗi một môn học là một sheet. như vậy 2 học kỳ mỗi môn học sẽ có 2 sheet ( vd: toán có sheet toan_k1, sheet toan_k2). vì vậy số sheet trên 1 workbook là rất dài, muốn tìm sheet mình muốn làm cũng mất thời gian.Cho nên ý em mới nghĩ ra 1 việc thế này: em làm một cái listbox trong list đó có học kỳ 1, học kỳ 2 và cả năm. em muốn khi em chọn học kỳ nào thì những sheet học kỳ đó hiện lên. ví dụ em chọn học kỳ 1 thì những sheet hk1 hiện lên, và những sheet ( như sheet học kỳ 2, sheet cả năm, sheet thi lại,....) sẽ bị ẩn đi. có lần em đang nhập môn toán kỳ 1 nhập xong mới biết mình nhập lộn sang toán kỳ 2. nếu làm được như vậy sẽ đỡ mất công hơn.
mọi người giúp em nha.
thank all.:-=
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
em đang làm một phần mềm quản lý điểm: Phần mềm đó mô tả như thế này. Nó bao gồm rất nhiều sheet mỗi một môn học là một sheet. như vậy 2 học kỳ mỗi môn học sẽ có 2 sheet ( vd: toán có sheet toan_k1, sheet toan_k2). vì vậy số sheet trên 1 workbook là rất dài, muốn tìm sheet mình muốn làm cũng mất thời gian.Cho nên ý em mới nghĩ ra 1 việc thế này: em làm một cái listbox trong list đó có học kỳ 1, học kỳ 2 và cả năm. em muốn khi em chọn học kỳ nào thì những sheet học kỳ đó hiện lên. ví dụ em chọn học kỳ 1 thì những sheet hk1 hiện lên, và những sheet ( như sheet học kỳ 2, sheet cả năm, sheet thi lại,....) sẽ bị ẩn đi. có lần em đang nhập môn toán kỳ 1 nhập xong mới biết mình nhập lộn sang toán kỳ 2. nếu làm được như vậy sẽ đỡ mất công hơn.
mọi người giúp em nha.
thank all.:-=

Bạn có thể chèn đoạn mã này vào sự kiện Listbox_Click. Giả sử listbox của bạn có 3 option là "k1", "k2", "k3" (k3 là cả năm). Cái này chỉ là gợi ý, tất nhiên là sẽ còn thay đổi tùy theo nhu cầu của bạn.
PHP:
Private Sub ListBox1_Click()
Dim ws As Object
Dim dk as string
dk = userform.listbox1.List(userform.listbox1.ListIndex)
For Each ws In Worksheets
    If Right(ws.Name, 2) = dk Then       'Chỗ này thay đổi tùy theo bạn kí hiệu học kì 1, học kì 2 và cả năm ra sao
        ws.Visible = True
    Else
        ws.Visible = False
    End If
Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
em không dùng
userform mà list em tạo ra là dùng Data Validation. như hình này.
mong mọi người giúp đỡ
View attachment 77120
 
Upvote 0
Nếu là dùng validation thì bạn phải có một sheet chính để lựa và sheet này luôn hiện, sau đó bạn sử dụng sự kiện change của worksheet thôi. Giả sử sheet chính để bạn chọn tên "main", các sheet kia thì là "toan_k1", "toan_k2". Bạn dùng validation tại range A1 của sheet "main". Vậy bạn chèn đoạn mã này vào
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Object
Dim dk As String
If Not Target.Address = "$A$1" Then Exit Sub
dk = Right(Range("A1").Value, 2)
For Each ws In Worksheets
    If Right(ws.Name, 2) = dk Then
        ws.Visible = True
    ElseIf ws.Name = "Main" Then
    
    Else
        ws.Visible = False
    End If
Next
End Sub
 
Upvote 0
nó bị lỗi các bạn ah, mình có gửi file đính kèm, các bạn làm gửi cho mình nhé. mình tệ vb lắm
 
Upvote 0
Mình sửa lại cho phù hợp với file của bạn đây. Bạn chèn code vào sheet1 nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Object
If Not Target.Address = "$D$2" Then Exit Sub
For Each ws In Worksheets
    If Target.Value = "3" And ws.Name = "ca_nam" Then
        ws.Visible = True
    ElseIf Right(ws.Name, 1) = CStr(Target.Value) Then
        ws.Visible = True
    ElseIf ws.Name = "Main" Then
    
    Else
        ws.Visible = False
    End If
Next
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom