- Tham gia
- 13/10/07
- Bài viết
- 90
- Được thích
- 13
ý bạn là kẻ từ hàng 11 tới cuối dữ liệu (động) - cuối dữ liệu là hàng mà nơi đó cộ A không có và cột H;I có giá trị phải không????Xin nhờ các anh chị biết rành về VBA thì xem và giúp em kẻ viền sổ nhật ký chung như mẫu em đã làm sẵn trong sheet của excel.
Em không biết VBA.
Xin chân thành cảm ơn anh chị rất nhiều !
Căn cứ theo sheet bảng mẫu thì:ý bạn là kẻ từ hàng 11 tới cuối dữ liệu (động) - cuối dữ liệu là hàng mà nơi đó cộ A không có và cột H;I có giá trị phải không????
Bạn tham khảo thử: Click chuật phải chọn vào cái ô màu đỏKẻ từ hàng 11 trở xuống đến hết. khi nghiệp vụ phát sinh bao nhiêu dòng thì nó kẻ bấy nhiêu vòng, kết thúc 1 nghiệp vụ là nó sẽ kẻ 1 đường viền đậm như MẪU NHẬT KÝ CHUNG trong sheet kế bên ấy.
Ở đó mình hạng chế cho nó chưa đến 2000 dòng.
Cảm ơn bạn đã xem qua!
Bài đã được tự động gộp:
Thêm đường viền đậm kết thúc 1 nghiệp vụ là ok. Chỉ yêu cầu như thế thôi. cảm ơn bạn rất nhiều !
Bạn tham khảo thử: Click chuật phải chọn vào cái ô màu đỏ
OK. cảm ơn bạn, cách như bạn cũng hay đó nhưng nó hơi bất tiện 1 chút.
Chân thành cảm ơn bạn rất nhiều!
Coi thử file nha bạnXin nhờ các anh chị biết rành về VBA thì xem và giúp em kẻ viền sổ nhật ký chung như mẫu em đã làm sẵn trong sheet của excel.
Em không biết VBA.
Xin chân thành cảm ơn anh chị rất nhiều !
Ý tưởng Quá hay luôn bạn ơi...Bạn xem thử
Mình cho Macro vào Nút Xem Sổ của bạn luôn rồi đó
With Sheet8
lr1 = .Cells(.Rows.Count, "I").End(xlUp).Row
For i = 11 To lr1
If IsDate(.Cells(i, 3)) = True Then
With .Range("A" & i & ":I" & i)
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeTop).Weight = xlThin
End With
End If
Next i
MsgBox ("complete!!!")
End With
Sub Macro1()
'
' Macro1 Macro
'
Dim LastRow As Long, sRng As Range, I As Long
Application.ScreenUpdating = False
LastRow = Range("I" & Rows.Count).End(xlUp).Row
Set sRng = Range("A11:A" & LastRow)
With sRng.Resize(, 9)
.Borders.LineStyle = 1
.Borders(xlInsideHorizontal).Weight = xlHairline
End With
With sRng.SpecialCells(xlCellTypeConstants, 23)
For I = 0 To 8
With .Offset(, I).Borders(xlEdgeTop)
.LineStyle = 1
.Weight = xlThin
End With
Next I
End With
Application.ScreenUpdating = True
End Sub
Bạn chu đáo ghê, Code nhìn gọn hơn hẳn cái nùi Macro nguyên bản của excelÝ tưởng Quá hay luôn bạn ơi...
Mình xin mạn phép chỉnh lại code của bạn một tí cho nó nhẹ và gọn hơn nha....
Mã:With Sheet8 lr1 = .Cells(.Rows.Count, "I").End(xlUp).Row For i = 11 To lr1 If IsDate(.Cells(i, 3)) = True Then With .Range("A" & i & ":I" & i) .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeTop).Weight = xlThin End With End If Next i MsgBox ("complete!!!") End With
Bác chỉ mình nhấn cái nút record nào mà dc vậy nha... mỗi hàng là 1 lon!!!!Mình Record Macro mới được cái này nữa. Bạn Chủ Topic tham khảo thử xem nó có bất tiện nữa không nhoé
PHP:Sub Macro1() ' ' Macro1 Macro ' Dim LastRow As Long, sRng As Range, I As Long Application.ScreenUpdating = False LastRow = Range("I" & Rows.Count).End(xlUp).Row Set sRng = Range("A11:A" & LastRow) With sRng.Resize(, 9) .Borders.LineStyle = 1 .Borders(xlInsideHorizontal).Weight = xlHairline End With With sRng.SpecialCells(xlCellTypeConstants, 23) For I = 0 To 8 With .Offset(, I).Borders(xlEdgeTop) .LineStyle = 1 .Weight = xlThin End With Next I End With Application.ScreenUpdating = True End Sub
Mình Record Macro mới được cái này nữa. Bạn Chủ Topic tham khảo thử xem nó có bất tiện nữa không nhoé
Cảm ơn bạn đã góp ý . Chân thành cảm ơn.
Bạn xem thử
Mình cho Macro vào Nút Xem Sổ của bạn luôn rồi đó
Xin cảm ơn bạn rất nhiều.
Đã bất tiện mà sao hay được
Nó hay hơn mình phải tự làm tay, nó tốn rất nhiều thời gian. Lâu lắm bạn ạ. Cảm ơn bạn đã góp ý.
Coi thử file nha bạn
Xin cảm ơn bạn đã giúp đỡ.
With Sheet8.Range("A10:A" & Sheet8.Range("I" & Rows.Count).End(xlUp).Row)
.Resize(, 9).Borders.LineStyle = 1
.Resize(, 9).Borders(12).Weight = 1
Intersect(.Resize(, 9), Union(.SpecialCells(2), .Cells(.Rows.Count, 1)).EntireRow).Borders(8).Weight = 2
End With
Rút quá đi thôiVầy đi cho gọn.
Mã:With Sheet8.Range("A10:A" & Sheet8.Range("I" & Rows.Count).End(xlUp).Row) .Resize(, 9).Borders.LineStyle = 1 .Resize(, 9).Borders(12).Weight = 1 Intersect(.Resize(, 9), Union(.SpecialCells(2), .Cells(.Rows.Count, 1)).EntireRow).Borders(8).Weight = 2 End With
Ý tưởng Quá hay luôn bạn ơi...
Mình xin mạn phép chỉnh lại code của bạn một tí cho nó nhẹ và gọn hơn nha....
Mã:With Sheet8 lr1 = .Cells(.Rows.Count, "I").End(xlUp).Row For i = 11 To lr1 If IsDate(.Cells(i, 3)) = True Then With .Range("A" & i & ":I" & i) .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeTop).Weight = xlThin End With End If Next i MsgBox ("complete!!!") End With Bạn cho mình hỏi, Nếu trường hợp này mà bỏ luôn những đường viền nét đứt, chỉ còn lại đường viền đậm khi kết thúc 1 nghiệp vụ thì mình sẽ bỏ câu lệnh nào để được như thế vậy bạn? (Có nghĩa là ỡ giữa những dòng không có đường viền, chỉ có đường viền đậm trên và dưới thôi. Cảm ơn bạn rất nhiều!!!
Bạn cho mình hỏi, Nếu trường hợp này mà bỏ luôn những đường viền nét đứt, chỉ còn lại đường viền đậm khi kết thúc 1 nghiệp vụ thì mình sẽ bỏ câu lệnh nào để được như thế vậy bạn? (Có nghĩa là ỡ giữa những dòng không có đường viền, chỉ có đường viền đậm trên và dưới thôi.
Cảm ơn bạn rất nhiều!!!
Sub TaoViengMot()
Application.ScreenUpdating = False
Dim CellCuoi, i As Long
CellCuoi = Cells(Rows.Count, 1).End(xlUp).Row
Sheet8.Range("A7").CurrentRegion.Offset(6).BorderAround xlContinuous, xlThick
With Sheet8.Range("A10:A" & CellCuoi).SpecialCells(xlCellTypeConstants, 23)
For i = 0 To 8
With .Offset(, i).Borders(xlEdgeTop)
.LineStyle = xlContinuous: .Weight = xlThick
End With
Next i
End With
Application.ScreenUpdating = True
End Sub
Ý bạn là sao? gởi file cho minh coi ahBạn cho mình hỏi, Nếu trường hợp này mà bỏ luôn những đường viền nét đứt, chỉ còn lại đường viền đậm khi kết thúc 1 nghiệp vụ thì mình sẽ bỏ câu lệnh nào để được như thế vậy bạn? (Có nghĩa là ỡ giữa những dòng không có đường viền, chỉ có đường viền đậm trên và dưới thôi.
Cảm ơn bạn rất nhiều!!!
Ok. Là như vậy đó.Mình muốn như thế này
View attachment 238875
Mình muốn như thế này
View attachment 238875
Bạn có thể giúp cho mình được không?
Cảm ơn bạn rất nhiều!!!
File nè bạnMình muốn như thế này
View attachment 238875
Không cần thêm ah...Bài 22 thêm 1 dòng code là xong.
Cảm ơn bạn rất nhiều !!!File nè bạn
Không cần thêm ah...
Sửa dòng thành Sheet8.[A11:I11].Resize(j - 1).Borders(xlInsideHorizontal).LineStyle = xlNone và kết hợp code bạn @be09 là xong!
ah, code bạn @be09 thì dư 1 border, chỉnh lại CellCuoi = Cells(Rows.Count, 9).End(xlUp).Row (đổi 1 thành 9) thì không dư nữa!
Phải vậy không bạn @be09 ....
Cảm ơn bạn rất nhiều !!!!!
1/ Code duyệt dữ liệu từ dưới lên và 1 là dựa vào cột A bạn sửa 9 là dựa vào cột I, 1 hay 9 nó đều như nhau. Vì cột I từ dưới lên đến Cell I2001 không có dữ liệu nên bạn thay 9 thì không thấy viền trên Cell I2000.Không cần thêm ah...
Sửa dòng thành Sheet8.[A11:I11].Resize(j - 1).Borders(xlInsideHorizontal).LineStyle = xlNone và kết hợp code bạn @be09 là xong!
ah, code bạn @be09 thì dư 1 border, chỉnh lại CellCuoi = Cells(Rows.Count, 9).End(xlUp).Row (đổi 1 thành 9) thì không dư nữa!
Phải vậy không bạn @be09 ....