Excel VBA Thay thế các báo cáo trường hợp vô tận bằng cách thay thế tốt hơn


1

Tôi đang điền một combobox với một hàng trong bảng tính, sau đó khi chọn mục đó trong combobox tôi muốn nó ẩn hoặc bỏ ẩn hàng đó. Nó hoạt động với các báo cáo trường hợp của tôi, nhưng làm thế nào tôi có thể làm điều này đơn giản hơn vì có quá nhiều báo cáo trường hợp cần thêm khi phạm vi là F: BO?

 Dim pick1 As String
    pick1 = UserForm1.ComboBox1.Value

Application.Columns("F:BO").Select
Application.Selection.EntireColumn.Hidden = True

         Select Case pick1
            Case Sheets(1).Range("F6").Value
                Application.Columns("F").Select
                Application.Selection.EntireColumn.Hidden = False
            Case Sheets(1).Range("G6").Value
                Application.Columns("G").Select
                Application.Selection.EntireColumn.Hidden = False
            Case Sheets(1).Range("H6").Value
                Application.Columns("H").Select
                Application.Selection.EntireColumn.Hidden = False
            Case Sheets(1).Range("I6").Value
                Application.Columns("I").Select
                Application.Selection.EntireColumn.Hidden = False
            Case Sheets(1).Range("J6").Value
                Application.Columns("J").Select
                Application.Selection.EntireColumn.Hidden = False

            Case Else
                Application.Columns("F:BO").Select
                Application.Selection.EntireColumn.Hidden = False

       End Select
    End Sub

Câu trả lời:


1

Sử dụng hàm bảng tính MATCH để tìm cột chính xác và sau đó sử dụng số cột kết quả để bỏ ẩn.

Cũng là một lưu ý, tránh sử dụng .Selectnó hiếm khi cần thiết và chỉ làm chậm mã:

Dim pick1 As String
Dim ColNum As Long
ColNum = 0

pick1 = UserForm1.ComboBox1.Value
With Worksheets("Sheet1") 'change to your sheet
    .Columns("F:BO").Hidden = True
    On Error Resume Next
        ColNum = Application.WorksheetFunction.Match(pick1, .Range("6:6"), 0)
    On Error GoTo 0

    If ColNum = 0 Then
        .Columns("F:BO").Hidden = False
    Else
        .Columns(ColNum).Hidden = False
    End If
End With

0

Tôi muốn đề xuất cho bạn một giải pháp linh hoạt hoạt động trên vale của DropDown. Đơn giản chỉ cần tạo một hộp thả xuống bất kỳ nơi nào như ví dụ trong B3 và thêm hai giá trị vào đó Có & Không. Sau đó sử dụng mã được viết dưới đây.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 And Target.Row = 3 And Target.Value = "Yes" Then

        Application.Columns("F:BO").Select
        Application.Selection.EntireColumn.Hidden = True

    Elseif Target.Column = 2 And Target.Row = 3 And Target.Value = "No" Then

        Application.Columns("F:BO").Select
        Application.Selection.EntireColumn.Hidden = False

    End If

End Sub

Lưu ý: Ngoài ra, bạn có thể sử dụng Hộp kiểm để Ẩn / Bỏ ẩn cột hoặc thông qua InputBox, bạn có thể sử dụng các cột khác nhau để Ẩn / Bỏ ẩn.

Hy vọng điều này sẽ giúp bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.