thanhha569
Thành viên mới

- Tham gia
- 28/7/11
- Bài viết
- 17
- Được thích
- 1
các bác giúp em viết code mà khi mình nhập số vào 1 ô thì 1 ô khác có thời gian thưc kiểu hh:mm ví dụ nhập số ở ô I5 thì ô B21 có thời gian kiểu hh:mm thank các bác trươc
Tham khảo bài này: http://www.giaiphapexcel.com/forum/...hỏi-về-việc-ghi-nhập-liệu&p=276629#post276629các bác giúp em viết code mà khi mình nhập số vào 1 ô thì 1 ô khác có thời gian thưc kiểu hh:mm ví dụ nhập số ở ô I5 thì ô B21 có thời gian kiểu hh:mm thank các bác trươc
Bạn xem file xem đúng ý bạn chưa ?các bác giúp em viết code mà khi mình nhập số vào 1 ô thì 1 ô khác có thời gian thưc kiểu hh:mm ví dụ nhập số ở ô I5 thì ô B21 có thời gian kiểu hh:mm thank các bác trươc
Xem đã đúng ý chưa nhé! Nhập nội dung gì đó vào cột B thì bên cột A sẽ tự động cập nhật thời gian.các bác giúp em viết code mà khi mình nhập số vào 1 ô thì 1 ô khác có thời gian thưc kiểu hh:mm ví dụ nhập số ở ô I5 thì ô B21 có thời gian kiểu hh:mm thank các bác trươc
Thì code trong File của bạn Ngoaithanh đó thôi.Đúng rùi nhưng em chỉ cần 1ô như của bác Ngoai Thanh thui cho em xin đoạn code đi
Bạn bấm All+F11 để xem code nhé .Đúng rùi nhưng em chỉ cần 1ô như của bác Ngoai Thanh thui cho em xin đoạn code đi
Xem đã đúng ý chưa nhé! Nhập nội dung gì đó vào cột B thì bên cột A sẽ tự động cập nhật thời gian.
Tùy biến cho phù hợp với công việc nhé!
P/S: Nhớ hồi âm lại cho tôi!
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [B1:B1000]) Is Nothing Then
Application.EnableEvents = False
[COLOR=#ff0000]For Each Target In [B1:B1000][/COLOR]
If Target = [COLOR=#0000cd]ActiveCell[/COLOR].Offset(-1, 0) Then
If Target <> "" Then [COLOR=#0000cd]ActiveCell[/COLOR].Offset(-1, -1) = Now
End If
Next Target
End If
Application.EnableEvents = True
End Sub
For Each [COLOR=#ff0000]Cel[/COLOR] in Target
Mong thầy chỉ bảo thêm cho em ạ!Code của bạn:
Câu lệnh màu đỏ là... trật lất. Đúng ra phải là:Mã:Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, [B1:B1000]) Is Nothing Then Application.EnableEvents = False [COLOR=#ff0000]For Each Target In [B1:B1000][/COLOR] If Target = [COLOR=#0000cd]ActiveCell[/COLOR].Offset(-1, 0) Then If Target <> "" Then [COLOR=#0000cd]ActiveCell[/COLOR].Offset(-1, -1) = Now End If Next Target End If Application.EnableEvents = True End Sub
Với biến Cel được khai báo kiểu RangeMã:For Each [COLOR=#ff0000]Cel[/COLOR] in Target
Ngoài ra, việc dùng ActiveCell là sai... nghiêm trọng
Viết code cho mấy vụ này, bạn còn phải tính đến các trường hợp: Chèn dòng, xóa dòng sẽ không làm thay đổi giá trị của cell trước đóMong thầy chỉ bảo thêm cho em ạ!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range, rng As Range
On Error GoTo ExitSub
If Not Intersect(Target, [B1:B1000]) Is Nothing Then
Application.EnableEvents = False
[COLOR=#ff0000]Set rng = Intersect(Target, [B1:B1000])[/COLOR]
For Each [COLOR=#ff0000]cel [/COLOR]In [COLOR=#ff0000]rng[/COLOR]
With cel.Offset(, -1)
If cel.Value <> "" Then
If .Value = "" Then .Value = Now ''Nếu cột A chưa có dữ liệu thì mới chèn giờ
Else
.ClearContents
End If
End With
Next
ExitSub:
Application.EnableEvents = True
End If
End Sub
Vâng ạ! Ăn cơm xong là em sẽ vooc code của thầy luôn! Nếu vãn chưa hiểu được em lại làm phiền thầy tiếp!Viết code cho mấy vụ này, bạn còn phải tính đến các trường hợp: Chèn dòng, xóa dòng sẽ không làm thay đổi giá trị của cell trước đó
Code của tôi:
Lưu ý mấy chỗ màu đỏ và tự suy nghĩ nhéMã:Private Sub Worksheet_Change(ByVal Target As Range) Dim cel As Range, rng As Range On Error GoTo ExitSub If Not Intersect(Target, [B1:B1000]) Is Nothing Then Application.EnableEvents = False [COLOR=#ff0000]Set rng = Intersect(Target, [B1:B1000])[/COLOR] For Each [COLOR=#ff0000]cel [/COLOR]In [COLOR=#ff0000]rng[/COLOR] With cel.Offset(, -1) If cel.Value <> "" Then If .Value = "" Then .Value = Now ''Nếu cột A chưa có dữ liệu thì mới chèn giờ Else .ClearContents End If End With Next ExitSub: Application.EnableEvents = True End If End Sub
Giờ mới để ý bạn vẫn vướng , máy mình không thấy báo lỗi . Bạn xóa code chỉ để :nhưng sao no báo lối debug :With Range("B21") nhỉ thank hai bác nhé
Bạn đưa file của bạn lên đi . chỉ nói hoặc vài cái ảnh làm sao biết nó bị lỗi gì ? Theo mình khả năng Excel của bạn có vấn đề .thế còn vụ cua em thì thế nào mấy bác em chỉ sử dụng 1ô thui ô i5 thay đổi liên tục và ô b21 thay đổi theo của bác Ngoai Thanh chay đc nhưng cứ báo lỗi và chỉ chay 2 lần là nó tắt cả excel luôn
Code của bạn nếu xóa dòng hay xóa nhóm ô thì thủ tục không chạy. Theo mình:Giờ mới để ý bạn vẫn vướng , máy mình không thấy báo lỗi . Bạn xóa code chỉ để :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$5" Then
Range("B21") = Now()
End If
End Sub
xem còn lỗi không ? Mà dùng code của thày NDU cho tổng quát đi, dùng cho 1 ô, 2 ô hay cả cột vẫn được mà .
private sub worksheet_change (byval target as range)
If Not Intersect(Range("I5"), Target) Is Nothing Then Range("B21") = Now()
end sub
Yêu cầu của bạn ấy như vậy thì mình giúp vậy . Nếu phát sinh thì bạn ấy phải có hồi âm . Mình đoán là bạn ấy chỉ cần kiểm soát một ô liên quan đến dữ liệu ở chỗ khác . Vì ô này không được khóa , và nếu ai sửa thì biết ngay họ sửa vào lúc nào, ví dụ như số TT của biên bản nghiệm thu chẳng hạn ....Code của bạn nếu xóa dòng hay xóa nhóm ô thì thủ tục không chạy. Theo mình:
Mã:private sub worksheet_change (byval target as range) If Not Intersect(Range("I5"), Target) Is Nothing Then Range("B21") = Now() end sub
Họ có thể sửa bằng cách copy một nhóm ô chứa data rồi paste vào vùng chứa ô I5, khi đó cần dùng Intersect. Nhiều khi người hỏi và người trả lời cũng không lường hết được tình huống.Yêu cầu của bạn ấy như vậy thì mình giúp vậy . Nếu phát sinh thì bạn ấy phải có hồi âm . Mình đoán là bạn ấy chỉ cần kiểm soát một ô liên quan đến dữ liệu ở chỗ khác . Vì ô này không được khóa , và nếu ai sửa thì biết ngay họ sửa vào lúc nào, ví dụ như số TT của biên bản nghiệm thu chẳng hạn ....
cảm ơn bạn sửa lại như vậy ok rồiGiờ mới để ý bạn vẫn vướng , máy mình không thấy báo lỗi . Bạn xóa code chỉ để :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$5" Then
Range("B21") = Now()
End If
End Sub
xem còn lỗi không ? Mà dùng code của thày NDU cho tổng quát đi, dùng cho 1 ô, 2 ô hay cả cột vẫn được mà .
Bạn xem file nhé . Mình thêm ô điều xe ( xe số mấy ) tại J5 . Bạn nhập xe số... vào J5 thì số xe và trong lượng xe sẽ cập nhật . Số hóa đơn cập nhật sau cùng nhé ( cộng lũy tiến cũng được cập nhật, chú ý : nếu thao tác thừa là nó tiếp tục công thêm đó ) .Em làm phiền các bác chút nũa nhe với cái phiếu ở trên em có 1 danh sách ở sheet 2 hoặc sheet n chẳng hạn khi em gõ số 1 ở ô B9 thì tự cho kết quả ở ô b9 là 35c-02322(số 2 thì là 35c-02452 v v v v) và tự điền vào ô B23 là 8 khối và tự cộng dồn vào ô F22 VD 2 xe 8 khối thì bắng 16 thêm xe thứ 3(phiếu số 3(ô I5)) 10 khối thì cộng vào được là 26 khối
các bác giúp em nhé em ko biết làm hì hì cảm ơn các bác
Bạn xem file nhé . Mình thêm ô điều xe ( xe số mấy ) tại J5 . Bạn nhập xe số... vào J5 thì số xe và trong lượng xe sẽ cập nhật . Số hóa đơn cập nhật sau cùng nhé ( cộng lũy tiến cũng được cập nhật, chú ý : nếu thao tác thừa là nó tiếp tục công thêm đó ) .