Tự động thêm và xóa dòng VBA!!! (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

vuvietquang90

Thành viên chính thức
Tham gia
29/10/15
Bài viết
68
Được thích
0
Chào cả nhà, VBA em mù tịt mong các bác giúp ca khó này với. Bảng tính có các cột và dòng như hình
Cột bôi vàng là em dùng các số tt lấy ở sheet "WATER CONSUMPTION", bình thường em chạy hàm Vlookup từ các số này vào vùng bôi vàng, nhưng các số biến đổi không phải lúc nào cũng cùng 1 số lượng giống nhau nên nếu nhiều số tt thì sẽ phải insert thêm dòng và ít số thứ tự thì sẽ phải delete các dòng thừa đi
1.jpg
Sau khi gõ xong 1 số ở cột bôi vàng thì ngay lập tức 1 hàng được chèn vào dưới hàng bôi vàng với format như hàng trên
2.jpg
Nếu xóa các số 53,54,55, 57 ở cột bôi vàng (cột AN) đi thì ngay lập tức nó sẽ xóa dòng vừa chèn ở vùng bôi vàng đi luôn, nếu xóa hết 53,54,55, 57 thì ngay lập tức các dòng 32,33,34,35 sẽ bị xóa (như hide dòng nhưng ở đây là xóa hẳn đi luôn)



Tóm lại đề bài là: Tức là chỉ để 1 dòng trên dòng "tổng cộng" nếu thêm nội dung vào cột AN thì nó sẽ tự động chèn thêm dòng, nếu xóa nội dung thì nó sẽ xóa dòng, các dòng của cột nội dung nếu xóa hết nội dung thì nó sẽ cũng xóa ngay dòng đó đi
Nhưng phải là NGAY LẬP TỨC thực hiện lệnh
Đây là file excel của em


 

File đính kèm

Lần chỉnh sửa cuối:
Chào cả nhà, VBA em mù tịt mong các bác giúp ca khó này với. Bảng tính có các cột và dòng như hình
Cột bôi vàng là em dùng các số tt lấy ở sheet "WATER CONSUMPTION", bình thường em chạy hàm Vlookup từ các số này vào vùng bôi vàng, nhưng các số biến đổi không phải lúc nào cũng cùng 1 số lượng giống nhau nên nếu nhiều số tt thì sẽ phải insert thêm dòng và ít số thứ tự thì sẽ phải delete các dòng thừa đi
View attachment 170083
Sau khi gõ xong 1 số ở cột bôi vàng thì ngay lập tức 1 hàng được chèn vào dưới hàng bôi vàng với format như hàng trên
View attachment 170088
Nếu xóa các số 53,54,55, 57 ở cột bôi vàng (cột AN) đi thì ngay lập tức nó sẽ xóa dòng vừa chèn ở vùng bôi vàng đi luôn, nếu xóa hết 53,54,55, 57 thì ngay lập tức các dòng 32,33,34,35 sẽ bị xóa (như hide dòng nhưng ở đây là xóa hẳn đi luôn)



Tóm lại đề bài là: Tức là chỉ để 1 dòng trên dòng "tổng cộng" nếu thêm nội dung vào cột AN thì nó sẽ tự động chèn thêm dòng, nếu xóa nội dung thì nó sẽ xóa dòng, các dòng của cột nội dung nếu xóa hết nội dung thì nó sẽ cũng xóa ngay dòng đó đi
Nhưng phải là NGAY LẬP TỨC thực hiện lệnh
Đây là file excel của em



trong sheet bill 3
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 40 Then Call fillDL
End Sub

trong module

Mã:
Sub fillDL()
    Dim cn As Object, lr As Integer, soct As Integer
    soct = Range("AN1").End(xlDown).Row + 31
    lr = Range("B32").End(xlDown).Row
    Rows("32:" & lr).Delete Shift:=xlUp
    Rows("32:" & soct).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Range("B32").CopyFromRecordset cn.Execute("select b.f5, '', b.f7, '','','','','','','', b.f8,'','','','','', b.f9, b.f10,'','','','', b.f12,'','','','', b.f13,'','','','',b.f14 " & _
                                                "from [bill 3$AN1:AN] a inner join [WATER CONSUMPTION$A6:N] b on a.f1 = b.f1 where a.f1 is not null")
    Set cn = Nothing
    Range("AH" & soct + 1).Formula = "=SUM(AH32:AH" & soct & ")"
End Sub
 
Upvote 0
trong sheet bill 3
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 40 Then Call fillDL
End Sub

trong module

Mã:
Sub fillDL()
    Dim cn As Object, lr As Integer, soct As Integer
    soct = Range("AN1").End(xlDown).Row + 31
    lr = Range("B32").End(xlDown).Row
    Rows("32:" & lr).Delete Shift:=xlUp
    Rows("32:" & soct).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Range("B32").CopyFromRecordset cn.Execute("select b.f5, '', b.f7, '','','','','','','', b.f8,'','','','','', b.f9, b.f10,'','','','', b.f12,'','','','', b.f13,'','','','',b.f14 " & _
                                                "from [bill 3$AN1:AN] a inner join [WATER CONSUMPTION$A6:N] b on a.f1 = b.f1 where a.f1 is not null")
    Set cn = Nothing
    Range("AH" & soct + 1).Formula = "=SUM(AH32:AH" & soct & ")"
End Sub
Bac có thể hướng dẫn rõ hơn 1 chút đc k ah? em vẫn chưa làm đc bác ah
 
Upvote 0

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom