Code VBA khi Cell có giá trị thì Cell khác rỗng

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

LuuAnh980

Thành viên tiêu biểu
Tham gia
28/9/22
Bài viết
452
Được thích
104
Giới tính
Nữ
Em chào các anh chị!!
Em muốn khi E2 có giá trị thì B2:B3 rỗng, và E3 có giá trị thì E2 rỗng, thì code viết sao ạ.
Mong các anh chị giúp.
Bài đã được tự động gộp:

Em có viết như vầy, nhưng code lỗi.
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("E2").Value <> "" Then
  Range("B2:B3") = ""
  else range("E3").Value<>""then range("E2")=""
End If

End Sub
 
Lần chỉnh sửa cuối:
Em chào các anh chị!!
Em muốn khi E2 có giá trị thì B2:B3 rổng, và E3 có giá trị thì E2 rổng, thì code viết sao ạ.
Mong các anh chị giúp.
Vậy khi cả E2 và E3 cùng có giá trị thì bạn muốn B2:B3 ở trạng thái như thế nào? (Nên sửa lại là "rỗng" chứ không phải "rổng" nghe bạn).
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn anh @Hoàng Tuấn 868 nhiều. Thêm điều kiện là E2 có giá trị thì E3 rỗng ạ, chứ không thể E2 và E3 cùng có giá trị.
 
Upvote 0
Lô gic không giản dị vậy đâu.
Nếu vào E3 gõ trị gì đó, code sẽ lập tức xóa đi, vì xét thấy E2 không rỗng.

Phải xác định: 2 ô E2 và E3 đối nhau, nếu gõ trị ở ô này thì ô kia bị xóa. Nếu gõ trị ở ô khác thì ô E2 ưu tiên (nếu 2 ô cùng có trị thì giữ E2, xóa E3)
 
Upvote 0
Cám ơn anh @Hoàng Tuấn 868 nhiều.
Em phải thêm code:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E2")) Is Nothing Then
        Call xoa_E3
    End If
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        Call xoa_E2
    End If
    If Not Intersect(Target, Range("B2")) Is Nothing Then
        Call xoa_E2E3
     End If
    If Not Intersect(Target, Range("B3")) Is Nothing Then
        Call xoa_E2E3_1
     End If

End Sub
và trong module
Mã:
Sub xoa_E3()
If Range("E2").Value <> "" Then
        Range("B2:B3") = ""
        Range("E3").Value = ""
End If
End Sub
Sub xoa_E2()
If Range("E3").Value <> "" Then
        Range("B2:B3") = ""
        Range("E2").Value = ""
End If
End Sub
Sub xoa_E2E3()
If Range("B2").Value <> "" Then
        Range("E2:E3") = ""
End If
End Sub
Sub xoa_E2E3_1()
If Range("B3").Value <> "" Then
        Range("E2:E3") = ""
End If
End Sub
Các anh chị coi có thể rút gọn lại dùm.
 
Upvote 0
Cám ơn anh @Hoàng Tuấn 868 nhiều.
Em phải thêm code:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E2")) Is Nothing Then
        Call xoa_E3
    End If
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        Call xoa_E2
    End If
    If Not Intersect(Target, Range("B2")) Is Nothing Then
        Call xoa_E2E3
     End If
    If Not Intersect(Target, Range("B3")) Is Nothing Then
        Call xoa_E2E3_1
     End If

End Sub
và trong module
Mã:
Sub xoa_E3()
If Range("E2").Value <> "" Then
        Range("B2:B3") = ""
        Range("E3").Value = ""
End If
End Sub
Sub xoa_E2()
If Range("E3").Value <> "" Then
        Range("B2:B3") = ""
        Range("E2").Value = ""
End If
End Sub
Sub xoa_E2E3()
If Range("B2").Value <> "" Then
        Range("E2:E3") = ""
End If
End Sub
Sub xoa_E2E3_1()
If Range("B3").Value <> "" Then
        Range("E2:E3") = ""
End If
End Sub
Các anh chị coi có thể rút gọn lại dùm.
Mỗi thủ tục một chức năng riêng, ý bạn định rút gọn thế nào nhỉ, mình cũng chưa nghĩ ra được.
 
Upvote 0
Mình có thể viết trong Sub của sheet thôi được không anh? Không cần Module.
 
Upvote 0
Web KT

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

Back
Top Bottom