Điều khiển nhập dữ liệu cho Excel

Liên hệ QC

cuongdoannhat

Thành viên chính thức
Tham gia
27/6/09
Bài viết
67
Được thích
39
Chào các bạn.
Mình có vấn đề như thế này không biết phải xử lý sao các bạn giúp với.
Trên các hàng mình muốn nhập dữ liệu cho 3 cột A, B, C
Trên cùng một hàng nếu đã nhập dữ liệu cho cột A, thì không được nhập cho cột B và C, và tương tự cho cột B, C (Trên mỗi hàng chỉ có dữ liệu của một cột)
Nếu cố tình nhập sẽ bị thông báo lỗi.
Mình phải code làm sao nhỉ?
 
Chào các bạn.
Mình có vấn đề như thế này không biết phải xử lý sao các bạn giúp với.
Trên các hàng mình muốn nhập dữ liệu cho 3 cột A, B, C
Trên cùng một hàng nếu đã nhập dữ liệu cho cột A, thì không được nhập cho cột B và C, và tương tự cho cột B, C (Trên mỗi hàng chỉ có dữ liệu của một cột)
Nếu cố tình nhập sẽ bị thông báo lỗi.
Mình phải code làm sao nhỉ?
Sao bạn mở 2 Topic, coi chừng bị xóa đó
Bạn xem File đính kèm nhé. Lần sau phải gửi file mẫu lên dễ làm hơn
 

File đính kèm

Upvote 0
Cảm ơn bạn hanhpptc. Dựa trên hướng dẫn của bạn mình đọc thêm trong Excel Help tìm được ví dụ sau:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
ThisRow = Target.Row
If Target.Value > 100 Then
Range("B" & ThisRow).Interior.ColorIndex = 3
Else
Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone
End If
End If
End Sub
Ý tưởng của mình dựa trên đoạn code này là: thay vì đổi màu của ô Bx, mình có thể code để không cho phép nhập dữ liệu vào ô Bx được không nhỉ (ý mình là khoá ô Bx), bạn giúp mình nhe. Cảm ơn bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình code ý tưởng trên như sau các bạn xem và góp ý giúp với.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
ThisRow = Target.Row
If Target.Value > 100 Then
Range("B" & ThisRow).Locked = True
Sheets(1).Protect
Else
Sheets(1).Unprotect
Range("B" & ThisRow).Locked = False
End If
End If
End Sub
 
Upvote 0
Qua swj giúp đỡ của các bạn mình đã làm xong code của vấn đề trên nhưng không biết đã tốt chưa nhờ các bạn góp ý dùm. Chân thành cảm ơn.
Private Function SubTract(ByVal SrcRng As Range, ByVal RejRng As Range) As Range
Dim cel As Range, tmp As Range
For Each cel In SrcRng
If Intersect(cel, RejRng) Is Nothing Then
If tmp Is Nothing Then
Set tmp = cel
Else:
Set tmp = Union(tmp, cel)
End If
End If
Next
Set SubTract = tmp
End Function

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tmp As Range
ThisRow = Target.Row
Set tmp = Range(Cells(ThisRow, 1), Cells(ThisRow, 14))
If Target.Value <> "" Then
Sheets(1).Unprotect
With SubTract(tmp, Target)
.Locked = True
End With
Sheets(1).Protect
Else
Sheets(1).Unprotect
With SubTract(tmp, Target)
.Locked = False
End With
Sheets(1).Protect
End If
End Sub
 
Upvote 0

File đính kèm

Upvote 0
Ừ nhỉ. Thoạt đầu mình cũng nghĩ là dùng Validation nhưng lại không nghĩ ra công thức. Cảm ơn bạn ndu96081631. Vấn đề này xem như nhẹ nhàng rồi, khỏi phải code nữa.
 
Upvote 0
Web KT

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

Back
Top Bottom