Viết code như thế nào khi muốn đổi nội dung list data valition thì cột tham chiếu cũng tự động thay đổi (1 người xem)

  • Thread starter Thread starter Nam168
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Nam168

Thành viên chính thức
Tham gia
11/4/22
Bài viết
84
Được thích
5
Giới tính
Nữ
Dạ AC cho e hỏi khi e muốn thay đổi phần data valition thì bên cột tham chiếu cũng tự động thay đổi theo list data, ví dụ e muốn đổi “1” bên data valition ở sheet1 thành “ thùng 01 ” thì bên cột C sheet2 tham chiếu cũng sẽ tự đổi theo. Vậy phải viết code như nào ạ
Mong nhận được giải đáp từ các AC
EM CẢM ƠN Ạ
 

File đính kèm

Dạ AC cho e hỏi khi e muốn thay đổi phần data valition thì bên cột tham chiếu cũng tự động thay đổi theo list data, ví dụ e muốn đổi “1” bên data valition ở sheet1 thành “ thùng 01 ” thì bên cột C sheet2 tham chiếu cũng sẽ tự đổi theo. Vậy phải viết code như nào ạ
Mong nhận được giải đáp từ các AC
EM CẢM ƠN Ạ
Bạn đừng nên viết tắt.
Bạn làm thế với mục đích gì vậy. Tại như mình thấy. Dữ liệu sheet1 không có liên kết gì với sheet2. khi thay đổi sheet 2 thì sao nó biết dữ liệu trước đó để mà thay đổi sheet1
 
khi thay đổi sheet 2 thì sao nó biết dữ liệu trước đó để mà thay đổi sheet1
Bạn có hiểu nhầm ý chủ thớt không nhỉ, theo mình hiểu, ý chủ thớt là dữ liệu gốc ở bên sheet1. Lấy ví dụ với số 1 đi, bây giờ muốn đổi cái nguồn (source) đó thành "Thùng 01". Nhưng bên sheet2 đã gán xuống sheet từ trước là số 1 rồi. Giờ làm sao để thay đổi cái nguồn đó thì bên sheet2 cũng thay đổi theo. Chứ không phải sửa ở sheet2 mà thay đổi ở sheet1
 
Bạn có hiểu nhầm ý chủ thớt không nhỉ, theo mình hiểu, ý chủ thớt là dữ liệu gốc ở bên sheet1. Lấy ví dụ với số 1 đi, bây giờ muốn đổi cái nguồn (source) đó thành "Thùng 01". Nhưng bên sheet2 đã gán xuống sheet từ trước là số 1 rồi. Giờ làm sao để thay đổi cái nguồn đó thì bên sheet2 cũng thay đổi theo. Chứ không phải sửa ở sheet2 mà thay đổi ở sheet1
Em nghi là em hiểu sai rồi. Hihi
 
Bạn có hiểu nhầm ý chủ thớt không nhỉ, theo mình hiểu, ý chủ thớt là dữ liệu gốc ở bên sheet1. Lấy ví dụ với số 1 đi, bây giờ muốn đổi cái nguồn (source) đó thành "Thùng 01". Nhưng bên sheet2 đã gán xuống sheet từ trước là số 1 rồi. Giờ làm sao để thay đổi cái nguồn đó thì bên sheet2 cũng thay đổi theo. Chứ không phải sửa ở sheet2 mà thay đổi ở sheet1
Dạ đúng ý em rồi ạ, có anh chị nào biết chỉ em với ạ
 
Dạ AC cho e hỏi khi e muốn thay đổi phần data valition thì bên cột tham chiếu cũng tự động thay đổi theo list data, ví dụ e muốn đổi “1” bên data valition ở sheet1 thành “ thùng 01 ” thì bên cột C sheet2 tham chiếu cũng sẽ tự đổi theo. Vậy phải viết code như nào ạ
Mong nhận được giải đáp từ các AC
EM CẢM ƠN Ạ
Validation gán thẳng dữ liệu trong list xuống trang tính chứ không gán tham chiếu hoặc lưu lại lịch sử gán. Do đó theo tôi biết là không thể thực hiện được yêu cầu của bạn.
 
Validation gán thẳng dữ liệu trong list xuống trang tính chứ không gán tham chiếu hoặc lưu lại lịch sử gán. Do đó theo tôi biết là không thể thực hiện được yêu cầu của bạn.
Thực hiện được chứ; Chỉ là sau thực hiện, trang tính dễ thành bãi rác
 
Thực hiện được chứ; Chỉ là sau thực hiện, trang tính dễ thành bãi rác
Theo như e tìm đọc trên diễn đàn thì có 1 trường hợp giống e đang muốn làm nhưng là trên 1 sheet, có 1 a đã viết code để thực hiện lệnh trên nhưng e là ở 2 sheet khác nhau nên e nhờ mọi người chỉ e viết code ở trường hợp này ạ
 
Theo như e tìm đọc trên diễn đàn thì có 1 trường hợp giống e đang muốn làm nhưng là trên 1 sheet, có 1 a đã viết code để thực hiện lệnh trên nhưng e là ở 2 sheet khác nhau nên e nhờ mọi người chỉ e viết code ở trường hợp này ạ
Bạn gửi cái link tìm được đó vào đây để tôi xem và sửa cho.
 
Dạ e tìm được ở đây ạ
://www.giaiphapexcel.com/diendan/threads/nhờ-giúp-đỡ-thay-đổi-nội-dung-list-của-data-validation.57914/#post-1066411
Bài đã được tự động gộp:

Bạn gửi cái link tìm được đó vào đây để tôi xem và sửa cho.
Dạ e tìm được ở đây ạ
://www.giaiphapexcel.com/diendan/threads/nhờ-giúp-đỡ-thay-đổi-nội-dung-list-của-data-validation.57914/#post-1066411
Bài đã được tự động gộp:

Bạn gửi cái link tìm được đó vào đây để tôi xem và sửa cho.
Dạ e tìm được ở đây ạ
://www.giaiphapexcel.com/diendan/threads/nhờ-giúp-đỡ-thay-đổi-nội-dung-list-của-data-validation.57914/#post-1066411
 
Hic. Tác giả code đó xuất hiện lù lù ở bài #7 kia bạn.

Thôi, bác Sa chịu khó giúp em nó vậy.
 
Dạ AC cho e hỏi khi e muốn thay đổi phần data valition thì bên cột tham chiếu cũng tự động thay đổi theo list data, ví dụ e muốn đổi “1” bên data valition ở sheet1 thành “ thùng 01 ” thì bên cột C sheet2 tham chiếu cũng sẽ tự đổi theo. Vậy phải viết code như nào ạ
Mong nhận được giải đáp từ các AC
EM CẢM ƠN Ạ

Bạn thử code này trong sheet 1

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim newValue As Variant, oldValue As Variant
Application.ScreenUpdating = False
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
    newValue = Target.Value
    Application.Undo
    oldValue = Target.Value
    Target.Value = newValue
    Worksheets("Sheet2").Columns("C").Replace What:=oldValue, Replacement:=newValue, _
       LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True
End If
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
 

File đính kèm

Bạn thử code này trong sheet 1

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim newValue As Variant, oldValue As Variant
Application.ScreenUpdating = False
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
    newValue = Target.Value
    Application.Undo
    oldValue = Target.Value
    Target.Value = newValue
    Worksheets("Sheet2").Columns("C").Replace What:=oldValue, Replacement:=newValue, _
       LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True
End If
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
Cảm ơn bạn đã giúp ạ :))
Mai mình xem có gì nhắn kết quả với bạn sau nhé
 
Cảm ơn bạn đã giúp ạ :))
Mai mình xem có gì nhắn kết quả với bạn sau nhé
Bạn thử code này trong sheet 1

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim newValue As Variant, oldValue As Variant
Application.ScreenUpdating = False
Application.EnableEvents = False
If Target.Column = 1 And Target.Count = 1 Then
    newValue = Target.Value
    Application.Undo
    oldValue = Target.Value
    Target.Value = newValue
    Worksheets("Sheet2").Columns("C").Replace What:=oldValue, Replacement:=newValue, _
       LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True
