dvh.hy.9902
Thành viên hoạt động
- Tham gia
- 27/3/12
- Bài viết
- 123
- Được thích
- 9
Trình độ của em chỉ có vậy, thầy có tuyệt chiêu chia sẻ em học hỏi với.
Ra là vậy, quay lại macro chắc xong phải không? đáng học hỏi.Tuyệt chiêu gì đâu chứ! Như tôi đã nói ở trên: DÙNG ADVANCED FILTER (làm bằng tay còn được không lý nào không viết ra được code)
[video=youtube;Rfq8XauWqz8]https://www.youtube.com/watch?v=Rfq8XauWqz8&feature=youtu.be[/video]
Private Sub cmdHideRows_Click()
Dim dataSheet As Worksheet
Set dataSheet = ThisWorkbook.Worksheets("Data")
Dim row As Integer
Dim cnt As Integer
row = 1
cnt = 0
Do While WorksheetFunction.CountA(dataSheet.Range("A" & row & ":AG" & row)) <> 0
If WorksheetFunction.CountA(dataSheet.Range("A" & row & ":AG" & row)) <= 2 Then
If WorksheetFunction.CountA(dataSheet.Range("A" & row & ":AG" & row)) = 2 And _
dataSheet.Range("A" & row).Value = Empty Then
ElseIf dataSheet.Rows(row).EntireRow.Hidden = True Then
dataSheet.Rows(row).EntireRow.Hidden = False
Else
dataSheet.Rows(row).EntireRow.Hidden = True
End If
End If
row = row + 1
Loop
Call MsgBox("HIDE / UNHIDE thanh cong! ", vbOKOnly, "--------Hung86Excel--------")
End Sub
để em áp dụng vào file thật của em với!.If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep
Thêm cách khác, các bạn góp ý dùm
UnHide các dòngMã:Sub HideRow() Dim Darr(), rng As Range, i As Long, j As Integer Darr = Range("G1:AK" & Range("J12").End(xlDown).Row).Value tmp = False On Error Resume Next For i = 12 To UBound(Darr) For j = 1 To UBound(Darr, 2) If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep Next j If rng Is Nothing Then Set rng = Rows(i & ":" & i) Else Set rng = Application.Union(rng, Rows(i & ":" & i)) End If Tiep: Next i rng.Select Selection.EntireRow.Hidden = True Set rng = Nothing End Sub
Mã:Sub UnHideRow() Cells.Select Selection.EntireRow.Hidden = False Range("E12").Select End Sub
Tuyệt chiêu gì đâu chứ! Như tôi đã nói ở trên: DÙNG ADVANCED FILTER (làm bằng tay còn được không lý nào không viết ra được code)
[video=youtube;Rfq8XauWqz8]https://www.youtube.com/watch?v=Rfq8XauWqz8&feature=youtu.be[/video]
Tốc độ code của Anh Thật tuyệt!. Cảm ơn Anh.
- Anh giải thích giúp em dòng nay: để em áp dụng vào file thật của em với!.
If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep
If j <> 4 Then
If Darr(i, j) <> "" Then GoTo Tiep
End If
Sub Hide_UnHideRowRow()
Dim Darr(), rng As Range, i As Long, j As Integer
Darr = Range("G1:AK" & Range("J12").End(xlDown).Row).Value
tmp = False
On Error Resume Next
For i = 12 To UBound(Darr)
For j = 1 To UBound(Darr, 2)
If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep
Next j
If rng Is Nothing Then
Set rng = Rows(i)
Else
Set rng = Application.Union(rng, Rows(i))
End If
Tiep:
Next i
If rng.EntireRow.Hidden = True Then
rng.EntireRow.Hidden = False
Else
rng.EntireRow.Hidden = True
End If
Set rng = Nothing
End Sub
viết đầy đủMã:If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep
không xét cột J (số 4 là cột J), nếu từ cột G đến cột AK có giá trị (<>"") thì bỏ qua dòng i là dòng đang xétMã:If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep End If
mình mới viết lại code dùng chung cho Hide và UnHideMã:Sub Hide_UnHideRowRow() Dim Darr(), rng As Range, i As Long, j As Integer Darr = Range("G1:AK" & Range("J12").End(xlDown).Row).Value tmp = False On Error Resume Next For i = 12 To UBound(Darr) For j = 1 To UBound(Darr, 2) If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep Next j If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Application.Union(rng, Rows(i)) End If Tiep: Next i If rng.EntireRow.Hidden = True Then rng.EntireRow.Hidden = False Else rng.EntireRow.Hidden = True End If Set rng = Nothing End Sub