Xin xử lý code: Copy và Paste vào hàng nhập liệu!

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Tuan.DNa

Thành viên hoạt động
Tham gia
26/9/23
Bài viết
110
Được thích
17
Chào các Anh, Chị diễn đàn.

Mình xin code Copy và Paste vào hàng nhập liệu.
Nội dung nhờ hổ trợ có ghi theo như trong file!
- Nhập dữ liệu cột A, thì Copy và Paste từ vùng cố định vào hàng nhập liệu.
Mong Anh , Chị xem file và hổ trợ giúp mình nhé.

Cảm ơn nhiều
(Chủ đề gửi lần 2. Lần 1 bị khóa rồi)
 

File đính kèm

  • THEO DOI HANG HOA.xlsm
    62.9 KB · Đọc: 134
Không thành viên nào hổ trợ giúp mình à
 
Bạn đưa ra cấu trúc biểu dữ liệu như vậy chắc chẳng ai giúp được bạn đâu !!! Mà người siêng để sửa lại biểu dữ liệu thì lại rất bận; hoặc ngại
Là sao bạn. Bạn có thể hướng dẫn mình thay đổi cấu trúc dữ liệu lại được không
 
- Di chuyển chuột trong vùng B4:F10
- Các giá trị cả hàng được đưa lên vùng xanh
- Thay đổi ngày, số lượng … và Save
 

File đính kèm

  • THEO DOI HANG HOA 22222xlsm.xlsm
    57.8 KB · Đọc: 11
Chào các Anh, Chị diễn đàn.

Mình xin code Copy và Paste vào hàng nhập liệu.
Nội dung nhờ hổ trợ có ghi theo như trong file!
- Nhập dữ liệu cột A, thì Copy và Paste từ vùng cố định vào hàng nhập liệu.
Mong Anh , Chị xem file và hổ trợ giúp mình nhé.

Cảm ơn nhiều
(Chủ đề gửi lần 2. Lần 1 bị khóa rồi)
Hình như bài đồng chí đặt sai box nên bị khóa. Vấn đề này rất riêng mà lại đăng vào mục "Những vấn đề chung ", và vì có ít người "chung" nên bị xóa hoặc quên lãng.

Trình bày thì khó hiểu, đây là 1 cách đoán mò:
Mã:
Option Explicit

Sub SuKienThinhThoangBiLoiPhaiReset_KhongHieu()
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lrCong1%
Static valueTemp&
Application.EnableEvents = False
On Error GoTo Thoat
If Not Intersect(Target, Range("A3")) Is Nothing Then
If valueTemp = Target.Value2 Or Range("A3") = "" Then GoTo Thoat
valueTemp = Range("A3").Value2
lrCong1 = Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & lrCong1).Resize(, 6).Value = Range("A3:F3").Value2
End If
Application.EnableEvents = True
Exit Sub
Thoat:
Application.EnableEvents = True
Exit Sub
End Sub
 
- Di chuyển chuột trong vùng B4:F10
- Các giá trị cả hàng được đưa lên vùng xanh
- Thay đổi ngày, số lượng … và Save
Cảm ơn Bạn!
Mục đích mình là khi nhập liệu ngày tháng (Cột A), thì code tự động copy vùng (B3:F3) và Paste vào ngay hàng hiện tại, tại vị trí B.
Vì (B3:F3) là vùng mình đã đặt list rồi, để nhập liệu cho đúng.
Đối với sự kiện Change ở Cột D và if ở Cột A thì đã có code rồi.
Mong bạn hổ trợ mình nhé, nếu sửa code sự kiện Change cho hợp lý thì càng tốt.
Bài đã được tự động gộp:

Hình như bài đồng chí đặt sai box nên bị khóa. Vấn đề này rất riêng mà lại đăng vào mục "Những vấn đề chung ", và vì có ít người "chung" nên bị xóa hoặc quên lãng.

Trình bày thì khó hiểu, đây là 1 cách đoán mò:
Mã:
Option Explicit

Sub SuKienThinhThoangBiLoiPhaiReset_KhongHieu()
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lrCong1%
Static valueTemp&
Application.EnableEvents = False
On Error GoTo Thoat
If Not Intersect(Target, Range("A3")) Is Nothing Then
If valueTemp = Target.Value2 Or Range("A3") = "" Then GoTo Thoat
valueTemp = Range("A3").Value2
lrCong1 = Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & lrCong1).Resize(, 6).Value = Range("A3:F3").Value2
End If
Application.EnableEvents = True
Exit Sub
Thoat:
Application.EnableEvents = True
Exit Sub
End Sub
Cảm ơn Bận.
Code đâu có chạy bạn ơi,
Với lại ở sheet đó mình đã có sự kiện Change rồi, giờ chen vô nữa có được không bạn.
 
Lần chỉnh sửa cuối:
Cảm ơn Bạn!
Mục đích mình là khi nhập liệu ngày tháng (Cột A), thì code tự động copy vùng (B3:F3) và Paste vào ngay hàng hiện tại, tại vị trí B.
Vì (B3:F3) là vùng mình đã đặt list rồi, để nhập liệu cho đúng.
Đối với sự kiện Change ở Cột D và if ở Cột A thì đã có code rồi.
Mong bạn hổ trợ mình nhé, nếu sửa code sự kiện Change cho hợp lý thì càng tốt.
Bài đã được tự động gộp:


Cảm ơn Bận.
Code đâu có chạy bạn ơi,
Với lại ở sheet đó mình đã có sự kiện Change rồi, giờ chen vô nữa có được không bạn.
À, tớ xóa hết change cũ, thay bằng code trên. (ẢNH BỊ NHẦM TÍ, PHẢI NHẬP Ô BÊN PHẢI TRƯỚC MỚI NHẬP NGÀY.)

TẠM THỜI NẾU CÓ THÊM Ý KHÁC THÌ PHẢI NGHĨ NHIỀU NỮA. :cool: :cool: :cool:



1695809005648.png
 
À, tớ xóa hết change cũ, thay bằng code trên. (ẢNH BỊ NHẦM TÍ, PHẢI NHẬP Ô BÊN PHẢI TRƯỚC MỚI NHẬP NGÀY.)

TẠM THỜI NẾU CÓ THÊM Ý KHÁC THÌ PHẢI NGHĨ NHIỀU NỮA. :cool: :cool: :cool:



View attachment 295217
Gì đoán mò trời!
Mục đích là copy vùng (B3:F3) và Paste zô ngay hàng nhập ngày, tại vị trí B. Nhập hàng nào thì copy hàng đó (nếu làm thủ công thì mình copy sẵn hết cho 1000 dòng trước)
(B3:F3) là vùng đã có list sẵn
 
Gì đoán mò trời!
Mục đích là copy vùng (B3:F3) và Paste zô ngay hàng nhập ngày, tại vị trí B. Nhập hàng nào thì copy hàng đó (nếu làm thủ công thì mình copy sẵn hết cho 1000 dòng trước)
(B3:F3) là vùng đã có list sẵn
Bạn là người hỏi. Bạn phải tự biết mình cần giải thích rõ rệt, người ta mới khỏi đoán mò.

Thái độ bạn như vậy thì người ta có muốn thử giúp thôi cũng ngại.
Không thành viên nào hổ trợ giúp mình à
 
Bạn là người hỏi. Bạn phải tự biết mình cần giải thích rõ rệt, người ta mới khỏi đoán mò.

Thái độ bạn như vậy thì người ta có muốn thử giúp thôi cũng ngại.
Xin lỗi các bạn. Diễn đạt không được rõ, mong các bạn hổ trợ mình nhé!
 
Mỗi lần thay A3 thì copy xuống dòng cuối...
Cảm ơn bạn.
Chủ ý của mình là: nhập ngày tháng ở A7 (hàng cuối) thì Copy vùng (B3:F3) và Paste vào (B7:F7). Hoặc nhập ngày ở A10 thì Paste vào ngay hàng này......
Nhưng sửa ngày ở A5 (hàng có dữ liệu) thì không thực hiện lệnh copy.
Mong bạn hổ trợ mình nhé
 
Mình đoán ý bạn ấy là: Nhập dữ liệu vào dòng đầu. Tạo nút nhập, khi nhập liệu xong thì nhấn vào đó nó chuyển xuống dòng cuối của bảng. Phải không nhỉ
 
Mình đoán ý bạn ấy là: Nhập dữ liệu vào dòng đầu. Tạo nút nhập, khi nhập liệu xong thì nhấn vào đó nó chuyển xuống dòng cuối của bảng. Phải không nhỉ
Không bạn ơi.
Khi nhập ngày ở Cột A Sheets (XUAT), thì copy vùng B3:F3 và dán vào ngay hàng nhập ngày đó bạn.
 
Chủ ý của mình là: nhập ngày tháng ở A7 (hàng cuối) thì Copy vùng (B3:F3) và Paste vào (B7:F7). Hoặc nhập ngày ở A10 thì Paste vào ngay hàng này......
Nhưng sửa ngày ở A5 (hàng có dữ liệu) thì không thực hiện lệnh copy.
Sáng ra, làm đại 1 quả, hy vọng đúng ý.
Thay code cũ bằng code này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ws As Worksheet
Dim LrD As Long, i&

Set Ws = Sheets("XUAT")

LrD = Ws.Range("D65536").End(xlUp).Row
If Not Application.Intersect(Range("D4", "D" & LrD), Range(Target.Address)) Is Nothing Then
   Ws.Range("E" & ActiveCell.Row & ":" & "F" & ActiveCell.Row).ClearContents
    If Ws.Range("A" & ActiveCell.Row).Value = "" Then
       Ws.Range("C" & ActiveCell.Row & ":" & "H" & ActiveCell.Row).ClearContents
       MsgBox "De nghi nhap: Ngay, Thang, Nam...! "
    End If
End If
If Application.Intersect(Target, Ws.Range("B4:B10000")) Is Nothing Then
i = Target.Row
    If Application.WorksheetFunction.CountIf(Ws.Range("B" & i & ":F" & i), "***") = 1 Then
        Application.EnableEvents = False
        Ws.Range("B3:F3").Copy Ws.Range("B" & i)
        Application.EnableEvents = True
    End If
End If

End Sub
 
Sự kiện change khi thay đổi a6:a100 thì copy xuống
Để buộc nhập ngày... Data Validation chọn date....
 

File đính kèm

  • THEO DOI HANG HOA 44xlsm.xlsm
    53.1 KB · Đọc: 5
Sáng ra, làm đại 1 quả, hy vọng đúng ý.
Thay code cũ bằng code này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ws As Worksheet
Dim LrD As Long, i&

Set Ws = Sheets("XUAT")

LrD = Ws.Range("D65536").End(xlUp).Row
If Not Application.Intersect(Range("D4", "D" & LrD), Range(Target.Address)) Is Nothing Then
   Ws.Range("E" & ActiveCell.Row & ":" & "F" & ActiveCell.Row).ClearContents
    If Ws.Range("A" & ActiveCell.Row).Value = "" Then
       Ws.Range("C" & ActiveCell.Row & ":" & "H" & ActiveCell.Row).ClearContents
       MsgBox "De nghi nhap: Ngay, Thang, Nam...! "
    End If
End If
If Application.Intersect(Target, Ws.Range("B4:B10000")) Is Nothing Then
i = Target.Row
    If Application.WorksheetFunction.CountIf(Ws.Range("B" & i & ":F" & i), "***") = 1 Then
        Application.EnableEvents = False
        Ws.Range("B3:F3").Copy Ws.Range("B" & i)
        Application.EnableEvents = True
    End If
End If

End Sub
[/QUOTE]
[/QUOTE]
[automerge]1695876429[/automerge]
[QUOTE="HUONGHCKT, post: 1116207, member: 731215"]
Sáng ra,  làm đại 1 quả, hy vọng đúng ý.
Thay code cũ bằng code này:
[CODE]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ws As Worksheet
Dim LrD As Long, i&

