Dùng VBA để xác định và ẩn cột (1 người xem)

  • Thread starter Thread starter MinhKhai
  • Ngày gửi Ngày gửi
Liên hệ QC

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

MinhKhai

Giải pháp Ếc-xào
Tham gia
16/4/08
Bài viết
941
Được thích
572
Chào mọi người. Em có yêu cầu như sau:
Khi thay đổi giá trị tại ô B4, chọn giá trị nào thì các các cột khác bên phải bị ẩn, ngoại trừ các cột của tháng trong ô B4 là không bị ẩn
VD: Nếu tại ô B4 chọn Tháng 3/2018 thì các cột có địa chỉ C:CU sẽ bị ẩn ngoại trừ cột CK:EG
Việc sử dụng câu lệnh:
ActiveSheet.Columns("C:UC").Hidden = True
ActiveSheet.Columns("CK:EG").Hidden = False
tuy đơn giản, nhưng việc xác định ô nào cần hiện so với giá trị của ô B4 là rất thủ công, tiềm ẩn nhiều nguy cơ sai lệch.
Vậy bác nào có cách xác định ô cần hiện không để thực hiện việc ẨN/HIỆN đúng yêu cầu
Xin cảm ơn
 

File đính kèm

Chào mọi người. Em có yêu cầu như sau:
Khi thay đổi giá trị tại ô B4, chọn giá trị nào thì các các cột khác bên phải bị ẩn, ngoại trừ các cột của tháng trong ô B4 là không bị ẩn
VD: Nếu tại ô B4 chọn Tháng 3/2018 thì các cột có địa chỉ C:CU sẽ bị ẩn ngoại trừ cột CK:EG
Việc sử dụng câu lệnh:
ActiveSheet.Columns("C:UC").Hidden = True
ActiveSheet.Columns("CK:EG").Hidden = False
tuy đơn giản, nhưng việc xác định ô nào cần hiện so với giá trị của ô B4 là rất thủ công, tiềm ẩn nhiều nguy cơ sai lệch.
Vậy bác nào có cách xác định ô cần hiện không để thực hiện việc ẨN/HIỆN đúng yêu cầu
Xin cảm ơn
Các tháng có số cột không bằng nhau hả bạn? Code này mình làm cho trường hợp các tháng có cùng số cột, bạn tự chỉnh theo số liệu của bạn
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer, startcol, endcol As String
    If Target.Address = "$B$4" Then
        For i = 3 To 549
            If Cells(5, i) = Cells(4, 2) Then
                Columns("C:UC").Hidden = True
                startcol = Split(Cells(1, i).Address, "$")(1)
                endcol = Split(Cells(1, i + 45).Address, "$")(1)
                Columns(startcol & ":" & endcol).Hidden = False
                Cells(8, i).Select
                Exit For
            End If
        Next
    End If
End Sub
 
Upvote 0
Các tháng có số cột không bằng nhau hả bạn? Code này mình làm cho trường hợp các tháng có cùng số cột, bạn tự chỉnh theo số liệu của bạn
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer, startcol, endcol As String
    If Target.Address = "$B$4" Then
        For i = 3 To 549
            If Cells(5, i) = Cells(4, 2) Then
                Columns("C:UC").Hidden = True
                startcol = Split(Cells(1, i).Address, "$")(1)
                endcol = Split(Cells(1, i + 45).Address, "$")(1)
                Columns(startcol & ":" & endcol).Hidden = False
                Cells(8, i).Select
                Exit For
            End If
        Next
    End If
End Sub
Cảm ơn bạn @quanluu1989 . Bạn đã hiểu đúng ý của tôi. Tôi cứ đinh ninh là mình có nêu vấn đề các tháng có số cột không bằng nhau, thế mà lại bỏ sót. Code của bạn đã chạy và dễ hiểu.
Một lần nữa cảm ơn sự nhiệt tình của bạn
 
Upvote 0
Web KT

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

Back
Top Bottom