Ghi nhận thời gian khi nhập dữ liệu

Liên hệ QC

gagallus

Thành viên mới
Tham gia
11/8/11
Bài viết
10
Được thích
0
Chào các bác,
Em không rành về VBA và em có tìm được đoạn code về vấn đề mà tiêu đề đã ghi, đoạn code như sau:

Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
   With ActiveSheet
        If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then
            If Range("B" & Target.Row) <> "" Then
                Range("A" & Target.Row) = Now
           End If
       End If
   End With
End Sub

Theo như code này biểu diễn thì nếu nhập dữ liệu vào cột B thì thời gian sẽ được ghi nhận ở cột A tương ứng, nhưng vấn đề là nếu thay đổi số liệu lại ở cột B thì thời gian ở cột A cũng sẽ thay đổi theo, giờ em muốn nếu đã ghi nhận thời gian ở cột A rồi thì thời gian này sẽ không bị thay đổi hoặc có thay đổi hay lở xóa dữ liệu ở cột B thì thời gian vẫn giữ nguyên tại thời điểm nhập liệu, mong các bác chỉ giúp em đoạn code này với ạ, em cám ơn.
 
Chào các bác,
Em không rành về VBA và em có tìm được đoạn code về vấn đề mà tiêu đề đã ghi, đoạn code như sau:

Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
   With ActiveSheet
        If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then
            If Range("B" & Target.Row) <> "" Then
                Range("A" & Target.Row) = Now
           End If
       End If
   End With
End Sub

Theo như code này biểu diễn thì nếu nhập dữ liệu vào cột B thì thời gian sẽ được ghi nhận ở cột A tương ứng, nhưng vấn đề là nếu thay đổi số liệu lại ở cột B thì thời gian ở cột A cũng sẽ thay đổi theo, giờ em muốn nếu đã ghi nhận thời gian ở cột A rồi thì thời gian này sẽ không bị thay đổi hoặc có thay đổi hay lở xóa dữ liệu ở cột B thì thời gian vẫn giữ nguyên tại thời điểm nhập liệu, mong các bác chỉ giúp em đoạn code này với ạ, em cám ơn.
Thêm 1 cái if nữa
Mã:
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range)   With ActiveSheet   
If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then     

If range("a"&  target.row) <> "" then
If Range("B" & Target.Row) <> "" Then             
Range("A" & Target.Row) = Now     
End If   
End if
End If 
End With
End Sub
 
Thêm 1 cái if nữa
Mã:
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range)   With ActiveSheet  
If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then    

If range("a"&  target.row) <> "" then
If Range("B" & Target.Row) <> "" Then            
Range("A" & Target.Row) = Now    
End If  
End if
End If
End With
End Sub

Như của bác em làm thì khi xóa đi hoặc sửa lại dữ liệu bên cột B thì thời gian cột A vẫn bị thay đổi theo ạ
 
"<>" là điều kiện bắt buộc nên kô thay được bác ạ, nó biểu diễn cho điều kiện "nếu ... không phải ... thì"
Bài #2 nói nhầm 1 tí lẽ ra là If Range("A" & Target.Row) = "" Then thì đúng rồi.
Còn bài #6 thì nói [if ngoài cùng từ <> " " thành = " "] => sai ở chỗ lẽ ra phải là "" (rỗng) thì viết là " " (dấu cách).
Kết cuộc theo tôi thì code thế này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
   With ActiveSheet
        If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then
            If Range("A" & Target.Row) = "" Then
                If Range("B" & Target.Row) <> "" Then
                    Range("A" & Target.Row) = Now
               End If
            End If
        End If
   End With
End Sub
 
Bài #2 nói nhầm 1 tí lẽ ra là If Range("A" & Target.Row) = "" Then thì đúng rồi.
Còn bài #6 thì nói [if ngoài cùng từ <> " " thành = " "] => sai ở chỗ lẽ ra phải là "" (rỗng) thì viết là " " (dấu cách).
Kết cuộc theo tôi thì code thế này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
   With ActiveSheet
        If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then
            If Range("A" & Target.Row) = "" Then
                If Range("B" & Target.Row) <> "" Then
                    Range("A" & Target.Row) = Now
               End If
            End If
        End If
   End With
End Sub

Được rồi ạ, tks bác.
 
Lần chỉnh sửa cuối:
Như code của bác em làm xong thì cột A đứng hình luôn ạ, ahihi.
Thử code này:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then
            If Target.Value <> "" And Target.Offset(0, -1).Value = "" Then
                Application.EnableEvents = False
                Target.Offset(0, -1).Value = Now
                Application.EnableEvents = True
           End If
       End If
End Sub
 
Thử code này:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Application.Intersect(Range("B1:B100"), Target) Is Nothing Then
            If Target.Value <> "" And Target.Offset(0, -1).Value = "" Then
                Application.EnableEvents = False
                Target.Offset(0, -1).Value = Now
                Application.EnableEvents = True
           End If
       End If
End Sub

Được luôn rồi ạ, tks bác.
 
Web KT
Back
Top Bottom