Mình thấy câu lệnh của bạn hơi lạ, theo mình thì chỉ cần như thế này là đủ:Với cú pháp (hay câu lệnh) : ActiveCell.Offset(0, 1).Range("A1").Select
PHần đầu thì em hiểu là di chuyển qua 1 cột còn phần "Range("A1").Select" thì em không hiểu. Tại sao lại hay có "A1"?
Cám ơn nhiều.
ActiveCell.Offset(0, 1).Select
Sub GPE_COM()
ActiveCell.Offset(0, 1).Range("A1").Select
MsgBox Selection.Address
End Sub
ActiveCell.Offset(0, 1).[COLOR="red"]Range("A1")[/COLOR].Select
Sheets(1).Activate
Range("A1").select
ActiveCell.Offset(0, 1).Cells(1,1).Select
Sheets("Sheet2").Select:Range("MyDBStart").Select
MsgBox Selection.Address,,"GPE 1"
ActiveCell.Offset(Range("ToTalRecord").Value,0).Ra nge("A1").Select
MsgBox Selection.Address,,"GPE 2"
ActiveCell.Offset(0,0).Range("A1").Select:ActiveCe ll.Value=XDate
MsgBox Selection.Address,,xDate
ActiveCell.Offset(0,0).Range("A1").Select:ActiveCe ll.Value=XSo
MsgBox Selection.Address,,XSo
ActiveCell.Offset(0,0).Range("A1").Select:ActiveCe ll.Value=XLoai
MsgBox Selection.Address,,XLoai
Range("MSCOUNT").Select: XRecords = ActiveCell.Value ' tính số record mới nhập trong form
Range("Supplier").Select: XSupplier = ActiveCell.Value ' lưu tên nhà ccấp vào biến
ActiveCell.Offset(1, 0).Range("A1").Select: XDate = ActiveCell.Value ' lưu tên nhà ngày vào biến
Range("B6:G" & XRecords + 5).Select ' chọn dãy record mới thêm vào
Selection.Copy ' copy
Sheets("Data").Select ' chọn sheet dữ liệu
XDem = ActiveSheet.Range("TOTALRECORD").Value + 3 ' ktra đã có bao nhiêu record
ActiveSheet.Range("$A$" & XDem & ":$A$" & (XDem + XRecords - 1)).Value = XDate 'nhảy đến field đầu (ngày) của record mới, sau record cuối cùng, chọn bao, gán vào
ActiveSheet.Range("$B$" & XDem & ":$B$" & (XDem + XRecords - 1)).Value = XSupplier ' tương tự.
ActiveSheet.Range("C" & XDem).Select ' nhảy đến field kế tiếp.
ActiveSheet.Paste ' paste
ActiveSheet.Range("TOTALRECORD").Value = ActiveSheet.Range("TOTALRECORD").Value + XRecords ' cộng số vào tổng record.
Mình xem code của bạn rồi, thật khó dịch quá vì tham chiếu của bạn không phải theo địa chỉ ô mà lại theo Name nên không xác định được vị trí. Thôi thì thế này, bạn đưa file đó lên đây mình sẽ làm ngay cho bạn còn không thì bó tay rồi. Mong bạn thông cảm.
Private Sub XYARN_BUY_CLEAR_Click()
intResponse = MsgBox("Chac an chua ?", vbYesNo + vbQuestion, "Are you OK?")
If intResponse = vbNo Then
Exit Sub
End If
Sheet4.[D2:D3] = "": Sheet4.[A6:G10].ClearContents
Sheet4.[D2].Active
End Sub
'-------------------------------------------------------
Private Sub XYARN_BUY_SAVE_Click()
Dim dong As Integer, Clls As Range, i
With Sheet4
dong = WorksheetFunction.Max(.[A6:A10])
[COLOR=seagreen]'Code kiem tra khong bo trong du lieu[/COLOR]
If .[D2] = "" Then
MsgBox "Tai o D2 chua co du lieu."
.[D2].Active: Exit Sub
End If
If .[D3] = "" Then
MsgBox "Tai o D3 chua co du lieu."
.[D3].Active: Exit Sub
End If
For Each Clls In .Cells(6, 1).Resize(dong, 6)
If Clls = "" Then
MsgBox "Tai o " & Clls.Address & " chua co du lieu."
Clls.Activate: Exit Sub
End If: Next
[COLOR=green]'Code Nhap vao Data[/COLOR]
Set Clls = Sheet2.[A65536].End(xlUp).Offset(1)
Clls.Resize(dong).Value = .[D3].Value
Clls.Offset(, 1).Resize(dong).Value = .[D2].Value
Clls.Offset(, 2).Resize(dong, 6).Value = .[B6].Resize(dong, 6).Value
[COLOR=green]'Code reset Form[/COLOR]
.[D2:D3] = "":: .[A6:G10].ClearContents
.[D2].Active
End With
End Sub
1.Em hiểu gần hết đoạn code của bác. Tuyệt thật. chỉ có dòng em ghi chú màu đỏ là nhờ bác giải thích.Toàn bộ Code của bạn sau điều chỉnh như sau (Code nhap bao gồm 3 phần: Kiểm tra - Nhập - Xoá Form):
File mình gửi theo Email rồiMã:Private Sub XYARN_BUY_CLEAR_Click() intResponse = MsgBox("Chac an chua ?", vbYesNo + vbQuestion, "Are you OK?") If intResponse = vbNo Then Exit Sub End If Sheet4.[D2:D3] = "": Sheet4.[A6:G10].ClearContents Sheet4.[D2].Active End Sub '------------------------------------------------------- Private Sub XYARN_BUY_SAVE_Click() Dim dong As Integer, Clls As Range, i With Sheet4 dong = WorksheetFunction.Max(.[A6:A10]) [COLOR=seagreen]'Code kiem tra khong bo trong du lieu[/COLOR] If .[D2] = "" Then MsgBox "Tai o D2 chua co du lieu." .[D2].Active: Exit Sub End If If .[D3] = "" Then MsgBox "Tai o D3 chua co du lieu." .[D3].Active: Exit Sub End If For Each Clls In .Cells(6, 1).Resize(dong, 6) If Clls = "" Then MsgBox "Tai o " & Clls.Address & " chua co du lieu." Clls.Activate: Exit Sub End If: Next [COLOR=green]'Code Nhap vao Data[/COLOR] Set Clls = Sheet2.[A65536].End(xlUp).Offset(1) [COLOR="red"]'Bác vui lòng giải thích dòng này giúp em.[/COLOR] Clls.Resize(dong).Value = .[D3].Value Clls.Offset(, 1).Resize(dong).Value = .[D2].Value Clls.Offset(, 2).Resize(dong, 6).Value = .[B6].Resize(dong, 6).Value [COLOR=green]'Code reset Form[/COLOR] .[D2:D3] = "":: .[A6:G10].ClearContents .[D2].Active End With End Sub
Sheet2.[B65536].End(xlUp): nếu em thay "A" bằng "B" thì là ô cuối của cột B của Sheet Data hả anh?1/Set Clls = Sheet2.[A65536].End(xlUp).Offset(1). Giờ ta phân tích nhé
Sheet2.[A65536].End(xlUp): Đây là ô cuối cùng có dữ liệu trên cột A của Sheet Data.