tự động chèn dòng trong vba

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

thierry henry

Thành viên mới
Tham gia
11/6/18
Bài viết
28
Được thích
0
em có file chứa bảng tính từ A1 đến H10 , khi dòng cuối chứa dữ liệu cách dòng trống cuối cùng của bảng tính thì tự động chèn dòng . em viết code chạy nhưng không không ra kết quả . mong các bác giúp . xin cảm ơn
 

File đính kèm

  • chèn dòng.xlsm
    25.1 KB · Đọc: 6
Mình xin được phép dịch các câu bài viết của bạn sang tiếng Việt, nha:
"em có file chứa bảng tính từ A1 đến H10 , ": File của em có dữ liệu từ A1. . H10
"Khi dòng cuối chứa dữ liệu cách dòng trống cuối cùng": ???
. . . & không biết chèn đòng vào đâu là cái chắc!
 
Upvote 0
Mình xin được phép dịch các câu bài viết của bạn sang tiếng Việt, nha:
"em có file chứa bảng tính từ A1 đến H10 , ": File của em có dữ liệu từ A1. . H10
"Khi dòng cuối chứa dữ liệu cách dòng trống cuối cùng": ???
. . . & không biết chèn đòng vào đâu là cái chắc!
dạ khi dòng cuối cùng có chứa dữ liệu của cột C cách dòng trống cuối cùng của bảng tính thì tự chèn thêm dòng . Em có xem trên youtube thì sẽ tự động chèn dòng khi dòng cuối chứa chữ tổng cộng nhưng đây thì khi mình nhập liệu tới dòng số 9 tức là dòng cuối có chứa dữ liệu , còn 1 dòng trống nữa là hết bảng tính thì tự chèn thêm dòng . xin các sư phụ chỉ giáo
Bài đã được tự động gộp:

dạ khi dòng cuối cùng có chứa dữ liệu của cột C cách dòng trống cuối cùng của bảng tính thì tự chèn thêm dòng . Em có xem trên youtube thì sẽ tự động chèn dòng khi dòng cuối chứa chữ tổng cộng nhưng đây thì khi mình nhập liệu tới dòng số 9 tức là dòng cuối có chứa dữ liệu , còn 1 dòng trống nữa là hết bảng tính thì tự chèn thêm dòng . xin các sư phụ chỉ giáo
Liên kết: https://www.youtube.com/watch?v=HPgwHlVP9Sc
 
Upvote 0
Ở phần hướng dẫn trong video có ô mang dữ liệu 'Tổng cộng:" làm chuẩn để thêm trên nó 1 dòng
Vậy bạn sẽ có gì để làm chuẩn hay chưa?

& hỏi luôn thể: Chuển đó đang ở cột nào?
 
Upvote 0
Ở phần hướng dẫn trong video có ô mang dữ liệu 'Tổng cộng:" làm chuẩn để thêm trên nó 1 dòng
Vậy bạn sẽ có gì để làm chuẩn hay chưa?

& hỏi luôn thể: Chuển đó đang ở cột nào?
Dạ thưa thầy ! ý tưởng của em là khi phát sinh dữ liệu tới đâu thì nó sẽ tự bao viền đến đó hoặc tự xác định dòng trống cuối cùng của bảng tính cách dòng dữ liệu cuối cùng của cột C là 1 dòng thì tự chèn thêm dòng . Mong thầy cho ý kiến
 
Upvote 0
Dạ thưa thầy ! ý tưởng của em là khi phát sinh dữ liệu tới đâu thì nó sẽ tự bao viền đến đó hoặc tự xác định dòng trống cuối cùng của bảng tính cách dòng dữ liệu cuối cùng của cột C là 1 dòng thì tự chèn thêm dòng . Mong thầy cho ý kiến
Nếu như video bạn đưa thì bạn xem file, click vào ô A9 (dưới dòng dữ liệu cuối cùng).
 

File đính kèm

  • chèn dòng_GPE.xlsm
    24.2 KB · Đọc: 2
Upvote 0
Vì bạn không có text ở dòng cuối, hay có mốc nào để xác định dòng cuối
Nên tôi giả sử dòng cuối là dòng cuối có border (ô có viền)
Như vậy giả sử dòng cuối là dòng 10, Khi nhập dữ liệu vào cột C dòng kế cuối (dòng 9), nó sẽ nhận diện ô C11 (cách 2 ô) là ô không có border, và insert giữa dòng 9 và 10
Nhập data vào cột C để xem sự thay đổi:
Code đặt trong sheet "NKN-X" module (không đặt trong general module)
PHP:
Option Explicit

