Nhờ giúp đỡ kiểm tra dữ liệu nhập bằng VBA (1 người xem)

Liên hệ QC

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

phieudu_90

Thành viên mới
Tham gia
12/2/14
Bài viết
4
Được thích
0
Chào ACE GPE! Vấn đề của mình là thế này.
Mình có 3 ô cell, Jo nếu mình nhập 1 trong 3 ô cell đó thì dữ liệu nhập trước đó của 2 ô còn lại sẽ bị xóa.
mong mọi người giúp đỡ.
Thanks!
 
Chào ACE GPE! Vấn đề của mình là thế này.
Mình có 3 ô cell, Jo nếu mình nhập 1 trong 3 ô cell đó thì dữ liệu nhập trước đó của 2 ô còn lại sẽ bị xóa.
mong mọi người giúp đỡ.
Thanks!

Bạn mở file và kiểm tra xem có đúng với yêu cầu đó ko :-=

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5")) Is Nothing And Range("B5") <> "" Then
        Application.Union([C3], [D6]) = Empty
    End If
    If Not Intersect(Target, Range("C3")) Is Nothing And Range("C3") <> "" Then
        Application.Union([B5], [D6]) = Empty
    End If
    If Not Intersect(Target, Range("D6")) Is Nothing And Range("D6") <> "" Then
        Application.Union([B5], [C3]) = Empty
    End If
End Sub

Link MediaFire: target 123
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn mở file và kiểm tra xem có đúng với yêu cầu đó ko :-=

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5")) Is Nothing And Range("B5") <> "" Then
        Application.Union([C3], [D6]) = Empty
    End If
    If Not Intersect(Target, Range("C3")) Is Nothing And Range("C3") <> "" Then
        Application.Union([B5], [D6]) = Empty
    End If
    If Not Intersect(Target, Range("D6")) Is Nothing And Range("D6") <> "" Then
        Application.Union([B5], [C3]) = Empty
    End If
End Sub

Nếu làm như bạn thì ta chỉ có thể nhập dữ liệu được vào duy nhất 1 ô thôi. Trong khi bạn ấy muốn "khi nhập vào 1 ô thì toàn bộ dữ liệu ở 2 ô kia bị xóa.
 
Upvote 0
Code của bạn có nhiều số liệu đặt vào (tiếng chuyên môn gọi là "magic numbers") quá. Muốn sửa vùng xác định rất khó.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Const cList = "A1, B2, C3" ' chỉ cần sửa chỗ này
If Intersect(Target, Range(cList)) Is Nothing Then Exit Sub
Application.EnableEvents = False
x = Target.Value ' giữ lại giá trị vừa nhập
Range(cList).ClearContents ' xoá hết dữ liệu trong vùng
Target.Value = x ' copy lại dữ liệu vừa nhập
Application.EnableEvents = True
End Sub
 
Upvote 0
Code của bạn có nhiều số liệu đặt vào (tiếng chuyên môn gọi là "magic numbers") quá. Muốn sửa vùng xác định rất khó.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Const cList = "A1, B2, C3" ' chỉ cần sửa chỗ này
If Intersect(Target, Range(cList)) Is Nothing Then Exit Sub
Application.EnableEvents = False
x = Target.Value ' giữ lại giá trị vừa nhập
Range(cList).ClearContents ' xoá hết dữ liệu trong vùng
Target.Value = x ' copy lại dữ liệu vừa nhập
Application.EnableEvents = True
End Sub

Đúng vậy code này chỉ cần sửagiá trị đầu vào tại 1 dòng là xong.
 
Upvote 0
Bạn mở file và kiểm tra xem có đúng với yêu cầu đó ko :-=

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5")) Is Nothing And Range("B5") <> "" Then
        Application.Union([C3], [D6]) = Empty
    End If
    If Not Intersect(Target, Range("C3")) Is Nothing And Range("C3") <> "" Then
        Application.Union([B5], [D6]) = Empty
    End If
    If Not Intersect(Target, Range("D6")) Is Nothing And Range("D6") <> "" Then
        Application.Union([B5], [C3]) = Empty
    End If
End Sub
Mình cần có một file tính khối lượng mình nhập Dai x Rong X cao hoặc nhập diện tích mặt cắt A với chiều dài hoặc nhập khối lượng/mét rồi nhân với chiều dài. Kết quả được hiển thị trong 1 cell duy nhất. bạn có thể gúp mình được k?
Mình xin lỗi vì k úp file lên được do máy công ty mình mã hóa hết các file rùi.
 
Upvote 0
Lại gặp trường hợp không chịu nói cặn kẽ từ đầu. Chạy dài luôn với những người này.

Tuy nguyên tắc của giải bài là đi từ cái dễ đến cái khó, phát triển từ tổng quan đến chi tiết, nhưng ở đây bạn phân tích tổng quan không đúng chỗ cho nên đi ra chi tiết bị tắt nghẽn. Muốn làm như bạn nói không thể phát triển từ code kia được mà phải viết lại code khác hoàn toàn.
 
Upvote 0

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

Back
Top Bottom