kẻ dòng tự động

  • Thread starter Thread starter hml89
  • Ngày gửi Ngày gửi
Liên hệ QC

hml89

Thành viên tiêu biểu
Tham gia
14/9/12
Bài viết
526
Được thích
392
Giới tính
Nam
xin chào anh/chị
hiện tôi đang muốn kẻ dòng tự động, khi nhập dữ liệu vào cột A, thì nó sẽ tự động kẻ dòng.
Trường hợp khi tôi ghi macro ra thì nó có thể làm được với vùng xác định, nhưng nếu có thêm dữ liệu thì nó lại không chạy được.
Vậy mong mọi người giúp đỡ
Mã:
Sub kedong()
Dim i&, cll As Range, Lr&
Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row
For i = 3 To Lr
Sheet16.Range("A3").Resize(i, 9).Borders.LineStyle = xlContinuous
Next
End Sub
xin cám ơn!
 
xin chào anh/chị
hiện tôi đang muốn kẻ dòng tự động, khi nhập dữ liệu vào cột A, thì nó sẽ tự động kẻ dòng.
Trường hợp khi tôi ghi macro ra thì nó có thể làm được với vùng xác định, nhưng nếu có thêm dữ liệu thì nó lại không chạy được.
Vậy mong mọi người giúp đỡ
Mã:
Sub kedong()
Dim i&, cll As Range, Lr&
Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row
For i = 3 To Lr
Sheet16.Range("A3").Resize(i, 9).Borders.LineStyle = xlContinuous
Next
End Sub
xin cám ơn!
Code này chạy bình thường.
 
xin chào anh/chị
hiện tôi đang muốn kẻ dòng tự động, khi nhập dữ liệu vào cột A, thì nó sẽ tự động kẻ dòng.
Trường hợp khi tôi ghi macro ra thì nó có thể làm được với vùng xác định, nhưng nếu có thêm dữ liệu thì nó lại không chạy được.
Vậy mong mọi người giúp đỡ
xin cám ơn!
Bạn them dữ lieu như thế nào
 
Code này chạy bình thường.
Code này chạy bình thường.
Mã:
Sub kedong()
Dim i&, cll As Range, Lr&
Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To Lr - 1
Sheet16.Range("A2").Resize(i, 9).Borders.LineStyle = xlContinuous
For Each cll In Range("C3:H122")
If cll <> Empty Then
cll.Borders(xlDiagonalUp).LineStyle = xlContinuous
End If
Next
Next
End Sub

cho tôi hỏi 1 chút là cái code này giờ mỗi lần click chuột tại ô bất kì của file cell đó là nó sẽ xoáy 1 lúc. Như vậy có phải do cái code này không được tối ưu không nhỉ?
 
Code này chạy bình thường.
Thử:
PHP:
+ Code Sheet
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A3:A" & Rows.Count)) Is Nothing Then
        Call kedong
    End If
End Sub

+ Code Module
Sub kedong()
    Dim i&, Lr&
    Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row - 2
    For i = 3 To Lr
        Sheet16.Range("A3").Resize(i, 9).Borders.LineStyle = xlContinuous
    Next
End Sub
 
Mã:
Sub kedong()
Dim i&, cll As Range, Lr&
Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To Lr - 1
Sheet16.Range("A2").Resize(i, 9).Borders.LineStyle = xlContinuous
For Each cll In Range("C3:H122")
If cll <> Empty Then
cll.Borders(xlDiagonalUp).LineStyle = xlContinuous
End If
Next
Next
End Sub

cho tôi hỏi 1 chút là cái code này giờ mỗi lần click chuột tại ô bất kì của file cell đó là nó sẽ xoáy 1 lúc. Như vậy có phải do cái code này không được tối ưu không nhỉ?
Bạn cứ nghĩ mỗi lần click chuột nó phải kẻ lại cái khung (nếu dữ liệu ít thì không thấy, nhưng dữ liệu nhiều ngồi nhổ rậu xong nó vẫn cứ xoay đều xoay đều,...). Chỉ kẻ khung khi nào cần thiết chứ chỉ click chuột không không làm gì cả cũng kẻ khung thì thôi rồi, vã lại còn kẻ từng dòng nửa. Theo tôi thì chỉ kẻ khung khi muốn in chứ bình thường thì kệ nó đi, kẻ khung nhiều làm cho dung lượng file lớn và tốc độ xử lý cũng chậm.
 
Mã:
Sub kedong()
Dim i&, cll As Range, Lr&
Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To Lr - 1
Sheet16.Range("A2").Resize(i, 9).Borders.LineStyle = xlContinuous
For Each cll In Range("C3:H122")
If cll <> Empty Then
cll.Borders(xlDiagonalUp).LineStyle = xlContinuous
End If
Next
Next
End Sub

cho tôi hỏi 1 chút là cái code này giờ mỗi lần click chuột tại ô bất kì của file cell đó là nó sẽ xoáy 1 lúc. Như vậy có phải do cái code này không được tối ưu không nhỉ?
Code này mà chạy cho bảng 10000 dòng x 100 cột thì chắc treo máy luôn
Mấy cái việc tô màu, đóng khung gì gì đó ta có thể dùng Conditional Formating để làm hoặc làm bằng tay. Code kiết chỉ phí thời gian
 