'code này kich hoat khi nhap du lieu vao cot C
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastCell As Range ' O cach duoi 2 dong
If Target.Count > 1 Or Target.Column <> 3 Then Exit Sub ' Neu côt C khong doi hay  copy/paste nhieu o thi thoat ra
Set LastCell = Target.Offset(2, 0) 'kiem tra o cach duoi 2 dong
If LastCell.Borders(xlEdgeBottom).LineStyle <> 1 Then ' Neu o do khong co border duoi net lien
    Range(Cells(Target.Row + 1, "A"), Cells(Target.Row + 1, "H")).Insert Shift:=xlDown ', CopyOrigin:=xlFormatFromLeftOrAbove
End If
End Sub
 

File đính kèm

  • chèn dòng.xlsm
    23 KB · Đọc: 1
Upvote 0
Vì bạn không có text ở dòng cuối, hay có mốc nào để xác định dòng cuối
Nên tôi giả sử dòng cuối là dòng cuối có border (ô có viền)
Như vậy giả sử dòng cuối là dòng 10, Khi nhập dữ liệu vào cột C dòng kế cuối (dòng 9), nó sẽ nhận diện ô C11 (cách 2 ô) là ô không có border, và insert giữa dòng 9 và 10
Nhập data vào cột C để xem sự thay đổi:
Code đặt trong sheet "NKN-X" module (không đặt trong general module)
PHP:
Option Explicit

'code này kich hoat khi nhap du lieu vao cot C
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastCell As Range ' O cach duoi 2 dong
If Target.Count > 1 Or Target.Column <> 3 Then Exit Sub ' Neu côt C khong doi hay  copy/paste nhieu o thi thoat ra
Set LastCell = Target.Offset(2, 0) 'kiem tra o cach duoi 2 dong
If LastCell.Borders(xlEdgeBottom).LineStyle <> 1 Then ' Neu o do khong co border duoi net lien
    Range(Cells(Target.Row + 1, "A"), Cells(Target.Row + 1, "H")).Insert Shift:=xlDown ', CopyOrigin:=xlFormatFromLeftOrAbove
End If
End Sub
dạ em cảm ơn các thầy . em đã tìm ra code . nhưng em cũng sẽ tham khảo tiếp thu ý kiến của các thầy .
Code của em đây ạ :
Sub chendong1()
Dim lR As Long, i As Long
Application.ScreenUpdating = 0
lR = Sheets("NKN-X").Range("C" & Rows.Count).End(xlUp).Row
For i = 2 To lR
With Sheets("NKN-X")
If .Range("A" & i) <> "" And .Range("A" & i).Offset(1, 0) = "" Then
.Rows(i & ":" & i).Offset(1, 0).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
i = i + 1
End If
End With
Next i
Application.ScreenUpdating = 1
End Sub
 

File đính kèm

  • chèn dòng.xlsm
    24.9 KB · Đọc: 2
Upvote 0
DẠ CÁC THẦY CHO EM HỎI , GIỜ NẾU MÌNH MUỐN BỎ BAO VIỀN TỪ RANGE("a2:h") TÌM DONG CUỐI Ở c THÌ THẾ NÀO Ạ . EM TÍNH DÙNG MẢNG ĐỘNG NHƯNG TRÌNH CHƯA ĐỦ . VÌ NẾU
Dim lR As Long
lR = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row

If ActiveSheet.Range("C" & lR) = "" Then
ActiveSheet.Cells.Borders.LineStyle = xlNone
HOẶC
ActiveSheet.Range("A2:H" & lR).Borders.LineStyle = xlNone
HOẶC
ActiveSheet.Range("A2:H1000").Borders.LineStyle = xlNone
End If
THÌ NÓ SẼ BỎ HẾT TOÀN BỘ BAO VIỀN CỦA SHEET HOẶC CHỈ BỎ PHẠM VI Range("A2:H" & lR) , Range("A2:H1000")

MONG CÁC CAO THỦ CHỈ GIÁO
 

File đính kèm

  • chèn dòng1.xlsm
    28.1 KB · Đọc: 0
Upvote 0
Web KT

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

Back
Top Bottom