Xin code tự động nhập thời gian thực (1 người xem)

Liên hệ QC

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

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
 
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#post276629
Tìm hiểu thêm về sự kiện Change, Format, hàm Time (thay cho Now): [B21] = Format(Time, "hh:mm")
 
Upvote 0

File đính kèm

Upvote 0
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.
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!
 

File đính kèm

Upvote 0
nhưng sao no báo lối debug :With Range("B21") nhỉ thank hai bác nhé
 
Upvote 0
nhưng sao no báo lối debug :With Range("B21") nhỉ thank hai bác nhé
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    22.4 KB · Đọc: 8
  • Untitled1.jpg
    Untitled1.jpg
    17.7 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
ý là em lấy đc code rồi nhưng nhập chỉ 1 lần và báo lỗi như hình em chụp nhâp lại lần nũa là nó tắt cả excel luôn
 
Upvote 0
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!

Code của bạn:
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
Câu lệnh màu đỏ là... trật lất. Đúng ra phải là:
Mã:
For Each [COLOR=#ff0000]Cel[/COLOR] in Target
Với biến Cel được khai báo kiểu Range
Ngoài ra, việc dùng ActiveCell là sai... nghiêm trọng
 
Lần chỉnh sửa cuối:
Upvote 0
Code của bạn:
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
Câu lệnh màu đỏ là... trật lất. Đúng ra phải là:
Mã:
For Each [COLOR=#ff0000]Cel[/COLOR] in Target
Với biến Cel được khai báo kiểu Range
Ngoài ra, việc dùng ActiveCell là sai... nghiêm trọng
Mong thầy chỉ bảo thêm cho em ạ!
 
Upvote 0
Mong thầy chỉ bảo thêm cho em ạ!
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:
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
Lưu ý mấy chỗ màu đỏ và tự suy nghĩ nhé
 
Upvote 0
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:
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
Lưu ý mấy chỗ màu đỏ và tự suy nghĩ nhé
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!
 
Upvote 0
nhưng sao no báo lối debug :With Range("B21") nhỉ thank hai bác 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à .
 
Upvote 0
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
 
Upvote 0
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
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 đề .
 
Upvote 0
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à .
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
 
Upvote 0
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
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 ....
 
Lần chỉnh sửa cuối:
Upvote 0
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 ....
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.
 
Upvote 0
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à .
cảm ơn bạn sửa lại như vậy ok rồi
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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
 
Lần chỉnh sửa cuối:
Upvote 0
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 đó ) .
 

File đính kèm

Upvote 0
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 đó ) .

cảm ơn bạn nhìu đúng là cái mình cần
 
Upvote 0

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

Back
Top Bottom