Mã:
Sub kedong()
Dim i&, cll As Range, Lr&
Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To Lr - 1
Sheet16.Range("A2").Resize(i, 9).Borders.LineStyle = xlContinuous
For Each cll In Range("C3:H122")
If cll <> Empty Then
cll.Borders(xlDiagonalUp).LineStyle = xlContinuous
End If
Next
Next
End Sub

cho tôi hỏi 1 chút là cái code này giờ mỗi lần click chuột tại ô bất kì của file cell đó là nó sẽ xoáy 1 lúc. Như vậy có phải do cái code này không được tối ưu không nhỉ?
Bạn xem Code bài dưới của tôi, mỗi khi bạn tác động vào 1 Cell nào đó tại cột A, sẽ cho kết quả.
 
Thử:
PHP:
+ Code Sheet
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A3:A" & Rows.Count)) Is Nothing Then
        Call kedong
    End If
End Sub

+ Code Module
Sub kedong()
    Dim i&, Lr&
    Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row - 2
    For i = 3 To Lr
        Sheet16.Range("A3").Resize(i, 9).Borders.LineStyle = xlContinuous
    Next
End Sub
Cái này tôi nghĩ đâu cần dùng For, tốc độ sẽ chậm.
 
Bạn cứ nghĩ mỗi lần click chuột nó phải kẻ lại cái khung (nếu dữ liệu ít thì không thấy, nhưng dữ liệu nhiều ngồi nhổ rậu xong nó vẫn cứ xoay đều xoay đều,...). Chỉ kẻ khung khi nào cần thiết chứ chỉ click chuột không không làm gì cả cũng kẻ khung thì thôi rồi, vã lại còn kẻ từng dòng nửa. Theo tôi thì chỉ kẻ khung khi muốn in chứ bình thường thì kệ nó đi, kẻ khung nhiều làm cho dung lượng file lớn và tốc độ xử lý cũng chậm.
Cái này là do mấy em còn đang hớn hở khi biết nó có thể tự động được ấy mà bạn ạ. Nhiều khi mình thì nghĩ đơn giản vậy thôi mà các sếp lại muốn cái gì cũng tự động, bữa này cho mấy sếp ra làm chén nước chè vô là vừa rồi.:D
Bài đã được tự động gộp:

Bạn xem Code bài dưới của tôi, mỗi khi bạn tác động vào 1 Cell nào đó tại cột A, sẽ cho kết quả.
tôi đang thử rồi, nhưng bạn có thể cho thêm
Code này mà chạy cho bảng 10000 dòng x 100 cột thì chắc treo máy luôn
Mấy cái việc tô màu, đóng khung gì gì đó ta có thể dùng Conditional Formating để làm hoặc làm bằng tay. Code kiết chỉ phí thời gian
Bác thông cảm, đang trong giai đoạn quá độ lên công nghệ 4.0 ạ
Bài đã được tự động gộp:

Thử:
PHP:
+ Code Sheet
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A3:A" & Rows.Count)) Is Nothing Then
        Call kedong
    End If
End Sub

+ Code Module
Sub kedong()
    Dim i&, Lr&
    Lr = Sheet16.Range("A" & Rows.Count).End(xlUp).Row - 2
    For i = 3 To Lr
        Sheet16.Range("A3").Resize(i, 9).Borders.LineStyle = xlContinuous
    Next
End Sub
Cái này đỡ chậm hơn rất nhiều rồi nhé, xin cám ơn!
 
Lần chỉnh sửa cuối:
xin chào anh/chị
hiện tôi đang muốn kẻ dòng tự động, khi nhập dữ liệu vào cột A, thì nó sẽ tự động kẻ dòng.
...................................
xin cám ơn!
Bạn tham khảo cách sau, cứ nhập dữ liệu bình thường khi nào cần tô viềng thì mới cho chạy code.
Với điều kiện dòng 2 phải trống (nếu có dữ liệu nó tô viềng luôn).

- Code 1: Tô nét liền cho dữ liệu.
Mã:
Sub ToVieng_Mot()
    Sheet16.Range("A3").CurrentRegion.Borders.LineStyle = xlContinuous
End Sub

- Code 2: Tô nét liền cho cột và tô nét đứt cho dòng.
Mã:
Sub ToVieng_Hai()
    Sheet16.Range("A3").CurrentRegion.Borders(xlInsideHorizontal).Weight = xlHairline
End Sub
 
Bạn tham khảo cách sau, cứ nhập dữ liệu bình thường khi nào cần tô viềng thì mới cho chạy code.
Với điều kiện dòng 2 phải trống (nếu có dữ liệu nó tô viềng luôn).

- Code 1: Tô nét liền cho dữ liệu.
Mã:
Sub ToVieng_Mot()
    Sheet16.Range("A3").CurrentRegion.Borders.LineStyle = xlContinuous
End Sub

- Code 2: Tô nét liền cho cột và tô nét đứt cho dòng.
Mã:
Sub ToVieng_Hai()
    Sheet16.Range("A3").CurrentRegion.Borders(xlInsideHorizontal).Weight = xlHairline
End Sub
Xin cám ơn bạn nhé!
Chúc bạn ngày vui!
 
Web KT

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

Back
Top Bottom