Sửa dùm code cập nhật Sheet sang Sheet

Liên hệ QC

chapi.you

Thành viên mới
Tham gia
24/3/11
Bài viết
20
Được thích
8
Tôi đã viết code thế này. Nhưng không hiểu sao nó vẫn chưa chạy được (đúng hơn nó cập nhật được 1 dòng. Mình muốn lưu được nhiều dòng).
PHP:
Option Explicit

Sub CapNhat()
    Dim eR As Long
    Dim iR
    On Error Resume Next
    With S4
        eR = .[A50000].End(xlUp).Row + 1
        .Cells(eR, 1).Resize(, 1) = [c10]
        .Cells(eR, 2).Resize(, 1) = [c9]
        .Cells(eR, 3).Resize(, 1) = [h3]
        .Cells(eR, 4).Resize(, 1) = CDate([C4])
        .Cells(eR, 5).Resize(, 1) = [f8]
        .Cells(eR, 6).Resize(, 1) = Format([h8], "dd/MM/yyyy") ' Sao khong dung CDate([h8]) duoc?
        .Cells(eR, 7).Resize(, 1) = [h4]
        .Cells(eR, 8).Resize(, 1) = [h5]
        .Cells(eR, 9).Resize(, 1) = [d8]
        iR = IIf([b12].End(xlDown).Row > 42, 0, [b12].End(xlDown).Row - 12)
        .Cells(eR, 10).Resize(, 1) = [a13].Offset(, 2).Resize(iR, 1).Value
        .Cells(eR, 11).Resize(, 1) = [a13].Offset(, 1).Resize(iR, 1).Value
        .Cells(eR, 12).Resize(, 1) = [a13].Offset(, 3).Resize(iR, 1).Value
        .Cells(eR, 13).Resize(, 1) = [a13].Offset(, 6).Resize(iR, 1).Value
        .Cells(eR, 14).Resize(, 1) = [a13].Offset(, 5).Resize(iR, 1).Value
        .Cells(eR, 17).Resize(, 1) = [a13].Offset(, 7).Resize(iR, 1).Value
        .Cells(eR, 19).Resize(, 1) = [a13].Offset(, 8).Resize(iR, 1).Value
        Application.Union([h3], [c6:c7], [f8], [h8], [c10], [a13:i42]).ClearContents
    End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi đã viết code thế này. Nhưng không hiểu sao nó vẫn chưa chạy được (đúng hơn nó cập nhật được 1 dòng. Mình muốn lưu được nhiều dòng).
PHP:
Option Explicit

Sub CapNhat()
    Dim eR As Long
    Dim iR
    On Error Resume Next
    With S4
        eR = .[A50000].End(xlUp).Row + 1
        .Cells(eR, 1).Resize(, 1) = [c10]
        .Cells(eR, 2).Resize(, 1) = [c9]
        .Cells(eR, 3).Resize(, 1) = [h3]
        .Cells(eR, 4).Resize(, 1) = CDate([C4])
        .Cells(eR, 5).Resize(, 1) = [f8]
        .Cells(eR, 6).Resize(, 1) = Format([h8], "dd/MM/yyyy") ' Sao khong dung CDate([h8]) duoc?
        .Cells(eR, 7).Resize(, 1) = [h4]
        .Cells(eR, 8).Resize(, 1) = [h5]
        .Cells(eR, 9).Resize(, 1) = [d8]
        iR = IIf([b12].End(xlDown).Row > 42, 0, [b12].End(xlDown).Row - 12)
        .Cells(eR, 10).Resize(, 1) = [a13].Offset(, 2).Resize(iR, 1).Value
        .Cells(eR, 11).Resize(, 1) = [a13].Offset(, 1).Resize(iR, 1).Value
        .Cells(eR, 12).Resize(, 1) = [a13].Offset(, 3).Resize(iR, 1).Value
        .Cells(eR, 13).Resize(, 1) = [a13].Offset(, 6).Resize(iR, 1).Value
        .Cells(eR, 14).Resize(, 1) = [a13].Offset(, 5).Resize(iR, 1).Value
        .Cells(eR, 17).Resize(, 1) = [a13].Offset(, 7).Resize(iR, 1).Value
        .Cells(eR, 19).Resize(, 1) = [a13].Offset(, 8).Resize(iR, 1).Value
        Application.Union([h3], [c6:c7], [f8], [h8], [c10], [a13:i42]).ClearContents
    End With
