Tạo code Lưu và Xóa dữ liệu

Liên hệ QC

saobekhonglac

Thành viên mới
Tham gia
1/11/08
Bài viết
1,565
Được thích
1,454
Giới tính
Nam
Chào anh/chị.

Em có file excel, em muốn táo code lưu và xóa dữ liệu sau cho:
Khi em nhập dữ liệu vào sheet MuaBH (từ B11 đến L30) và bấm nút Lưu thì dữ liệu từ B11 đến L30 sẽ được lưu lần lượt vào B3 đến L3 bên sheet Sum (lưu từ dòng 3 đến dòng 11, lưu giá trị). Mỗi lần lưu thì chỉ lưu những dòng có dữ liệu trong sheet MuaBH. Khi bấm nút xóa thì dữ liệu từ B11 đến L30 sẽ được xóa sạch. Khi nhập dữ liệu mới từ B11 đến L30 và bấm lưu thì dữ liệu lưu lần 2 sẽ cập nhật bên dưới dữ liệu lưu lần 1 (lần 1 9 dòng thì sẽ lưu từ dòng 3 đến dòng 11, lần 2 nhập 5 dòng thì sẽ lưu từ dòng 12 đến dòng 16.

Cám ơn anh/chị.
 
Chào anh/chị.

Em có file excel, em muốn táo code lưu và xóa dữ liệu sau cho:
Khi em nhập dữ liệu vào sheet MuaBH (từ B11 đến L30) và bấm nút Lưu thì dữ liệu từ B11 đến L30 sẽ được lưu lần lượt vào B3 đến L3 bên sheet Sum (lưu từ dòng 3 đến dòng 11, lưu giá trị). Mỗi lần lưu thì chỉ lưu những dòng có dữ liệu trong sheet MuaBH. Khi bấm nút xóa thì dữ liệu từ B11 đến L30 sẽ được xóa sạch. Khi nhập dữ liệu mới từ B11 đến L30 và bấm lưu thì dữ liệu lưu lần 2 sẽ cập nhật bên dưới dữ liệu lưu lần 1 (lần 1 9 dòng thì sẽ lưu từ dòng 3 đến dòng 11, lần 2 nhập 5 dòng thì sẽ lưu từ dòng 12 đến dòng 16.

Cám ơn anh/chị.
Bạn có thể tham khảo code dưới đây, tuy hơi dài
PHP:
Sub CapNhat()
    LR = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
    startRow = 3
    For i = 11 To LR
        With Sheet2
            .Range("B" & startRow).Resize(1).Value = Sheet1.Range("B" & i).Value
            .Range("C" & startRow).Resize(1).Value = Sheet1.Range("C" & i).Value
            .Range("D" & startRow).Resize(1).Value = Sheet1.Range("A" & i).Value
            .Range("E" & startRow).Resize(1).Value = Sheet1.Range("B" & i).Value
            .Range("F" & startRow).Resize(1).Value = Sheet1.Range("C" & i).Value
            .Range("G" & startRow).Resize(1).Value = Sheet1.Range("D" & i).Value
            .Range("H" & startRow).Resize(1).Value = Sheet1.Range("E" & i).Value
            .Range("I" & startRow).Resize(1).Value = Sheet1.Range("I" & i).Value
            .Range("J" & startRow).Resize(1).Value = Sheet1.Range("J" & i).Value
            .Range("K" & startRow).Resize(1).Value = Sheet1.Range("K" & i).Value
            .Range("L" & startRow).Resize(1).Value = Sheet1.Range("L" & i).Value
        End With
        startRow = startRow + 1
    Next
End Sub

Sub XOA()
    Sheets("MuaBH").Range("A11:L30").ClearContents
End Sub
 
Chào anh/chị.

Em có file excel, em muốn táo code lưu và xóa dữ liệu sau cho:
Khi em nhập dữ liệu vào sheet MuaBH (từ B11 đến L30) và bấm nút Lưu thì dữ liệu từ B11 đến L30 sẽ được lưu lần lượt vào B3 đến L3 bên sheet Sum (lưu từ dòng 3 đến dòng 11, lưu giá trị). Mỗi lần lưu thì chỉ lưu những dòng có dữ liệu trong sheet MuaBH. Khi bấm nút xóa thì dữ liệu từ B11 đến L30 sẽ được xóa sạch. Khi nhập dữ liệu mới từ B11 đến L30 và bấm lưu thì dữ liệu lưu lần 2 sẽ cập nhật bên dưới dữ liệu lưu lần 1 (lần 1 9 dòng thì sẽ lưu từ dòng 3 đến dòng 11, lần 2 nhập 5 dòng thì sẽ lưu từ dòng 12 đến dòng 16.

Cám ơn anh/chị.
Lại phải gõ hai mươi kí tự.
 

File đính kèm

Nhờ anh tạo thêm giúp em điều kiện nếu M2 = “OK” thì mới cho lưu, không thì sẽ hiện thông báo “đã lưu rồi”.
Cám ơn anh.

Mã:
Sub Luu()
Dim Data
With Sheets("MuaBH")
    Data = Range(.[B11], .[B65000].End(3)).Resize(, 11).Value
End With
With Sheets("Sum")
    .[B65000].End(3).Offset(1).Resize(UBound(Data), UBound(Data, 2)) = Data
End With
End Sub
Mã:
Sub Xoa()
With Sheets("MuaBH")
    If .[B65000].End(3).Row > 10 Then Range(.[B11], .[B65000].End(3)).Resize(, 11).ClearContents
End With
End Sub
 
Anh ơi. Trường hợp nếu không nhập dữ liệu gì hết thì khi bấm lưu nó sẽ lưu dữ liệu dữ liệu ở dòng 10 của sheet MuaBH sang sheet Sum.

Cám ơn.

Mã:
Sub Luu()
Dim Data, Kt$
With Sheets("MuaBH")
    Data = Range(.[B11], .[B65000].End(3)).Resize(, 11).Value
    Kt = UCase(.[M2].Value)
End With
With Sheets("Sum")
If Kt = "OK" Then
    MsgBox "Ban da luu roi": Exit Sub
Else
    .[B65000].End(3).Offset(1).Resize(UBound(Data), UBound(Data, 2)) = Data
End If
End With
End Sub
 
Anh HPKhuong oi. Anh sửa thêm giúp em là khi nhấn nút Lưu thì sẽ lưu dữ liệu và đồng thời lưu luôn file Excel được không anh.

Cám ơn anh.

Chưa nhập gì mà sao lại nhấn Lưu làm chi? Bạn rảnh quá hỉ?
Mã:
Sub Luu()
Dim Data, Kt$
With Sheets("MuaBH")
    If .[B65000].End(3).Row < 11 Then MsgBox "Ban chua nhap du lieu": Exit Sub
    Data = Range(.[B11], .[B65000].End(3)).Resize(, 11).Value
    Kt = UCase(.[M2].Value)
End With
With Sheets("Sum")
If Kt = "OK" Then
    MsgBox "Ban da luu roi": Exit Sub
Else
    .[B65000].End(3).Offset(1).Resize(UBound(Data), UBound(Data, 2)) = Data
End If
End With
End Sub
 
Anh HPKhuong oi. Anh sửa thêm giúp em là khi nhấn nút Lưu thì sẽ lưu dữ liệu và đồng thời lưu luôn file Excel được không anh.

Cám ơn anh.
Vậy bạn chỉ cần thêm code sau vào trước dòng End Sub là được rồi.
Mã:
ThisWorkbook.Save
 
Web KT

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

Back
Top Bottom