quoccuonghd
Thành viên hoạt động
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 12/6/10
- Bài viết
- 116
- Được thích
- 7
- Giới tính
- Nam
- Nghề nghiệp
- Kỹ sư XD
- mình nhìn vào dòng cuối của sheet PL3a (D3) chẳng có gì đặc biệt cả,Mình muốn nhờ mọi người viết giúp hộ code có nút nhấn một cái thì bảng tính sẽ tự kẻ dòng cuối cho bảng của mỗi trang. và code đó có thể áp dụng cho nhiều bảng tính khác được. Mong mọi người giúp đỡ.
Cảm ơn nhiều!
Sub Borders()
y = ActiveSheet.UsedRange.Columns.Count
x = [a65536].End(3).Row - 3
With [a4].Resize(x, y)
.Borders.LineStyle = 0
.Borders.LineStyle = 1
.Borders(12).LineStyle = 2
End With
End Sub
- mình nhìn vào dòng cuối của sheet PL3a (D3) chẳng có gì đặc biệt cả,
- bạn mô tả thêm xem muốn kẻ như thế nào ?
'-----
hay ý của bạn là kẻ toàn bảng từ ô A1 đến M751 ?
mình đã hiểuÝ của mình là nhờ các bạn kẻ giúp một đường kẻ liền của dòng cuối trang mỗi khi bảng phân trang để in ra đẹp hơn. Bảng của mình là đang dùng đường kẻ chấm chấm mờ, cứ hết mỗi trang trước khi in mình lại phải kẻ thủ công rất mất thời gian. Mình nhờ các bạn giúp để còn ứng dụng cho nhiều bảng khác.
Sub GPE_FormatCells()
Cells.EntireRow.Hidden = False 'Unhide Rows
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'dang dung` Filter
'---------
Call TaoBorderVung
Call TaoBorderCuoiTrang
End Sub
Sub TaoBorderVung() 'tu` A4 --> cot M
With Range(Range("A65000").End(xlUp), Range("M4"))
.Borders.LineStyle = xlNone 'xoa' Border cu~
'--------
.Borders.LineStyle = xlContinuous
.Borders(xlInsideHorizontal).Weight = xlHairline
'hoac .Borders(xlInsideHorizontal).LineStyle = xlDash
End With
End Sub
Sub TaoBorderCuoiTrang() 'tu` cot A --> M
Dim ws As Worksheet, i As Long
Dim lngPageSumRow As Long
Dim strPageEndRow As String 'Dia chi dong co' dau ngat trang
ActiveWindow.View = xlPageBreakPreview 'Ðua che do view ve PageBreak
Set ws = ActiveSheet
For i = 1 To ws.PageSetup.Pages.Count - 1 'ko tinh' trang cuoi'
On Error Resume Next
lngPageSumRow = ws.HPageBreaks(i).Location.Row - 1
strPageEndRow = "A" & lngPageSumRow & ":" & "M" & lngPageSumRow
With ws.Range(strPageEndRow).Borders(xlEdgeBottom)
.LineStyle = xlNone 'do Sub TaoBorder
.LineStyle = xlContinuous
End With
Next
ActiveWindow.View = xlNormalView
Set ws = Nothing
End Sub
Sub FormatReport()
Dim i As Long, OldView As Integer, OldSh As String, ScrUp As Boolean
ScrUp = Application.ScreenUpdating
OldSh = ActiveSheet.Name
Application.ScreenUpdating = False
With Sheet1
.Activate
OldView = ActiveWindow.View
ActiveWindow.View = 2
.Range("A4:M65536").Borders.LineStyle = xlNone
.Range("A4:M65536").Interior.ColorIndex = 0
.Range("A4:M" & .[A65536].End(3).Row).Borders.Weight = xlThin
.Range("A4:M" & .[A65536].End(3).Row).Borders(xlInsideHorizontal).Weight = xlHairline
For i = 1 To .HPageBreaks.Count
[COLOR=#ff0000].HPageBreaks(i).Location.Offset(-1).Resize(, 13).Interior.ColorIndex = 3[/COLOR]
.HPageBreaks(i).Location.Offset(-1).Resize(, 13).Borders(xlEdgeBottom).Weight = xlThin
Next
ActiveWindow.View = OldView
End With
ThisWorkbook.Sheets(OldSh).Select
Application.ScreenUpdating = ScrUp
End Sub
Cảm ơn bạn. Đúng code mình cần rồi. cảm ơn nhiềuBạn thử dùng Code sau thử xem sao (Dòng mau đỏ mình thêm vào để Kiểm tra, ổn rồi thì bỏ đi):
Mã:Sub FormatReport() Dim i As Long, OldView As Integer, OldSh As String, ScrUp As Boolean ScrUp = Application.ScreenUpdating OldSh = ActiveSheet.Name Application.ScreenUpdating = False With Sheet1 .Activate OldView = ActiveWindow.View ActiveWindow.View = 2 .Range("A4:M65536").Borders.LineStyle = xlNone .Range("A4:M65536").Interior.ColorIndex = 0 .Range("A4:M" & .[A65536].End(3).Row).Borders.Weight = xlThin .Range("A4:M" & .[A65536].End(3).Row).Borders(xlInsideHorizontal).Weight = xlHairline For i = 1 To .HPageBreaks.Count [COLOR=#ff0000].HPageBreaks(i).Location.Offset(-1).Resize(, 13).Interior.ColorIndex = 3[/COLOR] .HPageBreaks(i).Location.Offset(-1).Resize(, 13).Borders(xlEdgeBottom).Weight = xlThin Next ActiveWindow.View = OldView End With ThisWorkbook.Sheets(OldSh).Select Application.ScreenUpdating = ScrUp End Sub
Sub Borders()
Application.ScreenUpdating = False
On Error Resume Next
y = ActiveSheet.UsedRange.Columns.Count
x = [a65536].End(3).Row - 3
With [a4].Resize(x, y)
.Borders.LineStyle = 0
.Borders.LineStyle = 1
.Borders(12).LineStyle = 3
End With
ActiveWindow.View = 2
For i = 1 To ActiveSheet.HPageBreaks.Count
Range("A" & ActiveSheet.HPageBreaks(i).Location.Row - 1).Resize(, y).Borders(4).LineStyle = 1
Next
ActiveWindow.View = 1
End Sub
Lần trước tải file của bạn xuống rồi mà quên chưa cảm ơn bạn hôm nay quay lai xem mới biết là có lỗi với bạn. code nay của bạn viết giúp mình, mình đã chạy thử thì đến đoạn For i = 1 To ws.PageSetup.Pages.Count - 1 'ko tinh' trang cuoi' là bị lỗi ko chạy nữa bạn ah. mình dùng office 2003 bạn ah. Nếu rảnh bạn có thể ktra lại giúp mình xem có thể khắc phục được tại sao lạ lỗi tại dòng đó không.mình đã hiểu, bạn tải file đính kèm về xem sao nhé !
Run Macro --> bấm nút Format Cells (Borders)
Mã:Sub GPE_FormatCells() Cells.EntireRow.Hidden = False 'Unhide Rows If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'dang dung` Filter '--------- Call TaoBorderVung Call TaoBorderCuoiTrang End Sub Sub TaoBorderVung() 'tu` A4 --> cot M With Range(Range("A65000").End(xlUp), Range("M4")) .Borders.LineStyle = xlNone 'xoa' Border cu~ '-------- .Borders.LineStyle = xlContinuous .Borders(xlInsideHorizontal).Weight = xlHairline 'hoac .Borders(xlInsideHorizontal).LineStyle = xlDash End With End Sub Sub TaoBorderCuoiTrang() 'tu` cot A --> M Dim ws As Worksheet, i As Long Dim lngPageSumRow As Long Dim strPageEndRow As String 'Dia chi dong co' dau ngat trang ActiveWindow.View = xlPageBreakPreview 'Ðua che do view ve PageBreak Set ws = ActiveSheet For i = 1 To ws.PageSetup.Pages.Count - 1 'ko tinh' trang cuoi' On Error Resume Next lngPageSumRow = ws.HPageBreaks(i).Location.Row - 1 strPageEndRow = "A" & lngPageSumRow & ":" & "M" & lngPageSumRow With ws.Range(strPageEndRow).Borders(xlEdgeBottom) .LineStyle = xlNone 'do Sub TaoBorder .LineStyle = xlContinuous End With Next ActiveWindow.View = xlNormalView Set ws = Nothing End Sub
Lần trước tải file của bạn xuống rồi mà quên chưa cảm ơn bạn hôm nay quay lai xem mới biết là có lỗi với bạn. code nay của bạn viết giúp mình, mình đã chạy thử thì đến đoạn For i = 1 To ws.PageSetup.Pages.Count - 1 'ko tinh' trang cuoi' là bị lỗi ko chạy nữa bạn ah. mình dùng office 2003 bạn ah. Nếu rảnh bạn có thể ktra lại giúp mình xem có thể khắc phục được tại sao lạ lỗi tại dòng đó không.
Anh ơi em có áp dụng mã code này cho file của em , khi e chạy thì báo lỗi, mong a chỉ giúp ạ!Bạn thử dùng Code sau thử xem sao (Dòng mau đỏ mình thêm vào để Kiểm tra, ổn rồi thì bỏ đi):
Mã:Sub FormatReport() Dim i As Long, OldView As Integer, OldSh As String, ScrUp As Boolean ScrUp = Application.ScreenUpdating OldSh = ActiveSheet.Name Application.ScreenUpdating = False With Sheet1 .Activate OldView = ActiveWindow.View ActiveWindow.View = 2 .Range("A4:M65536").Borders.LineStyle = xlNone .Range("A4:M65536").Interior.ColorIndex = 0 .Range("A4:M" & .[A65536].End(3).Row).Borders.Weight = xlThin .Range("A4:M" & .[A65536].End(3).Row).Borders(xlInsideHorizontal).Weight = xlHairline For i = 1 To .HPageBreaks.Count [COLOR=#ff0000].HPageBreaks(i).Location.Offset(-1).Resize(, 13).Interior.ColorIndex = 3[/COLOR] .HPageBreaks(i).Location.Offset(-1).Resize(, 13).Borders(xlEdgeBottom).Weight = xlThin Next ActiveWindow.View = OldView End With ThisWorkbook.Sheets(OldSh).Select Application.ScreenUpdating = ScrUp End Sub
1/ File của bạn chẳng có code nào làm sao người khác biết sai chỗ nào?Anh ơi em có áp dụng mã code này cho file của em , khi e chạy thì báo lỗi, mong a chỉ giúp ạ!View attachment 199105
Vâng e vừa thử không được, hi e vừa đăng lại ý tưởng lên, A giúp e ạ!1/ File của bạn chẳng có code nào làm sao người khác biết sai chỗ nào?
2/ Trong hình là code hoạt động với sheet1, file bạn đâu có sheet1?
3/ Chủ đề nếu giống nhau nhưng bạn cũng phải đưa file của bạn lên và nói rõ ý bạn muốn gì, bài người ta từ năm 2014 sao biết được là "y chang" của bạn?