- Tham gia
- 22/7/14
- Bài viết
- 356
- Được thích
- 31
File đính kèm
Lần chỉnh sửa cuối:
Thử dùng code sau.Chào anh chị diễn đàn. Hôm qua em có hỏi vấn đề xóa mã hàng trùng tên và đã được các anh chị đã chỉ cách em xóa rồi. Code chạy rất ok. sáng em có in báo cáo thì Sếp em bảo phải có làm thêm có đường gạch đôi để dễ phân biện giữa các mã hàng. Cụ thể như hình bên dưới. Em xin cảm ơn mọi người ạ
View attachment 233910
Sub Set_Borders()
Dim sCell As Range, sRow%
With Sheet1
sRow = .Range("B100000").End(xlUp).Row
For Each sCell In .Range("B5:B" & sRow)
If sCell.Value <> "" Then
With sCell.Resize(, 5).Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
End With
End If
Next sCell
End With
End Sub
Chào anh chị diễn đàn. Hôm qua em có hỏi vấn đề xóa mã hàng trùng tên và đã được các anh chị đã chỉ cách em xóa rồi. Code chạy rất ok. sáng em có in báo cáo thì Sếp em bảo phải có làm thêm có đường gạch đôi để dễ phân biện giữa các mã hàng. Cụ thể như hình bên dưới. Em xin cảm ơn mọi người ạ
Sub ToVien_Double()
Dim DongCuoi As Range
Set DongCuoi = Range("B5", Range("F1000").End(xlUp))
With Sheet1
.Range("B3").CurrentRegion.AutoFilter Field:=1, Criteria1:="<>"
DongCuoi.SpecialCells(xlCellTypeVisible).Borders(xlEdgeTop).LineStyle = xlDouble
.Range("B3").AutoFilter
End With
End Sub
cảm ơn anh code chạy rất đúng ý em luôn ạ. Có điều là khi em thay đổi dữ liệu Mã hàng thì mấy đường đôi trước đó nó vẫn nằm yên. Anh có thể viết thêm 1 đoạn để cho nó Clear đi những đường nét đôi và đóng khung bình thường 1 nét trước nằm phía trên code được không ạ. Em tự sửa code lại ok rồi ạThử dùng code sau.
Mã:Sub Set_Borders() Dim sCell As Range, sRow% With Sheet1 sRow = .Range("B100000").End(xlUp).Row For Each sCell In .Range("B5:B" & sRow) If sCell.Value <> "" Then With sCell.Resize(, 5).Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick End With End If Next sCell End With End Sub
Sub Set_Borderds()
' reset cho ve dong khung binh thuong 1 net
Range("B4:F30").Borders.LineStyle = xlContinuous
' Chay code dong khung
Dim sCell As Range
For Each sCell In Range("B5:B30") ' Du lieu Nguon
If sCell.Value <> "" Then
With sCell.Resize(, 5).Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
End With
End If
Next sCell
End Sub
em cảm ơn bác. code bác chạy rất chính xác. có điều chỉ gạch chân 1 cột B thôi. đúng ra là phải gạch chân từ B đên D là ok bác ạ em tự thêmThử một cách khác.
Mã:Sub ToVien_Double() Dim DongCuoi As Range Set DongCuoi = Range("B5", Range("F1000").End(xlUp)) With Sheet1 .Range("B3").CurrentRegion.AutoFilter Field:=1, Criteria1:="<>" DongCuoi.SpecialCells(xlCellTypeVisible).Borders(xlEdgeTop).LineStyle = xlDouble .Range("B3").AutoFilter End With End Sub
Vậy thì thử sử dụng code sau:Có điều là khi em thay đổi dữ liệu Mã hàng thì mấy đường viền đôi trước đó nó vẫn nằm yên.
Em cảm ơn bác. code bác chạy rất chính xác, có điều chỉ gạch chân 1 cột B thôi, đúng ra là phải gạch chân từ B đên D là ok bác ạ em tự thêm
Resize(, 5) la ok rồi. Em cảm ơn bác nhiều
Sub TaoVien_Double()
Dim xCell, DongCuoi As Range
Set DongCuoi = Range("B5", Range("B1000").End(xlUp))
Range("B3").CurrentRegion.Borders.LineStyle = xlNone
For Each xCell In DongCuoi
If xCell.Value <> "" Then
xCell.Resize(, 5).Borders(xlEdgeTop).LineStyle = xlDouble
End If
Next xCell
End Sub
Luật chung của code vẽ vời màu mè là khi chạy code phải đổi cả vùng thành bình thường. Sau đó mới tìm những chỗ cần khác biệt mà thêm thắt màu mè.cảm ơn anh code chạy rất đúng ý em luôn ạ. Có điều là khi em thay đổi dữ liệu Mã hàng thì mấy đường đôi trước đó nó vẫn nằm yên. ...
Để trang trí màu mè hoa lá cành, tham khảo thêm code sau:Em cảm ơn bác. code bác chạy rất chính xác.
Em cảm ơn bác nhiều
Sub TaoVien_TrangTri()
Dim xCell, DongCuoi As Range
Set DongCuoi = Range("B5", Range("B1000").End(xlUp))
Range("B3").CurrentRegion.Borders.LineStyle = xlNone
Range("B3").CurrentRegion.Borders.ColorIndex = 38 'Màu tím
Range("B3").CurrentRegion.BorderAround xlContinuous, xlThick
For Each xCell In DongCuoi
If xCell.Value <> "" Then
xCell.Resize(, 5).Borders(xlEdgeTop).LineStyle = xlDouble
xCell.Resize(, 5).Borders(xlEdgeTop).ColorIndex = 56 'Màu den
End If
Next xCell
End Sub
Luật chung của code vẽ vời màu mè là khi chạy code phải đổi cả vùng thành bình thường. Sau đó mới tìm những chỗ cần khác biệt mà thêm thắt màu mè.
Code sẽ làm những công việc sau:
- Tắt chức năng hiển thị màn hình
- Xác định vùng cần xử lý
- Gọi code chỉnh sửa tất cả thành dạng gạch đơn
- Đọc từng dòng, xác định dòng cần gạch kép và gọi code chỉnh thành gạch kép.
- Mở laị chức năng hiển thị màn hình
Sếp bạn này chắc hơi dốt về làm việc văn phòng.
Theo luật chung kế toán, đường kẻ đôi chỉ giành cho dòng kết toán. Tiếng Anh gọi là "bottom line".
Thường thì người ta chỉ đóng khung bằng đường liền, và dùng đường chấm để phân biệt từng ô trong bảng. Mỗi nhóm mới thì lại phân biệt bằng đường liền. Vừa dễ đọc số, vừa đỡ tốn mực in.
Sub MauMe()
Dim svScreenUpdating
svScreenUpdating = Application.ScreenUpdating
Dim vung As Range, vung2 As Range, i As Long
Set vung = Range("B4:F" & Cells(sht.Rows.Count, "C").End(xlUp).Row)
Call KeVienCaCum(vung)
Set vung2 = vung.Resize(1,)
For i = 1 To vung.Rows.Count - 1
If vung.Cells(i+1,1).Value <> "" Then Call KeVienDacBiet(vung2) ' sắp đến nhóm mới
Set vung2 = vung2.Offset(1,)
Next i
Application.ScreenUpdating = False
Application.ScreenUpdating = svScreenUpdating
End Sub
Sub KeVienCaCum(rg As Range)
' code kẻ viền cả bảng
End Sub
Sub KeVienDacBiet(rg As Range)
' code kẻ đôi dòng
End Sub
Sếp tôi cũng chỉ biết dùng sum/if/vlookup đại khái thôi.dạ sếp em ông dốt lắm. chỉ biết dùm hàm Sum , IF vậy thôi, Chứ Vlookup là ổng bó tay. Dốt nhưng mà ỗng nhiều tiền thầy ạ
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2