Xin code ẩn dòng có điều kiện (1 người xem)

Liên hệ QC

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

quoc nhat

Thành viên tiêu biểu
Tham gia
8/3/12
Bài viết
567
Được thích
43
Nghề nghiệp
cán bộ ngành y tế
Chào các anh chị
Xin giúp em cái code ẩn dòng có điều kiện
Trong file có 2 sheet:
Sheet "danhmuc" và sheet "thekho" . một số cột ở sheet thekho em dùng công thức = sheet"danhmuc"
ở sheet thekho các dòng có đánh dấu màu vàng nếu copy mà bằng 0 (có nghĩa là chưa thêm vào bên sheet "danhmuc" ) thì giúp em ẩn dòng đó luôn.
em cảm ơn nhiều.
 

File đính kèm

PHP:
Option Explicit
Sub HiddenNullValueRows()
 Dim Rng As Range, Cls As Range
  
 Sheets("TheKho").Select
 Set Rng = Range([b10], [b10].End(xlDown))
 For Each Cls In Rng
    If Cls.Value = 0 Then
        Cls.EntireRow.Hidden = True
    End If
 Next Cls
End Sub
 
Upvote 0
PHP:
option explicit
sub hiddennullvaluerows()
 dim rng as range, cls as range
  
 sheets("thekho").select
 set rng = range([b10], [b10].end(xldown))
 for each cls in rng
    if cls.value = 0 then
        cls.entirerow.hidden = true
    end if
 next cls
end sub
cảm ơn vì đã giúp đỡ
em làm được rồi
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn copy toàn bộ mã code vô bộ nhớ đệm;

Mở trang tính nào đó lên & nhấn {ATL}+{F11} để thấy cửa số MVB;

Trên thanh menu bạn vô Insert & chọn hàng Module;
Dán những gì trong bộ nhớ vô đó là được.

[thongbao]Với cho em hỏi thêm nếu mà copy có dữ liệu thì hiện row (thekho) như thế nào [/thongbao]
Chưa hiểu bạn muốn nói về gì hay dượng luôn nữa!
 
Upvote 0
Bạn copy toàn bộ mã code vô bộ nhớ đệm;
Mở trang tính nào đó lên & nhấn {ATL}+{F11} để thấy cửa số MVB;
Trên thanh menu bạn vô Insert & chọn hàng Module;
Dán những gì trong bộ nhớ vô đó là được.
[thongbao]Với cho em hỏi thêm nếu mà copy có dữ liệu thì hiện row (thekho) như thế nào [/thongbao]
Chưa hiểu bạn muốn nói về gì hay dượng luôn nữa!
Em nghĩ ý của bạn ấy là khi chèn thêm Danh mục, theo công thức nó sẽ nằm trong những dòng đã Hide, thêm bước Unhide thì phải.
Mã:
Range("B10").CurrentRegion.EntireRow.Hidden = False
[gpecode=vb]
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim Rng As Range, Cls As Range

Sheets("TheKho").Select
Set Rng = Range([b10], [b10].End(xlDown))
Range("B10").CurrentRegion.EntireRow.Hidden = False
For Each Cls In Rng
If Cls.Value = 0 Then
Cls.EntireRow.Hidden = True
End If
Next Cls
Application.ScreenUpdating = True
End Sub
[/gpecode]
Đã update, sry bác Sa vì chưa test đã up.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em nghĩ ý của bạn ấy là khi chèn thêm Danh mục, theo công thức nó sẽ nằm trong những dòng đã Hide, thêm bước Unhide thì phải.
Mã:
Range("B10").CurrentRegion.EntireRow.Hidden = False
[gpecode=vb]
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim Rng As Range, Cls As Range

Sheets("TheKho").Select
Set Rng = Range([b10], [b10].End(xlDown))
Range("B10").CurrentRegion.EntireRow.Hidden = False
For Each Cls In Rng
If Cls.Value = 0 Then
Cls.EntireRow.Hidden = True
End If
Next Cls
Application.ScreenUpdating = True
End Sub
[/gpecode]
Đã update, sry bác Sa vì chưa test đã up.
Thử rồi nó chưa UnHidden. Anh có thể viết 1 cái nút CommandButton vừa show vừa hide được chứ. Em viết thử nảy giờ mà nó chưa hide=False nữa.
 
Lần chỉnh sửa cuối:
Upvote 0
Thử rồi nó chưa UnHidden. Anh có thể viết 1 cái nút CommandButton vừa show vừa hide được chứ. Em viết thử nảy giờ mà nó chưa hide=False nữa.
OK, đang tập viết nên code luộm thuộm quá, híc ...
[gpecode=vb]
Private Sub CdB1_Click()
Dim Rng As Range, Cls As Range

Sheets("TheKho").Select
Set Rng = Range([b10], [b10].End(xlDown))
If Me.CdB1.Caption = "Hide" Then

Me.CdB1.Caption = "Show"
For Each Cls In Rng
If Cls.Value = 0 Then
Cls.EntireRow.Hidden = True
End If
Next Cls
Else
Me.CdB1.Caption = "Hide"
Range("B10").CurrentRegion.EntireRow.Hidden = False
End If
End Sub[/gpecode]
 

File đính kèm

Upvote 0
OK, đang tập viết nên code luộm thuộm quá, híc ...
[gpecode=vb]
Private Sub CdB1_Click()
Dim Rng As Range, Cls As Range

Sheets("TheKho").Select
Set Rng = Range([b10], [b10].End(xlDown))
If Me.CdB1.Caption = "Hide" Then