End Sub
Sửa thành vầy thử xem:
PHP:
Sub CapNhat()
  Dim eR As Long, iR, SrcRng As Range
  On Error Resume Next
  Set SrcRng = S1.Range(S1.[A13], S1.[A44].End(xlUp))
  iR = SrcRng.Rows.Count
  With S4
    eR = .[A50000].End(xlUp).Row + 1
   .Cells(eR, 1).Resize(iR).Value = S1.[C10]
   .Cells(eR, 2).Resize(iR).Value = S1.[C9]
   .Cells(eR, 3).Resize(iR).Value = S1.[H3]
   .Cells(eR, 4).Resize(iR).Value = CDate(S1.[C4])
   .Cells(eR, 5).Resize(iR).Value = S1.[F8]
   .Cells(eR, 6).Resize(iR).Value = CDate(S1.[H8])
   .Cells(eR, 7).Resize(iR).Value = S1.[H4]
   .Cells(eR, 8).Resize(iR).Value = S1.[H5]
   .Cells(eR, 9).Resize(iR).Value = S1.[D8]
   .Cells(eR, 10).Resize(iR).Value = SrcRng.Offset(, 2)
   .Cells(eR, 11).Resize(iR).Value = SrcRng.Offset(, 1)
   .Cells(eR, 12).Resize(iR).Value = SrcRng.Offset(, 3)
   .Cells(eR, 13).Resize(iR).Value = SrcRng.Offset(, 6)
   .Cells(eR, 14).Resize(iR).Value = SrcRng.Offset(, 5)
   .Cells(eR, 17).Resize(iR).Value = SrcRng.Offset(, 7)
   .Cells(eR, 19).Resize(iR).Value = SrcRng.Offset(, 8)
   Union(S1.[H3], S1.[C6:C7], S1.[F8], S1.[H8], S1.[C10], S1.[A13:I42]).ClearContents
 End With
End Sub
 
Upvote 0
Sửa thành vầy thử xem:
PHP:
Sub CapNhat()
  Dim eR As Long, iR, SrcRng As Range
  On Error Resume Next
  Set SrcRng = S1.Range(S1.[A13], S1.[A44].End(xlUp))
  iR = SrcRng.Rows.Count
  With S4
    eR = .[A50000].End(xlUp).Row + 1
   .Cells(eR, 1).Resize(iR).Value = S1.[C10]
   .Cells(eR, 2).Resize(iR).Value = S1.[C9]
   .Cells(eR, 3).Resize(iR).Value = S1.[H3]
   .Cells(eR, 4).Resize(iR).Value = CDate(S1.[C4])
   .Cells(eR, 5).Resize(iR).Value = S1.[F8]
   .Cells(eR, 6).Resize(iR).Value = CDate(S1.[H8])
   .Cells(eR, 7).Resize(iR).Value = S1.[H4]
   .Cells(eR, 8).Resize(iR).Value = S1.[H5]
   .Cells(eR, 9).Resize(iR).Value = S1.[D8]
   .Cells(eR, 10).Resize(iR).Value = SrcRng.Offset(, 2)
   .Cells(eR, 11).Resize(iR).Value = SrcRng.Offset(, 1)
   .Cells(eR, 12).Resize(iR).Value = SrcRng.Offset(, 3)
   .Cells(eR, 13).Resize(iR).Value = SrcRng.Offset(, 6)
   .Cells(eR, 14).Resize(iR).Value = SrcRng.Offset(, 5)
   .Cells(eR, 17).Resize(iR).Value = SrcRng.Offset(, 7)
   .Cells(eR, 19).Resize(iR).Value = SrcRng.Offset(, 8)
   Union(S1.[H3], S1.[C6:C7], S1.[F8], S1.[H8], S1.[C10], S1.[A13:I42]).ClearContents
 End With
End Sub

Trước tiên cám ơn anh @ndu96081631 nhiều! Em sửa lại của anh một chút thế này mới được ah:
PHP:
   .Cells(eR, 10).Resize(iR).Value = SrcRng.Offset(, 2).Resize(, 1).Value
   .Cells(eR, 11).Resize(iR).Value = SrcRng.Offset(, 1).Resize(, 1).Value
   .Cells(eR, 12).Resize(iR).Value = SrcRng.Offset(, 3).Resize(, 1).Value
   .Cells(eR, 13).Resize(iR).Value = SrcRng.Offset(, 6).Resize(, 1).Value
   .Cells(eR, 14).Resize(iR).Value = SrcRng.Offset(, 5).Resize(, 1).Value
   .Cells(eR, 15).Resize(iR).Value = SrcRng.Offset(, 7).Resize(, 1).Value
   .Cells(eR, 18).Resize(iR).Value = SrcRng.Offset(, 8).Resize(, 1).Value
   .Cells(eR, 19).Resize(iR).Value = SrcRng.Offset(, 9).Resize(, 1).Value
