Xin chào mọi người.
Em có file excel copy dữ liệu từ sheet 1 sang sheet 2. Hiện tại code em đã chạy rồi. Tuy nhiên có 1 vấn đề là:
- Khi em nhập dữ liệu vào dòng 12 đủ dữ liệu. Dòng 13 e nhập thiếu dữ liệu ở cột D (Tên hàng) hoặc cột F (Số lượng) dữ liệu dòng 12 vẫn được ghi vào sheet 2. Và sẽ có thông báo hiện ra để em nhập dữ liệu cho ô dữ liệu còn thiếu đó.
- Sau đó em bấm ghi dữ liệu thì phần mềm sẽ ghi dòng 12 và 13 vào sheet 2.
- Như vậy ở sheet 2 của e sẽ có 3 dòng dữ liệu: 2 dòng đầu sẽ có cùng nội dung như nhau do ở lần bấm Ghi đầu tiên thì dòng 12 đã được ghi vào sheet 2. Khi bấm ghi lần nữa (sau khi đã sửa lại dữ liệu cho đầy đủ) thì dữ liệu sẽ bị trùng
Code em đang viết đây:
Sub CL_Save()
'Khai bao bien
'Dong cuoi data
Dim lr_data As Long
lr_data = Sheet2.Range("D" & Rows.Count).End(xlUp).Row
'Dong cuoi CL
Dim lr_cl As Long
lr_cl1 = Sheet1.Range("D" & Rows.Count).End(xlUp).Row
'Bien so luong
Dim lr_SoLuong As Long
lr_SoLuong = Sheet1.Range("F" & Rows.Count).End(xlUp).Row
'Bien luan cac truong hop khong luu
Dim ThongBao As Long
ThongBao = MsgBox("Save data", vbOKCancel + vbInformation + vbDefaultButton1, "Thong Bao")
Select Case ThongBao
Case vbOK
If lr_cl <= 11 Then
MsgBox "Khong co ten hang hoa"
Exit Sub
ElseIf lr_SoLuong <= 11 Then
MsgBox "Khong co so luong"
Exit Sub
Else
'Lenh luu
Dim i As Long
For i = 12 To lr_cl
If Sheet1.Range("D" & i).Value <> "" And Sheet1.Range("F" & i).Value <> "" And Sheet1.Range("I1").Value <> "" And Sheet1.Range("I2").Value <> "" Then
Sheet2.Range("B" & lr_data + 1 & ":I" & lr_data + 1).Value = _
Sheet1.Range("B" & i & ":I" & i).Value
Sheet2.Range("A" & lr_data + 1).Value = Sheet1.Range("C7").Value
Sheet2.Range("J" & lr_data + 1).Value = Sheet1.Range("I2").Value
Sheet2.Range("K" & lr_data + 1).Value = Sheet1.Range("I1").Value
lr_data = lr_data + 1
Else
MsgBox "Kiem tra Ten hang, So luong, Khu vuc hoac Loai khong duoc de trong"
Exit Sub
End If
Next i
MsgBox "Luu thanh cong"
End If
End Select
End Sub
Nhờ các bác chỉnh lại giúp em code để có thể kiểm tra toàn bộ dữ liệu ở sheet 1 đủ thì mới ghi qua sheet 2. Chứ không phải đang kiểm tra từng dòng như em ạ
Em mới lọ mọ xem youtube được vài bữa nên chưa biết cách làm. Mong các bác thông cảm ạ.
Em có đính kèm file em đang code
Ah có bác nào bonus giúp em cái code sắp xếp dữ liệu lại "Giảm dần" theo ngày sau mỗi lần ghi dữ liệu luôn thì càng tốt ạ.
Em cảm ơn các bác trước!
Em có file excel copy dữ liệu từ sheet 1 sang sheet 2. Hiện tại code em đã chạy rồi. Tuy nhiên có 1 vấn đề là:
- Khi em nhập dữ liệu vào dòng 12 đủ dữ liệu. Dòng 13 e nhập thiếu dữ liệu ở cột D (Tên hàng) hoặc cột F (Số lượng) dữ liệu dòng 12 vẫn được ghi vào sheet 2. Và sẽ có thông báo hiện ra để em nhập dữ liệu cho ô dữ liệu còn thiếu đó.
- Sau đó em bấm ghi dữ liệu thì phần mềm sẽ ghi dòng 12 và 13 vào sheet 2.
- Như vậy ở sheet 2 của e sẽ có 3 dòng dữ liệu: 2 dòng đầu sẽ có cùng nội dung như nhau do ở lần bấm Ghi đầu tiên thì dòng 12 đã được ghi vào sheet 2. Khi bấm ghi lần nữa (sau khi đã sửa lại dữ liệu cho đầy đủ) thì dữ liệu sẽ bị trùng
Code em đang viết đây:
Sub CL_Save()
'Khai bao bien
'Dong cuoi data
Dim lr_data As Long
lr_data = Sheet2.Range("D" & Rows.Count).End(xlUp).Row
'Dong cuoi CL
Dim lr_cl As Long
lr_cl1 = Sheet1.Range("D" & Rows.Count).End(xlUp).Row
'Bien so luong
Dim lr_SoLuong As Long
lr_SoLuong = Sheet1.Range("F" & Rows.Count).End(xlUp).Row
'Bien luan cac truong hop khong luu
Dim ThongBao As Long
ThongBao = MsgBox("Save data", vbOKCancel + vbInformation + vbDefaultButton1, "Thong Bao")
Select Case ThongBao
Case vbOK
If lr_cl <= 11 Then
MsgBox "Khong co ten hang hoa"
Exit Sub
ElseIf lr_SoLuong <= 11 Then
MsgBox "Khong co so luong"
Exit Sub
Else
'Lenh luu
Dim i As Long
For i = 12 To lr_cl
If Sheet1.Range("D" & i).Value <> "" And Sheet1.Range("F" & i).Value <> "" And Sheet1.Range("I1").Value <> "" And Sheet1.Range("I2").Value <> "" Then
Sheet2.Range("B" & lr_data + 1 & ":I" & lr_data + 1).Value = _
Sheet1.Range("B" & i & ":I" & i).Value
Sheet2.Range("A" & lr_data + 1).Value = Sheet1.Range("C7").Value
Sheet2.Range("J" & lr_data + 1).Value = Sheet1.Range("I2").Value
Sheet2.Range("K" & lr_data + 1).Value = Sheet1.Range("I1").Value
lr_data = lr_data + 1
Else
MsgBox "Kiem tra Ten hang, So luong, Khu vuc hoac Loai khong duoc de trong"
Exit Sub
End If
Next i
MsgBox "Luu thanh cong"
End If
End Select
End Sub
Nhờ các bác chỉnh lại giúp em code để có thể kiểm tra toàn bộ dữ liệu ở sheet 1 đủ thì mới ghi qua sheet 2. Chứ không phải đang kiểm tra từng dòng như em ạ
Em mới lọ mọ xem youtube được vài bữa nên chưa biết cách làm. Mong các bác thông cảm ạ.
Em có đính kèm file em đang code
Ah có bác nào bonus giúp em cái code sắp xếp dữ liệu lại "Giảm dần" theo ngày sau mỗi lần ghi dữ liệu luôn thì càng tốt ạ.
Em cảm ơn các bác trước!