Me.CdB1.Caption = "Show"
For Each Cls In Rng
If Cls.Value = 0 Then
Cls.EntireRow.Hidden = True
End If
Next Cls
Else
Me.CdB1.Caption = "Hide"
Range("B10").CurrentRegion.EntireRow.Hidden = False
End If
End Sub[/gpecode]
1) Có thể bỏ câu này:
Thêm
Application.ScreenUpdating = False
ở đầu code, và
Application.ScreenUpdating = True
ở cuối để khi ẩn, màn hình đỡ nhảy cà tưng
Thân
 
Upvote 0
Chào các anh chị
Xin giúp em cái code ẩn dòng có điều kiện
Trong file có 2 sheet:
Sheet "danhmuc" và sheet "thekho" . một số cột ở sheet thekho em dùng công thức = sheet"danhmuc"
ở sheet thekho các dòng có đánh dấu màu vàng nếu copy mà bằng 0 (có nghĩa là chưa thêm vào bên sheet "danhmuc" ) thì giúp em ẩn dòng đó luôn.
em cảm ơn nhiều.

Bạn thử món "giả cầy" này xem: nó sẽ ẩn - hiện các dòng có giá trị = 0 khi bạn chạy code, tốc độ khá nhanh vì code không dùng vòng lặp.
Mã:
Sub Macro1()
    On Error Resume Next
    If [b10].End(4) > 0 Then
        Range([b10], [b65000]).EntireRow.Hidden = False
    Else
        Sheets("Thekho").Range([b10], [b10].End(4)).Copy
        [iv10].PasteSpecial (3)
        With Range([iv10], [iv65000].End(3))
            .Value = .Value
            .Replace 0, ""
            .SpecialCells(4).EntireRow.Hidden = True
            .Clear
        End With
    End If
    ActiveWindow.ScrollColumn = 1
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
OK, đang tập viết nên code luộm thuộm quá, híc ...
Anh LeonguyenZ có thể sửa lại vậy nhìn cho nó gọn cũng được mà code vậy là tốt quá rồi.

[GPECODE=vb]
Private Sub CdB1_Click()
Dim Rng As Range, Cls As Range
Dim check As Boolean
check = CdB1.Caption = "Hide"
Set Rng = Range([b10], [b10].End(xlDown))
If check Then

For Each Cls In Rng
If Cls.Value = 0 Then
Cls.EntireRow.Hidden = True
End If
Next Cls
Else

Range("B10").CurrentRegion.EntireRow.Hidden = False
End If
CdB1.Caption = IIf(check, "Show", "Hide")
End Sub


[/GPECODE]

Bạn thử món "giả cầy" này xem: nó sẽ ẩn - hiện các dòng có giá trị = 0 khi bạn chạy code, tốc độ khá nhanh vì code không dùng vòng lặp.
Nhớ không lầm đây là món đặc sản của Chú TrungChinhs mà nên tốc độc thì khỏi phải nói
 
Upvote 0
Anh LeonguyenZ có thể sửa lại vậy nhìn cho nó gọn cũng được mà code vậy là tốt quá rồi.

[GPECODE=vb]
Private Sub CdB1_Click()
Dim Rng As Range, Cls As Range
Dim check As Boolean
check = CdB1.Caption = "Hide"
Set Rng = Range([b10], [b10].End(xlDown))
If check Then

For Each Cls In Rng
If Cls.Value = 0 Then
Cls.EntireRow.Hidden = True
End If
Next Cls
Else

Range("B10").CurrentRegion.EntireRow.Hidden = False
End If
CdB1.Caption = IIf(check, "Show", "Hide")
End Sub


[/GPECODE]


Nhớ không lầm đây là món đặc sản của Chú TrungChinhs mà nên tốc độc thì khỏi phải nói
Em đã chỉnh sử code và nó như thế này
[GPECODE=vb]
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim Rng As Range, Cls As Range
Set Rng = Sheet5.Range("b10:b214")
For Each Cls In Rng
If Cls.Value = 0 Then
Cls.EntireRow.Hidden = True
Else
Cls.EntireRow.Hidden = False
End If
Next Cls
Application.ScreenUpdating = True
End Sub
Cảm ơn tất cả mọi người


[/GPECODE]
 
Upvote 0
Bạn thử món "giả cầy" này xem: nó sẽ ẩn - hiện các dòng có giá trị = 0 khi bạn chạy code, tốc độ khá nhanh vì code không dùng vòng lặp.
Mã:
Sub Macro1()
    On Error Resume Next
    If [b10].End(4) > 0 Then
        Range([b10], [b65000]).EntireRow.Hidden = False
    Else
        Sheets("Thekho").Range([b10], [b10].End(4)).Copy
        [iv10].PasteSpecial (3)
        With Range([iv10], [iv65000].End(3))
            .Value = .Value
            .Replace 0, ""
            .SpecialCells(4).EntireRow.Hidden = True
            .Clear
        End With
    End If
    ActiveWindow.ScrollColumn = 1
End Sub

Sao mình chạy code nó ẩn đòng thì ok rồi, nhưng còn hiện ra những dòng bị ẩn thì sao hả anh
 
Upvote 0
Mình gởi file ở bài #9
End(4), End(3) là cái gì khó nhớ quá.
Tự mình viết mình hiểu, người khác không nhớ cái 3,4... là gì thì thua.
Thử thay cái [B10].end(4) của bạn thành như vầy xem sao:
(B11 trống, chắc nó hổng chịu số 4 .Híc!)
PHP:
Sheets("Thekho").Range([b10], [b65536].End(xlUp)).Copy
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom