levinhdacbtx
Thành viên mới

- Tham gia
- 25/6/07
- Bài viết
- 6
- Được thích
- 1
mình muốn dùng macro hoặc VBA để ẩn một số dòng được chỉ định bởi tham số dong. Xin các bạn chỉ giúp. Cảm ơn
Chạy bình thường mà bạn! Vừa test xong!Macro này không chạy được khi đến dòng
Cells(iRow, 1).EntireRow.Hidden = True
bị báo lỗi không phù hợp
Option Explicit
Sub HideRow()
Dim iRow As Long
iRow = 9
Cells(iRow, 1).EntireRow.Hidden = True
End Sub
Cho em hỏi thêm, nếu trong một báo cáo có nhiều dòng cách nhau mà rỗng (ko có thông tin trên dòng đó) thì làm thế nào để ẩn đi mà ko dùng đến filter.Với code trên thì cần bổ sung gì hả anh?
Sub InBC
Dim HC As Long, i As Long
With Sheet1
HC = .Range("A65000").End(xlUp).Row
'.Range("A1:A" & HC).EntireRow.Hidden = False
For i = 5 To .Range("A65000").End(xlUp).Row
With .Range("H" & i)
If .Value ="" Then .EntireRow.Hidden = True
End With
Next
.Range("A1:A" & HC).EntireRow.Hidden = False
End With
End Sub
[COLOR=#000000][COLOR=#0000BB]Sub InBC
Dim HC [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Long[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]i [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Long
With Sheet1
HC [/COLOR][COLOR=#007700]= .[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A65000"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]End[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlUp[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Row
[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A1:A" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]HC[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]EntireRow[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Hidden [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]False
[/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000BB]i [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]5 To [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A65000"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]End[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlUp[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Row
With [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"H" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700])
If .[/COLOR][COLOR=#0000BB]Value [/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"" [/COLOR][COLOR=#0000BB]Then [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]EntireRow[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Hidden [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]True
End With
Next
[COLOR=Blue][B]'[/B][/COLOR][/COLOR][COLOR=Blue][B][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A1:A" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]HC[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]EntireRow[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Hidden [/COLOR][COLOR=#007700]= [/COLOR][/B][/COLOR][COLOR=#0000BB][COLOR=Blue][B]False[/B][/COLOR]
End With
End Sub [/COLOR][/COLOR]
Em thử code này xem:Gửi Anh Okebab, em làm theo anh nhưng khi chạy nó lại trả về trạng thái ban đầu, tức là ko ẩn cho mình những dòng rỗng. Em gửi lại VD em làm cho anh xem và giải thích giúp em.tks
Sub Andong()
Dim Er, i As Long
Er = Range("A65000").End(xlUp).Row
For i = 1 To Er
Cells(i, 8).EntireRow.Hidden = (Cells(i, 8) = "")
Next
End Sub
Vậy là em sai chổ nào đó! Anh test bình thường mà!Em cũng thử code này của anh, nhưng nó chỉ cho ẩn một dòng rỗng ở trên thôi, ý của em là trong một báo cáo có rất nhiều trong rỗng, ko có dữ liệu, làm thế nào mà mình chỉ cần bôi đen một cái chạy macro là ẩn đi hết đc các dòng rỗng đó (dòng rỗng nằm rải rác trong báo cáo).tks
Gửi Anh Okebab, em làm theo anh nhưng khi chạy nó lại trả về trạng thái ban đầu, tức là ko ẩn cho mình những dòng rỗng. Em gửi lại VD em làm cho anh xem và giải thích giúp em.tks
Sub InBC()
Dim HC As Long, i As Long
With Sheet1
HC = .Range("A65000").End(xlUp).Row
.Range("A1:A" & HC).EntireRow.Hidden = False
For i = 1 To HC
With .Range("H" & i)
If .Value = "" Then .EntireRow.Hidden = True
End With
Next
.PrintPreview (False)
.Range("A1:A" & HC).EntireRow.Hidden = False
End With
End Sub
Cái này quá dể luôn! Bạn tự record lấy 1 macro là có code ngay chứ gìmình muốn cho ẩn một số dòng trong bảng tính với yêu cầu sau
từ dòng R1 dến dòng R2
từ dòng R3 đến dòng cuối bảng tính
xin các bạn giúp đỡ
Em thử code này xem:
Chú ý: Sub này nếu em cho vào trong sheet như file trên thì không cần dòng With... End WithPHP:Sub Andong() Dim Er, i As Long Er = Range("A65000").End(xlUp).Row For i = 1 To Er Cells(i, 8).EntireRow.Hidden = (Cells(i, 8) = "") Next End Sub
Không phải NDU trả lơì được ko?Anh NDU cho em hỏi dòng Cells(i, 8).EntireRow.Hidden = (Cells(i, 8) = "") nghĩa là sao? em nghĩ .Hidden chỉ nhận True hoặc False thôi mà??. Em dùng code thấy ok
Chính cái biểu thức Cells(i, 8) = "" ấy là một biểu thức logic, và đương nhiên kết quả của nó là True hoặc False rồi.Anh NDU cho em hỏi dòng Cells(i, 8).EntireRow.Hidden = (Cells(i, 8) = "") nghĩa là sao? em nghĩ .Hidden chỉ nhận True hoặc False thôi mà??. Em dùng code thấy ok
Chính cái biểu thức Cells(i, 8) = "" ấy là một biểu thức logic.
Hihi, dù là mệnh đề hay biểu thức logic thì kết quả của nó cũng là True, False thôi mà.Mình nghĩ rằng Phúc đã nhầm, (nếu đúng vậy, sáng nay có vẻ nhầm nhiều, hi hi). Theo mình thì:
Biểu thức logic thì phải có pháp toán logic: Not, Or, And, ... dùng để "tính toán" các mệnh để.
Còn một mệnh đề thì chưa thể gọi biểu thức được.
Vì dụ: Cells(i, 8) = "" Or Cells(i, 8) = "Phúc" là biểu thức logic.