Code ràng buộc chỉ cho nhập với điều kiện cột khác có dữ liệu.

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

khamha

Không có việc gì khó...
Tham gia
4/6/10
Bài viết
662
Được thích
846
Nghề nghiệp
CNVC Laos
Nhờ các bạn viết giúp mình cái hàm bắt buộc,ý mình là nếu cột A mà không có dữ liệu thì không
thể nhập dữ liêu số vào cột B được.
Ví dụ: nếu không nhập dữ liệu vào ô A1 thì sẽ không thể nhập dữ liệu vào ô B1 được.
Cảm ơn các bạn.
 
Bạn đặt vào sự kiên chang của sheet như sau

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.End(1) = "" And Target.Column=2 Then Target = ""
End Sub
vậy là khỏi hàm
 
Lần chỉnh sửa cuối:
Bạn Sealand ơi,Sao không thấy trong Code có ghi cột hoặc ô.
 
Bạn đặt vào sự kiên chang của sheet như sau

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.End(1) = "" And Target.Column=2 Then Target = ""
End Sub
vậy là khỏi hàm

Bạn có thể sửa lại cho mình là:nếu không có dữ liệu trong ô C10 đến C39 thì sẽ không nhập dữ liệu vào ô I10 đến ô I39
Ví dụ:nếu không nhập dữ liệu vào ô C10 thì sẽ không thể nhập dữ liệu vào ô I10 được.
Cảm ơn bạn.
 
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("I10:I39")) Is Nothing Then
      If Target.Offset(0, -6) = "" Then Target = "": Target.Select
   End If
End Sub
 
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("I10:I39")) Is Nothing Then
      If Target.Offset(0, -6) = "" Then Target = "": Target.Select
   End If
End Sub

Cảm ơn bạn đã giúp và đổi tiêu đề cho phù hợp với nội dung.nhờ bạn bạn giải thích cho mình, là làm sao nó lại lấy mốc là cột C
trong khi đó trong Code lại không có ghi là C ,một lần nữa cảm ơn bạn.
 
Cảm ơn bạn đã giúp và đổi tiêu đề cho phù hợp với nội dung.nhờ bạn bạn giải thích cho mình, là làm sao nó lại lấy mốc là cột C
trong khi đó trong Code lại không có ghi là C ,một lần nữa cảm ơn bạn.

Target.Offset(0, -6) tức là ô so với Target là cùng dòng và lệch về bên trái 6 cột. I đếm ngược về trái 6 bước, đó là C.

Tương đương với:

Cells(Target.Row, 3)
Range("C" & Target.Row)
 
Lần chỉnh sửa cuối:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("I10:I39")) Is Nothing Then
      If Target.Offset(0, -6) = "" Then Target = "": Target.Select
   End If
End Sub

Bạn cho hỏi là:sao ta áp dụng cái Code trên cho Excel 2007 lại không có tác dụng.Cảm ơn bạn.
 
Bạn có đặt code vào đúng sheet cần khoá không?
 
Khi sử dụng nó bị lỗi như sau:Target = ""
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("I1:I39")) Is Nothing Then
If Target.Offset(0, -6) = "" Then Target = "": Target.Select
End If
End Sub
 
Bạn đặt vào sự kiên chang của sheet như sau

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.End(1) = "" And Target.Column=2 Then Target = ""
End Sub
vậy là khỏi hàm
Code này vẫn không "chống" được copy/paste anh ơi!
 
Còn cách khác không bạn ndu
 
Còn cách khác không bạn ndu
Code dưới đây có tác dùng tại vùng B1:B100 ---> Bạn hãy sửa lại cho phù hợp
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim sArray, Arr(), Rng As Range, i As Long
  If Not Intersect(Target, Range("B1:B100")) Is Nothing Then
    Set Rng = Intersect(Target, Range("B1:B100"))
    sArray = Rng.Offset(, -1).Resize(, 2).Value
    ReDim Arr(1 To Rng.Rows.Count, 1 To 1)
    For i = 1 To UBound(Arr, 1)
      If sArray(i, 1) = "" Then
        Arr(i, 1) = ""
      Else
        Arr(i, 1) = sArray(i, 2)
      End If
    Next
    Rng.Value = Arr
  End If
End Sub
Thử code này cho nhập liệu đồng thời copy/paste xem sao nhé
 
Code dưới đây có tác dùng tại vùng B1:B100 ---> Bạn hãy sửa lại cho phù hợp
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim sArray, Arr(), Rng As Range, i As Long
  If Not Intersect(Target, Range("B1:B100")) Is Nothing Then
    Set Rng = Intersect(Target, Range("B1:B100"))
    sArray = Rng.Offset(, -1).Resize(, 2).Value
    ReDim Arr(1 To Rng.Rows.Count, 1 To 1)
    For i = 1 To UBound(Arr, 1)
      If sArray(i, 1) = "" Then
        Arr(i, 1) = ""
      Else
        Arr(i, 1) = sArray(i, 2)
      End If
    Next
    Rng.Value = Arr
  End If
End Sub
Thử code này cho nhập liệu đồng thời copy/paste xem sao nhé

Bạn ơi,Sao nó không hoạt động gì cả.
 
Bạn Cho Hỏi là:tại sao cái Code này chỉ chạy được trên 2003 còn với 2007 thì lại không được.

Private
Sub Worksheet_Change(ByVal Target As Range)
If
Not Intersect(Target, Range("I10:I39")) Is Nothing Then
If Target.Offset(0, -6) = "" Then Target = "": Target.Select
End
If
End Sub
 
Bạn Cho Hỏi là:tại sao cái Code này chỉ chạy được trên 2003 còn với 2007 thì lại không được.

Private
Sub Worksheet_Change(ByVal Target As Range)
If
Not Intersect(Target, Range("I10:I39")) Is Nothing Then
If Target.Offset(0, -6) = "" Then Target = "": Target.Select
End
If
End Sub
Thử sửa lại vầy xem:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("I10:I39")) Is Nothing Then
    Application.EnableEvents = False
    If Target.Offset(0, -6) = "" Then Target.ClearContents: Target.Select
    Application.EnableEvents = True
  End If
End Sub
 
Chắc bạn ndu sử dụng Excel 2003 nên không thử được,Mình thử rồi vẫn không hoạt động bạn ạ.Cảm ơn bạn
 
Bài trên tôi có hỏi bạn: Có chép code vào đúng sheet cần khoá chưa?
Bạn chưa trả lời

Tôi đang sử dụng cả 2003 và 2007, và cả 2 đều chạy tốt.
 
Bài trên tôi có hỏi bạn: Có chép code vào đúng sheet cần khoá chưa?
Bạn chưa trả lời

Tôi đang sử dụng cả 2003 và 2007, và cả 2 đều chạy tốt.

Cảm ơn bạn đã quan tâm,mình đã trả lời bạn ở bài #10,thật là khó hiểu là sao File của bạn lại chạy được còn của mình lại không,
hay là bạn làm ơn cho mình xin cái File của bạn để mình chạy trên máy mình xem sao.cảm ơn bạn
 
Web KT

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

Back
Top Bottom