sealand
Thành viên gạo cội
- Tham gia
- 16/5/08
- Bài viết
- 4,883
- Được thích
- 7,688
- Giới tính
- Nam
- Nghề nghiệp
- Kế Toán
Anh dùng Vung.SpecialCells(xlCellTypeVisible).Rows.Count e rằng không ăn thuaMình sử dụng phương thức lọc AutoFilter và sử dụng SpeacialCells để trích rút dữ liêu. Kết quả trả về không đúng với thực tế.
Nhờ các bạn kiểm tra giùm xem code đếm của Form lỗi ở đâu
Mô tả thì khó, các bạn xem trong Form giùm.
Sub THOP()
With TH.Range(TH.[A3], TH.[L65536].End(xlUp))
Me.TextBox2 = WorksheetFunction.CountIf(.Resize(, 1).Offset(, 2), Me.ComboBox1)
.AutoFilter 3, Trim(Me.ComboBox1)
Me.TextBox1 = Intersect(.Resize(, 1), .Offset(1), .SpecialCells(12).EntireRow).Count
.AutoFilter
End With
End Sub
Sub Test()
MsgBox Selection.Rows.Count
End Sub
Set rg1 = Range("C4:C" & [C65000].End(xlUp).Row).SpecialCells(12)
Me.TextBox1 = rg1.Count
Sub THOP()
Dim i, dg
Dim rg, rg1 As Range
i = TH.[a56536].End(xlUp).Row
On Error Resume Next
With TH
.Range("A3:L" & i).AutoFilter
dg = Application.WorksheetFunction.CountIf(TH.Range("C4:C" & i), Me.ComboBox1)
.Range("A3:L" & i).AutoFilter Field:=3, Criteria1:=Trim(Me.ComboBox1)
Set rg = .AutoFilter
Set rg1 = Range("C4:C" & [C65000].End(xlUp).Row).SpecialCells(12)
Me.TextBox1 = rg1.Count
Me.TextBox2 = dg
.Range("A3:L" & i).AutoFilter
rg.Select
End With
Set rg = Nothing
set rg1 = nothing
End Sub
Mình sử dụng phương thức lọc AutoFilter và sử dụng SpeacialCells để trích rút dữ liêu. Kết quả trả về không đúng với thực tế.
Nhờ các bạn kiểm tra giùm xem code đếm của Form lỗi ở đâu
Mô tả thì khó, các bạn xem trong Form giùm.
Me.TextBox1 = rg.Cells.Count / rg.Columns.Count
Anh Set Rg như vậy là.. sai quá trời luôn anh ơi!Có 2 điều kỳ lạ nữa đối với file này:
-Các bạn để ý 2 đoạn tô màu đỏ:
Set rg = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows. _
Count - 1).SpecialCells(xlCellTypeVisible)
Me.TextBox1 = rg.Rows.Count
Giá trị trả về của 2 đoạn này phải bằng nhau chứ? Nhưng thực tế ở đây lại khác nhau và nó thay đổi mà mình để ý không ra quy luật
.
Sub Test()
Selection.Resize(2).Select
End Sub
Sub Test()
Dim Rg As Range
With Selection
Set Rg = Intersect(.Cells, .Offset(1))
Rg.Select
End With
End Sub
Sub Test()
Dim Rg As Range
With ActiveSheet.AutoFilter.Range
Set Rg = Intersect(.Cells, .Offset(1)).SpecialCells(12)
Rg.Select
End With
End Sub
Cần hay không còn tùy trường hợp...Cám ơn Anh NDU
nhân tiện cho em hỏi có thực sự cần thiết set trả Rg = nothing không ah?
Dim Rg As Range
Sub Test()
.......
End Sub
Cái topic anh giới thiệu về SpecialCells của bác SA_DQ em vừa xem quaNdu à, dùng Intersect kết quả y hệt đoạn code của bác Sa_DQ nhưng nó gọn hơn thôi.
MsgBox ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count, , Rng.Address
Sub Test()
With ActiveSheet.UsedRange
.SpecialCells(xlCellTypeVisible).Select
MsgBox .SpecialCells(xlCellTypeVisible).Rows.Count
End With
End Sub
Sub Test()
With ActiveSheet.UsedRange
.SpecialCells(xlCellTypeVisible).Select
With Intersect(.Resize(, 1), .SpecialCells(xlCellTypeVisible))
MsgBox .Cells.Count
End With
End With
End Sub