VBA Ẩn cột theo điều kiện

Liên hệ QC

MeThuongNho

Thành viên thường trực
Tham gia
30/10/09
Bài viết
368
Được thích
77
Nghề nghiệp
Sale - Planning
Dear Anh/Chị,
Giúp em cái code VBA ẩn cột giúp em.
1 code chung hoặc 2 code riêng cũng được.
Mục đích : muốn khi chạy code:
1. Sẽ ẩn các cột từ C: BM với đk các cell từ C4:BM4 mà =0 sẽ ẩn.
2. Sẽ hiện ra lại các cột từ C:BM (tất cả các cột)
Cám ơn mợi người giúp đỡ.
 

File đính kèm

  • An cot.xlsx
    8.3 KB · Đọc: 71
xin bạn hướng dẫn làm với các sheet khác
Sheet đang làm: Khu vực hiển thị là sheet 3: code
2 Code trong Modules như sau:
Mã:
Sub HideColumns()
    Dim Rng As Range, Cll As Range, i As Long
    For Each Cll In Sheet3.Range("B3:HG3")
        If Cll.Value = 0 Or Len(Cll.Value) = 0 Then
            i = i + 1
            If i = 1 Then
                Set Rng = Cll
            Else
                Set Rng = Union(Rng, Cll)
            End If
        End If
    Next Cll
Rng.EntireColumn.Hidden = True
End Sub

Sub ShowColumns()
    Sheet3.Range("B3:HG3").EntireColumn.Hidden = False
End Sub
Rồi trong sheet 3 đó bạn gán cán code này cho CommandButton , Code sau:
Mã:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    If CommandButton1.Caption = "Show" Then
        Call ShowColumns
        CommandButton1.Caption = "Hide"
    Else
        Call HideColumns
        CommandButton1.Caption = "Show"
    End If
    Application.ScreenUpdating = True
End Sub
Làm tương tự cho sheet bạn muốn làm nha.
Thân!
 
Upvote 0
Sheet đang làm: Khu vực hiển thị là sheet 3: code
2 Code trong Modules như sau:
Mã:
Sub HideColumns()
    Dim Rng As Range, Cll As Range, i As Long
    For Each Cll In Sheet3.Range("B3:HG3")
        If Cll.Value = 0 Or Len(Cll.Value) = 0 Then
            i = i + 1
            If i = 1 Then
                Set Rng = Cll
            Else
                Set Rng = Union(Rng, Cll)
            End If
        End If
    Next Cll
Rng.EntireColumn.Hidden = True
End Sub

Sub ShowColumns()
    Sheet3.Range("B3:HG3").EntireColumn.Hidden = False
End Sub
Rồi trong sheet 3 đó bạn gán cán code này cho CommandButton , Code sau:
Mã:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    If CommandButton1.Caption = "Show" Then
        Call ShowColumns
        CommandButton1.Caption = "Hide"
    Else
        Call HideColumns
        CommandButton1.Caption = "Show"
    End If
    Application.ScreenUpdating = True
End Sub
Làm tương tự cho sheet bạn muốn làm nha.
Thân!
xin bạn hướng dẫn tạo lút lệnh
 
Upvote 0
Vào tab : Developer ( nếu không thấy tab này : searh google và mở ra: key: " mở thẻ Developer" chẳng hạn)
--> chọn Insert --> Chọn Commnand Button. ( đó là nút lệnh bạn cần).
:)
mình làm được rồi nhưng không thể gán 2 show và hide cùng 1 lúc vào lút lệnh được mong bạn hướng dẫn. xin cảm ơn
 
Upvote 0
Bạn gán cái code này vào Command Button đã tạo đó:
Mã:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    If CommandButton1.Caption = "Show" Then
        Call ShowColumns
        CommandButton1.Caption = "Hide"
    Else
        Call HideColumns
        CommandButton1.Caption = "Show"
    End If
    Application.ScreenUpdating = True
End Sub
 
Upvote 0

File đính kèm

  • xin hỏi cách ẩn cột khi không có dữ liệu và khi có dữ liệu nó tự hiện ra (1) (1).xlsm
    210.2 KB · Đọc: 21
Upvote 0
Upvote 0
Tự google đi bạn, cái này dễ mà. google