End If
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
Dạ a ơi e thử trên file này chạy được rồi ạ. Nhưng e ráp vào file chính của e thì lại hông được, mà e hông rành về cái này nên có thể nhờ Anh viết code lên file chính này giúp e được hông ạ, (data validation ở sheet "DSSP- SỐ THÙNG"- THAM CHIẾU LÀ CỘT H- ở sheet "Danh Sach"
Em cảm ơn Anh ạ!
 

File đính kèm

Thầy bói mù:
1. Chép code vào không đúng sheet module
2. Chép vào đúng chỗ rồi nhưng cấu trúc, bố trí dữ liệu khác với file ví dụ
 
Cũng như anh ấy. Mất công giúp rồi. Cảm ơn không được cảm ơn. Lại còn buồn với rầu. Nếu là anh thì anh cảm như thế nào.
Xin nhắc anh thêm. Đừng viết tắt trong bài viết. Không tới lúc chẳng còn ai giúp anh nữa đâu.
 
Cũng như anh ấy. Mất công giúp rồi. Cảm ơn không được cảm ơn. Lại còn buồn với rầu. Nếu là anh thì anh cảm như thế nào.
Xin nhắc anh thêm. Đừng viết tắt trong bài viết. Không tới lúc chẳng còn ai giúp anh nữa đâu.
Dạ em là nữ ạ
Cảm ơn Anh đã nhắc
 
Trời ơi, cô gái ơi, thông tin quan trọng thế mà bây giờ em mới tiết lộ?
Nữ thì có khác gì chơi cờ vua được thêm con xe. Bao chàng trai mơ được là hoàng tử, là cứu tinh của người đẹp.

Bạn phải biết những thông tin nào quan trọng để khi ráp vào tập tin cụ thể thì biết phải sửa những gì.

1. Danh sách dùng cho DV nằm ở đâu - ở sheet nào?
Do bạn sẽ chỉnh sửa danh sách dùng cho DV và bạn muốn code phản ứng ngay tắp lự với thay đổi đó để chỉnh sửa những chỗ đã chọn ở sheet khác, nên bạn phải biết đó là sheet nào để đặt code vào đúng sheet đó. Trước đó ở tập tin ví dụ thì danh sách nằm ở Sheet1 nên người ta đặt code ở Sheet1. Bây giờ danh sách nằm ở sheet "DSSP" nên code phải đặt ở sheet "DSSP".

2. Danh sách nằm ở cột nào?
Ở tập tin ví dụ thì danh sách nằm ở cột A, vì thế trong code có If Target.Column = 1 ... Bây giờ danh sách nằm ở cột D nên phải sửa thành
... Target.Column = 4 (cột D). Tôi thêm cả điều kiện về dòng - Target.Row >= 3. Tức mọi thay đổi ở dòng 1 và 2 không phục vụ.
Tóm lại thay đổi dòng cũ thành
Mã:
If Target.Count = 1 And Target.Row >= 3 And Target.Column = 4 Then

3. Code sẽ tìm các mục để chỉnh sửa ở sheet nào, cột nào? Tức DV ở sheet nào, cột nào?
Trước đó DV ở sheet2, cột C. Bây giờ DV nằm ở sheet "Danh Sach", cột H nên phải thay bằng
Worksheets("Danh Sach").Range("H5:H1000").Replace What:=oldValue, Replacement:=newValue, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True

Tôi dùng Range("H5:H1000") thay cho Columns("H").

Mỗi khi ráp vào tập tin cụ thể bạn phải chú ý 3 điểm tôi ghi ở trên thì code mới được để đúng chỗ và chạy chuẩn.
-----------
Toàn bộ code đã sửa từ code của bạn Phuocam ở dưới.

Trong tập tin đính kèm đã có code được sửa. Tôi cũng xóa toàn bộ (biến thành chú thích) code trong sheet "Danh Sach".

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim newValue As Variant, oldValue As Variant
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    If Target.Count = 1 And Target.Row >= 3 And Target.Column = 4 Then
        newValue = Target.Value
        Application.Undo
        oldValue = Target.Value
        Target.Value = newValue
        Worksheets("Danh Sach").Range("H5:H1000").Replace What:=oldValue, Replacement:=newValue, _
           LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True
    End If
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
 

File đính kèm

Trời ơi, cô gái ơi, thông tin quan trọng thế mà bây giờ em mới tiết lộ?
Nữ thì có khác gì chơi cờ vua được thêm con xe. Bao chàng trai mơ được là hoàng tử, là cứu tinh của người đẹp.

Bạn phải biết những thông tin nào quan trọng để khi ráp vào tập tin cụ thể thì biết phải sửa những gì.

1. Danh sách dùng cho DV nằm ở đâu - ở sheet nào?
Do bạn sẽ chỉnh sửa danh sách dùng cho DV và bạn muốn code phản ứng ngay tắp lự với thay đổi đó để chỉnh sửa những chỗ đã chọn ở sheet khác, nên bạn phải biết đó là sheet nào để đặt code vào đúng sheet đó. Trước đó ở tập tin ví dụ thì danh sách nằm ở Sheet1 nên người ta đặt code ở Sheet1. Bây giờ danh sách nằm ở sheet "DSSP" nên code phải đặt ở sheet "DSSP".

2. Danh sách nằm ở cột nào?
Ở tập tin ví dụ thì danh sách nằm ở cột A, vì thế trong code có If Target.Column = 1 ... Bây giờ danh sách nằm ở cột D nên phải sửa thành
... Target.Column = 4 (cột D). Tôi thêm cả điều kiện về dòng - Target.Row >= 3. Tức mọi thay đổi ở dòng 1 và 2 không phục vụ.
Tóm lại thay đổi dòng cũ thành
Mã:
If Target.Count = 1 And Target.Row >= 3 And Target.Column = 4 Then

3. Code sẽ tìm các mục để chỉnh sửa ở sheet nào, cột nào? Tức DV ở sheet nào, cột nào?
Trước đó DV ở sheet2, cột C. Bây giờ DV nằm ở sheet "Danh Sach", cột H nên phải thay bằng


Tôi dùng Range("H5:H1000") thay cho Columns("H").

Mỗi khi ráp vào tập tin cụ thể bạn phải chú ý 3 điểm tôi ghi ở trên thì code mới được để đúng chỗ và chạy chuẩn.
-----------
Toàn bộ code đã sửa từ code của bạn Phuocam ở dưới.

Trong tập tin đính kèm đã có code được sửa. Tôi cũng xóa toàn bộ (biến thành chú thích) code trong sheet "Danh Sach".

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim newValue As Variant, oldValue As Variant
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    If Target.Count = 1 And Target.Row >= 3 And Target.Column = 4 Then
        newValue = Target.Value
        Application.Undo
        oldValue = Target.Value
        Target.Value = newValue
        Worksheets("Danh Sach").Range("H5:H1000").Replace What:=oldValue, Replacement:=newValue, _
           LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=True
    End If
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
Cảm ơn Anh rất nhiều ạ
Anh giải thích rất chi tiết
Em sẽ sửa lại ạ :)))
 
Hiện tại mình cũng có làm gợi ý như thế nhưng là dùng Hàm chứ mình không dùng code. Nếu bạn cần mình có thể share
 
Hiện tại mình cũng có làm gợi ý như thế nhưng là dùng Hàm chứ mình không dùng code. Nếu bạn cần mình có thể share
Em vẫn chưa ạ, e không biết sai ở đâu từ hướng dẫn của các anh ở trên, em gửi file anh có thể làm trên file gốc giúp e được không ạ, e muốn bên sheet “Danh Sach” khi e gắn data validation với thông tin gốc bên sheet “DSSP” khi em thay đổi thông tin bảng gốc thì cột tham chiếu cũng sẽ tự động thay đổi với những thông tin đã tham chiếu trước đó, ở đây e có 2 cột gắn data là “ tên sản phẩm” và “số thùng” bên sheet “Danh Sach”
Mong nhận được phản hồi từ anh ạ
Em cảm ơn
 

File đính kèm

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

Back
Top Bottom