Set Ws = Sheets("XUAT")

LrD = Ws.Range("D65536").End(xlUp).Row
If Not Application.Intersect(Range("D4", "D" & LrD), Range(Target.Address)) Is Nothing Then
   Ws.Range("E" & ActiveCell.Row & ":" & "F" & ActiveCell.Row).ClearContents
    If Ws.Range("A" & ActiveCell.Row).Value = "" Then
       Ws.Range("C" & ActiveCell.Row & ":" & "H" & ActiveCell.Row).ClearContents
       MsgBox "De nghi nhap: Ngay, Thang, Nam...! "
    End If
End If
If Application.Intersect(Target, Ws.Range("B4:B10000")) Is Nothing Then
i = Target.Row
    If Application.WorksheetFunction.CountIf(Ws.Range("B" & i & ":F" & i), "***") = 1 Then
        Application.EnableEvents = False
        Ws.Range("B3:F3").Copy Ws.Range("B" & i)
        Application.EnableEvents = True
    End If
End If

End Sub
Đúng ý mình rồi. Bạn này giỏi gê. Cảm ơn bạn nhé.
Chỉ có 1 vấn đề: nếu cột B mã sh không nhập hoặc dl kiểu số thì không nhập được các cột tiếp theo. Vậy mình đặt X luôn trong vùng (B3:F3).
Thành thật cảm ơn bạn và các bạn nhiều nha.
Nếu còn phương pháp nào khác thì mình xin học hỏi tiếp nhé
 
Lần chỉnh sửa cuối:
Sáng ra, làm đại 1 quả, hy vọng đúng ý.
Thay code cũ bằng code này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ws As Worksheet
Dim LrD As Long, i&

Set Ws = Sheets("XUAT")

LrD = Ws.Range("D65536").End(xlUp).Row
If Not Application.Intersect(Range("D4", "D" & LrD), Range(Target.Address)) Is Nothing Then
   Ws.Range("E" & ActiveCell.Row & ":" & "F" & ActiveCell.Row).ClearContents
    If Ws.Range("A" & ActiveCell.Row).Value = "" Then
       Ws.Range("C" & ActiveCell.Row & ":" & "H" & ActiveCell.Row).ClearContents
       MsgBox "De nghi nhap: Ngay, Thang, Nam...! "
    End If
End If
If Application.Intersect(Target, Ws.Range("B4:B10000")) Is Nothing Then
i = Target.Row
    If Application.WorksheetFunction.CountIf(Ws.Range("B" & i & ":F" & i), "***") = 1 Then
        Application.EnableEvents = False
        Ws.Range("B3:F3").Copy Ws.Range("B" & i)
        Application.EnableEvents = True
    End If
End If

End Sub
" If Application.Intersect(Target, Ws.Range("B4:B10000")) Is Nothing Then
i = Target.Row
If Application.WorksheetFunction.CountIf(Ws.Range("B" & i & ":F" & i), "***") = 1 Then
Application.EnableEvents = False
Ws.Range("B3:F3").Copy Ws.Range("B" & i)
Application.EnableEvents = True
End If
End if "
Mấu chốt là câu lệnh với hàm đếm này. Hay thật!
Vấn đề vùng Range("B4:B1000") này "động" được không bạn
 
Mấu chốt là câu lệnh với hàm đếm này. Hay thật!
Vấn đề vùng Range("B4:B1000") này "động" được không bạn
10000 dòng cũng là rất nhiều rồi mà.
Nếu bạn muốn vùng B4:B10000 ấy "động" thì có thể dùng 1 biến để tìm dòng cuối (ví dụ : Lr=Ws.cells(Rows.count,"B")..End(xlup)).Row và thay cái số 10000 ấy = các biến dòng cuối ấy ( Range("B4"B" Lr) ) xem được không? Hoặc bạn đặt cái vùng có dữ liệu B4:b1000 thành 1 namerange xem sao?
Công thức namerange động thì chắc bạn cũng biết rồi.
 
Web KT
Back
Top Bottom