Dùng VBA Căn Boder toàn bảng tự động bị merger cell .Help

Liên hệ QC

dailame9x

Thành viên mới
Tham gia
18/7/19
Bài viết
11
Được thích
3
Tình hình là em có cái bẳng như hình bên trái( VD cần căn Border). Em muốn căn mỗi mội số thư tự như bảng bên phải (mẫu Border) giống như định dạng (Format cell) .
Về bảng thì Cột A với Cột D sẽ bị gộp cùng số hàng.
Bác nào có code vòng lặp chọn đc range của vùng D sang A-> Border-> rồi offset xuống dưới lại chọn Range mới giúp e với! Em cảm ơn!
CĂn Boder tự động.JPGCĂn Boder tự động.JPG
 

File đính kèm

  • Border tự động.xlsm
    78 KB · Đọc: 5
Tình hình là em có cái bẳng như hình bên trái( VD cần căn Border). Em muốn căn mỗi mội số thư tự như bảng bên phải (mẫu Border) giống như định dạng (Format cell) .
Về bảng thì Cột A với Cột D sẽ bị gộp cùng số hàng.
Bác nào có code vòng lặp chọn đc range của vùng D sang A-> Border-> rồi offset xuống dưới lại chọn Range mới giúp e với! Em cảm ơn!
Bạn dùng thử File. Bạn muốn thêm dữ liệu bao nhiêu là tùy ý.
 

File đính kèm

  • Border.xlsm
    16.4 KB · Đọc: 7
Upvote 0
Em muốn là kẻ ô theo số thứ tự trên, bên trong là nét đứt và viền bao là nét liền cho từng mục kiểu như này đó bác
View attachment 251036
Thử code này xem sao:
Mã:
Option Explicit
Sub Border()
Dim Lr As Long, WorkRng As Range, Rng As Range
Lr = Cells(Rows.Count, 1).End(xlUp).Row
Lr = Lr + Cells(Lr, 1).MergeArea.Rows.Count - 1
Set WorkRng = Range("A2:A" & Lr)
    For Each Rng In WorkRng
        With Rng.MergeArea.Resize(, 4)
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideVertical).Weight = xlHairline
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
    Next
End Sub
 
Upvote 0
Thử code này xem sao:
Mã:
Option Explicit
Sub Border()
Dim Lr As Long, WorkRng As Range, Rng As Range
Lr = Cells(Rows.Count, 1).End(xlUp).Row
Lr = Lr + Cells(Lr, 1).MergeArea.Rows.Count - 1
Set WorkRng = Range("A2:A" & Lr)
    For Each Rng In WorkRng
        With Rng.MergeArea.Resize(, 4)
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideVertical).Weight = xlHairline
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
    Next
End Sub
Em dùng thử rồi nhưng chưa thấy thay đổi gì bác ơi.
Bài đã được tự động gộp:

Hiện em đang thử code này nhưng không viết đc code cho Range hiện tại để tính toán tiếp có bác nào xem thử giúp e với

Sub Border()
Dim i As Integer
On Error GoTo Last
i = InputBox("Nhap so cong doan", "Co bn cong doan")
For i = 1 To i
' Vung chọn hiện tại
ActiveCell.Offset(1, 0).Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlHairline
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlHairline
End With


Next i
Last: Exit Sub
End Sub
 
Upvote 0
Em dùng thử rồi nhưng chưa thấy thay đổi gì bác ơi.
Bài đã được tự động gộp:

Hiện em đang thử code này nhưng không viết đc code cho Range hiện tại để tính toán tiếp có bác nào xem thử giúp e với

Sub Border()
Dim i As Integer
On Error GoTo Last
i = InputBox("Nhap so cong doan", "Co bn cong doan")
For i = 1 To i
' Vung chọn hiện tại
ActiveCell.Offset(1, 0).Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlHairline
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlHairline
End With


Next i
Last: Exit Sub
End Sub
Chả biết bạn có biết cách dùng không nữa
 

File đính kèm

  • Border tự động.xlsm
    17.9 KB · Đọc: 13
Upvote 0
Em cảm ơn bác nhiều nhé! .
Code sau ngắn gọn hơn:,
Mã:
Sub Tao_Border()
    Dim CellCuoi As Long, xCell As Range
    CellCuoi = Cells(Rows.Count, 1).End(xlUp).Row
    Sheet1.Range("A1").CurrentRegion.Borders.ColorIndex = xlNone
    Sheet1.Range("A1").CurrentRegion.Borders.LineStyle = xlThin
    Sheet1.Range("A1").CurrentRegion.BorderAround xlContinuous, xlThick
    For Each xCell In Range("A1:A" & CellCuoi)
        xCell.MergeArea.Resize(, 4).Borders(xlEdgeTop).Weight = xlThick
        xCell.MergeArea.Resize(, 4).Borders(xlEdgeBottom).Weight = xlThick
    Next
End Sub

Hoặc sửa code bài 4 thế này:
Mã:
Sub Border()
    Dim Lr As Long, Rng As Range
    Lr = Cells(Rows.Count, 1).End(xlUp).Row
    Sheet1.Range("A1").CurrentRegion.Borders.ColorIndex = xlNone
    For Each Rng In Range("A1:A" & Lr)
        With Rng.MergeArea.Resize(, 4)
            .Borders.LineStyle = xlContinuous
            .Borders.Weight = xlThick
            .Borders(xlInsideVertical).Weight = xlHairline
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom