Nhờ Thầy cô và anh chị viết code VBA Copy theo giới hạn

Liên hệ QC
Upvote 0
Tức là Insert copied cells đó phải không?
Excel có sẵn chức năng này, cứ thế xài thôi. Muốn code, có thể record macro
Bác ơi, tức là mỗi lần copy thì nó đẩy các lần copy trước xuống bên dưới.
Nhưng với điều kiện là chỉ 5 lần thôi bác à
Cháu ghi macro rồi nhưng không được bác à
Tức là cháu copy sau đó insert vào thì được sau đó lại dùng động tác là xóa lần copy trước đi bác à
 
Upvote 0
Bác ơi, tức là mỗi lần copy thì nó đẩy các lần copy trước xuống bên dưới.
Nhưng với điều kiện là chỉ 5 lần thôi bác à
Cháu ghi macro rồi nhưng không được bác à
Tức là cháu copy sau đó insert vào thì được sau đó lại dùng động tác là xóa lần copy trước đi bác à
Gửi bạn
Mã:
Sub test()
    Dim Rng As Range, I As Integer
    
    Set Rng = Range("B1:P6")
    Do Until I = 5
        Rng.Copy
        Range("S14").Insert Shift:=xlDown
        I = I + 1
    Loop
    Set Rng = Nothing
End Sub
 
Upvote 0
Gửi bạn
Mã:
Sub test()
    Dim Rng As Range, I As Integer
   
    Set Rng = Range("B1:P6")
    Do Until I = 5
        Rng.Copy
        Range("S14").Insert Shift:=xlDown
        I = I + 1
    Loop
    Set Rng = Nothing
End Sub
Cảm ơn anh
Anh ơi không phải là copy 1 lúc 5 lần như vậy anh à
Copy từng lần 1. mỗi lần copy thì lần copy sau sẽ đứng bên trên lần copy trước đó
Và nó đẩy lần copy trước xuống bên dưới
Nhưng chỉ giới hạn chứa 5 lần
Còn những lần khác lần 6; lần7.....v.v..... cứ như vậy
Nhưng vẫn giữ nguyên 5 mảng copy anh à
 
Upvote 0
Cảm ơn anh
Anh ơi không phải là copy 1 lúc 5 lần như vậy anh à
Copy từng lần 1. mỗi lần copy thì lần copy sau sẽ đứng bên trên lần copy trước đó
Và nó đẩy lần copy trước xuống bên dưới
Nhưng chỉ giới hạn chứa 5 lần
Còn những lần khác lần 6; lần7.....v.v..... cứ như vậy
Nhưng vẫn giữ nguyên 5 mảng copy anh à
Tôi chưa hiểu ý bạn lắm.
Tôi cũng làm copy 5 lượt mà.
Bạn chạy code bằng phím F8 sẽ thấy code chạy copy 5 lượt.
 
Upvote 0
Tôi chưa hiểu ý bạn lắm.
Tôi cũng làm copy 5 lượt mà.
Bạn chạy code bằng phím F8 sẽ thấy code chạy copy 5 lượt.
Tức là làm cho người ta cái nút Copy mà chỉ có thể bấm được 5 lần thôi. Đương nhiên mỗi lần bấm chỉ Insert copied cells 1 bản (của bạn nó copy phát 5 lần luôn là sai)
 
Upvote 0
Tức là làm cho người ta cái nút Copy mà chỉ có thể bấm được 5 lần thôi. Đương nhiên mỗi lần bấm chỉ Insert copied cells 1 bản (của bạn nó copy phát 5 lần luôn là sai)
Bác ơi cháu làm được như này rùi bác à
Nhưng mà code nó thô lắm bác à
Nếu như cháu dùng tạm thì cũng được
Nhưng cháu muốn nó là code VBA thật sự cơ bác à
Bác xem nhé.
 

File đính kèm

Upvote 0
Cảm ơn anh
Anh ơi không phải là copy 1 lúc 5 lần như vậy anh à
Copy từng lần 1. mỗi lần copy thì lần copy sau sẽ đứng bên trên lần copy trước đó
Và nó đẩy lần copy trước xuống bên dưới
Nhưng chỉ giới hạn chứa 5 lần
Còn những lần khác lần 6; lần7.....v.v..... cứ như vậy
Nhưng vẫn giữ nguyên 5 mảng copy anh à
Chắc là như vậy:
Mã:
Sub test()
    Dim rng As Range, lR As Long
   
    lR = Range("S" & Rows.Count).End(xlDown)
    Set rng = Range("B1:P6")
   
    If lR < rng.Count * 5 + 14 Then
        Range("B1:P6").Copy
        Range("S14").Insert Shift:=xlDown
    End If
    Application.CutCopyMode = False
    Set rng = Nothing
End Sub
Code chạy dựa trên điều kiện của dòng cuối cùng có dữ liệu của cột S.
Theo như dữ liệu bạn đưa thì tôi đặt điều kiện như vậy.
Nếu dữ liệu khác thì bạn tùy biến nhé!
 
Upvote 0
Chắc là như vậy:
Mã:
Sub test()
    Dim rng As Range, lR As Long
  
    lR = Range("S" & Rows.Count).End(xlDown)
    Set rng = Range("B1:P6")
  
    If lR < rng.Count * 5 + 14 Then
        Range("B1:P6").Copy
        Range("S14").Insert Shift:=xlDown
    End If
    Application.CutCopyMode = False
    Set rng = Nothing
End Sub
Code chạy dựa trên điều kiện của dòng cuối cùng có dữ liệu của cột S.
Theo như dữ liệu bạn đưa thì tôi đặt điều kiện như vậy.
Nếu dữ liệu khác thì bạn tùy biến nhé!
chắc là hổng đúng rồi
 
Upvote 0
Chắc là như vậy:
Mã:
Sub test()
    Dim rng As Range, lR As Long
  
    lR = Range("S" & Rows.Count).End(xlDown)
    Set rng = Range("B1:P6")
  
    If lR < rng.Count * 5 + 14 Then
        Range("B1:P6").Copy
        Range("S14").Insert Shift:=xlDown
    End If
    Application.CutCopyMode = False
    Set rng = Nothing
End Sub
Code chạy dựa trên điều kiện của dòng cuối cùng có dữ liệu của cột S.
Theo như dữ liệu bạn đưa thì tôi đặt điều kiện như vậy.
Nếu dữ liệu khác thì bạn tùy biến nhé!
Cảm ơn anh
Vẫn chưa đúng anh à
Em có ghi macro như này rồi mà anh
Em đã đăng trên bài #8 rồi
em đăng lại anh xem giúp em nhé
 

File đính kèm

Upvote 0
Bác ơi, tức là mỗi lần copy thì nó đẩy các lần copy trước xuống bên dưới.
Nhưng với điều kiện là chỉ 5 lần thôi bác à
Cháu ghi macro rồi nhưng không được bác à
Tức là cháu copy sau đó insert vào thì được sau đó lại dùng động tác là xóa lần copy trước đi bác à
Mục đích của bạn là gì? chèn 5 lần xong thì sau muốn chèn nữa thì sao?
 
Upvote 0
Mục đích của bạn là gì? chèn 5 lần xong thì sau muốn chèn nữa thì sao?
Vẫn chèn tiếp tục nữa anh à
lần copy sau luôn đứng trên các lần copy trước
nhưng giới hạn vùng chứa chỉ có 5 lần thôi anh à
Cứ copy nhiều lần nhưng vùng chứa chỉ có 5 lần thôi
 
Upvote 0
Vẫn chèn tiếp tục nữa anh à
lần copy sau luôn đứng trên các lần copy trước
nhưng giới hạn vùng chứa chỉ có 5 lần thôi anh à
Cứ copy nhiều lần nhưng vùng chứa chỉ có 5 lần thôi
Bạn kiểm tra code
Mã:
Sub tessss()
    Dim mangnguon, mangkt, kiemtra
    mangnguon = Range("B2:P6")
    mangkt = Range("S39:AG43")
    kiemtra = False
    For i = 1 To UBound(mangnguon)
        For j = 1 To UBound(mangnguon, 2)
            If mangnguon(i, j) <> mangkt(i, j) Then
                kiemtra = True
                GoTo copydl
            End If
        Next
    Next
copydl:
    If kiemtra Then
        Range("B1:P6").Copy
        Range("S14").Insert Shift:=xlDown
    Else
        MsgBox ("ban da chen 5 lan roi")
    End If
End Sub
 
Upvote 0
Bác ơi cháu làm được như này rùi bác à
Nhưng mà code nó thô lắm bác à
Nếu như cháu dùng tạm thì cũng được
Nhưng cháu muốn nó là code VBA thật sự cơ bác à
Bác xem nhé.

Bạn ơi, code của bạn và code vba thực sự có có gì khác vậy?
 
Upvote 0
Bạn kiểm tra code
Mã:
Sub tessss()
    Dim mangnguon, mangkt, kiemtra
    mangnguon = Range("B2:P6")
    mangkt = Range("S39:AG43")
    kiemtra = False
    For i = 1 To UBound(mangnguon)
        For j = 1 To UBound(mangnguon, 2)
            If mangnguon(i, j) <> mangkt(i, j) Then
                kiemtra = True
                GoTo copydl
            End If
        Next
    Next
copydl:
    If kiemtra Then
        Range("B1:P6").Copy
        Range("S14").Insert Shift:=xlDown
    Else
        MsgBox ("ban da chen 5 lan roi")
    End If
End Sub
Cũng vẫn chưa đúng anh à, code của anh lại giống code của bài #9 anh à
Bài đã được tự động gộp:

Không có code nào hiệu quả hơn code nầy
Hi hi... cháu thấy mọi người chưa hiểu ý thoi bác à
Nếu không được thì cháu dùng tạm Macro cháu ghi cũng được bác nhỉ.
 
Upvote 0
Web KT

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

Back
Top Bottom