Code VBA khi Cell có giá trị thì Cell khác rỗng (3 người xem)

Liên hệ QC

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

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
463
Được thích
106
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