Giờ thì tốt rùi!
 
Upvote 0
Trước tiên cám ơn anh @ndu96081631 nhiều! Em sửa lại của anh một chút thế này mới được ah:
PHP:
   .Cells(eR, 10).Resize(iR).Value = SrcRng.Offset(, 2).Resize(, 1).Value
   .Cells(eR, 11).Resize(iR).Value = SrcRng.Offset(, 1).Resize(, 1).Value
   .Cells(eR, 12).Resize(iR).Value = SrcRng.Offset(, 3).Resize(, 1).Value
   .Cells(eR, 13).Resize(iR).Value = SrcRng.Offset(, 6).Resize(, 1).Value
   .Cells(eR, 14).Resize(iR).Value = SrcRng.Offset(, 5).Resize(, 1).Value
   .Cells(eR, 15).Resize(iR).Value = SrcRng.Offset(, 7).Resize(, 1).Value
   .Cells(eR, 18).Resize(iR).Value = SrcRng.Offset(, 8).Resize(, 1).Value
   .Cells(eR, 19).Resize(iR).Value = SrcRng.Offset(, 9).Resize(, 1).Value
Giờ thì tốt rùi!
SrcRng là vùng chỉ có 1 cột, vậy cần quái gì Resize(, 1) cho nó thừa (không Resize thì nó vẫn là 1 cột rồi)
 
Upvote 0
SrcRng là vùng chỉ có 1 cột, vậy cần quái gì Resize(, 1) cho nó thừa (không Resize thì nó vẫn là 1 cột rồi)

Nhưng sao em copy code đó vào thì nó không cập nhật hết được sang Sheet Dulieu? cụ thể là chỉ cập nhật thông tin đến cột 9 thui.
 
Upvote 0
Nhưng sao em copy code đó vào thì nó không cập nhật hết được sang Sheet Dulieu? cụ thể là chỉ cập nhật thông tin đến cột 9 thui.
Thì bạn cứ thử bỏ Resize(,1) đi xem thế nào! Chừa lại vầy thôi:
PHP:
.Cells(eR, 10).Resize(iR).Value = SrcRng.Offset(, 2).Value
.Cells(eR, 11).Resize(iR).Value = SrcRng.Offset(, 1).Value
.Cells(eR, 12).Resize(iR).Value = SrcRng.Offset(, 3).Value
.Cells(eR, 13).Resize(iR).Value = SrcRng.Offset(, 6).Value
.Cells(eR, 14).Resize(iR).Value = SrcRng.Offset(, 5).Value
.Cells(eR, 15).Resize(iR).Value = SrcRng.Offset(, 7).Value
.Cells(eR, 18).Resize(iR).Value = SrcRng.Offset(, 8).Value
.Cells(eR, 19).Resize(iR).Value = SrcRng.Offset(, 9).Value
 
Upvote 0
Em gửi file lên anh coi xem nhé!
Tôi kêu sửa 1 đàng bạn sửa 1 nẻo
Tôi nói sửa thành:
Mã:
.Cells(eR, 10).Resize(iR).Value = SrcRng.Offset(, 2)[COLOR=red][B].Value[/B][/COLOR]
.Cells(eR, 11).Resize(iR).Value = SrcRng.Offset(, 1)[COLOR=red][B].Value[/B][/COLOR]
.Cells(eR, 12).Resize(iR).Value = SrcRng.Offset(, 3)[COLOR=red][B].Value[/B][/COLOR]
.Cells(eR, 13).Resize(iR).Value = SrcRng.Offset(, 6)[COLOR=red][B].Value[/B][/COLOR]
.Cells(eR, 14).Resize(iR).Value = SrcRng.Offset(, 5).[COLOR=red][B]Value[/B][/COLOR]
.Cells(eR, 17).Resize(iR).Value = SrcRng.Offset(, 7)[COLOR=red][B].Value[/B][/COLOR]
.Cells(eR, 19).Resize(iR).Value = SrcRng.Offset(, 8)[COLOR=red][B].Value[/B][/COLOR]
Của bạn đâu có cái "đuôi" màu đỏ như ở trên
 
Upvote 0
Chao sư phụ ndu...!
sư phụ giải thích dùm em ý nghĩa của RESIZE này nhé. Em thấy nó mà chẳng hiệu công dụng là gì cả.
Thanks
Resize dùng để thay đổi kích thước của 1 vùng thôi
Ví dụ ta có vùng A1:A10, nếu Resize thế này
Range("A1:A10").Resize(5,3)
Tức thay đổi kích thước vùng A1:A10 thành 5 dòng, 3 cột ---> Trở thành A1:C5
 
Upvote 0
Web KT

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

Back
Top Bottom