https://caprovn.wordpress.com/2015/03/02/tao-lenh-in-bang-macro-trong-excel/

Mình lại khuyên dùng shape thay nút bấm do áp dụng trên nhiều sheet ( nhưng phải code lại)
bạn ơi code kế tiếp của code này là gì vậy:
Sub HideFour()
Dim Rng As Range, Cll As Range, i As Long
For Each Cll In Sheet9.Range("B3:HG3")
If Cll.Value = 0 Or Len(Cll.Value) = 0 Then
i = i + 1
If i = 1 Then
Set Rng = Cll
Else
Set Rng = Union(Rng, Cll)
End If
End If
Next Cll
Rng.EntireColumn.Hidden = True
End Sub
Sub ShowFour()
Sheet9.Range("B3:HG3").EntireColumn.Hidden = False
End Sub
làm sao phải thay các chữ màu xanh chỉ cho mình với. xin cảm ơn bạn
 
Upvote 0
Cái chỗ màu xanh đó tên j cũng đc: nhưng k dc thiếu chữ Sub và dấu () sau tên code:
- Sau khi sửa tên tùy ý: ví dụ : Sub HideTVG() và ShowTVG()
thì trong code sau cũng phải sửa theo
Mã:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    If CommandButton1.Caption = "Show" Then
        Call ShowTVG
        CommandButton1.Caption = "Hide"
    Else
        Call HideTVG
        CommandButton1.Caption = "Show"
    End If
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Cái chỗ màu xanh đó tên j cũng đc: nhưng k dc thiếu chữ Sub và dấu () sau tên code:
- Sau khi sửa tên tùy ý: ví dụ : Sub HideTVG() và ShowTVG()
thì trong code sau cũng phải sửa theo
Mã:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    If CommandButton1.Caption = "Show" Then
        Call ShowTVG
        CommandButton1.Caption = "Hide"
    Else
        Call HideTVG
        CommandButton1.Caption = "Show"
    End If
    Application.ScreenUpdating = True
End Sub
Sao mình thay như vậy để áp dụng với các sheet khác lại không được nhỉ bạn. xin hướng dẫn mình với
 
Upvote 0
Cái chỗ màu xanh đó tên j cũng đc: nhưng k dc thiếu chữ Sub và dấu () sau tên code:
- Sau khi sửa tên tùy ý: ví dụ : Sub HideTVG() và ShowTVG()
thì trong code sau cũng phải sửa theo
Mã:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    If CommandButton1.Caption = "Show" Then
        Call ShowTVG
        CommandButton1.Caption = "Hide"
    Else
        Call HideTVG
        CommandButton1.Caption = "Show"
    End If
    Application.ScreenUpdating = True
End Sub
cho mình hỏi muốn dùng code cho các sheet khác chỉ càn thay đổi Sub Hide......() và Show......() là được đúng không bạn
 
Upvote 0
cho mình hỏi muốn dùng code cho các sheet khác chỉ càn thay đổi Sub Hide......() và Show......() là được đúng không bạn
Mã:
- Sau khi sửa tên tùy ý: ví dụ : Sub HideTVG() và ShowTVG()
thì trong code sau cũng phải sửa theo
Code:
Private Sub CommandButton1_Click()
   Application.ScreenUpdating = False
   If CommandButton1.Caption = "Show" Then
       Call ShowTVG
       CommandButton1.Caption = "Hide"
   Else
       Call HideTVG
       CommandButton1.Caption = "Show"
   End If
   Application.ScreenUpdating = True
End Sub
 
Upvote 0
-- 1 sheet cần 2 code Module đó là Show và Hide
-- và trong sheet đó cần code này: mình đã lặp lại mấy lần rồi.
Mã:
Private Sub CommandButton1_Click()
   Application.ScreenUpdating = False
   If CommandButton1.Caption = "Show" Then
       Call ShowTVG
       CommandButton1.Caption = "Hide"
   Else
       Call HideTVG
       CommandButton1.Caption = "Show"
   End If
   Application.ScreenUpdating = True
End Sub
Code này chỉnh sửa tên theo 2 cái tên mình tùy đặt, mình đã ví dụ ak.
 
Upvote 0
Web KT
Back
Top Bottom