Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Đăng ký học Excel và phân tích số liệu cùng GPE tháng 12 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Hàm today

Thảo luận trong 'Làm việc với ngày tháng và thời gian' bắt đầu bởi ali3340tc, 28 Tháng tám 2009.

  1. ali3340tc

    ali3340tc Thành viên chính thức

    Các bác pro cho tôi hỏi:

    Khi tôi dùng hàm today() để lấy ngày tháng hiện tại thì OK đến hôm sau mở fỉle đó ra thì nó lại tự động update ngày. Bây giờ tôi muốn khi mở file ra thì nó ko tự động update ngày thì phải dùng hàm gì?
    Ví dụ:
    ở cột A là số thứ tự, cột B là ngày. Khi đánh số thứ tự vào cột A thì cột B tự động nhảy ngày. Đến hôm sau, khi đánh số thứ tự tiếp theo thì cột B sẽ nhảy ngày tháng hiện tại. còn các thứ tự trước thì vẫn theo những ngày trước.
     
  2. duongdv

    duongdv Thành viên danh dự

    Thì bạn không dùng hàm Today() nữa gõ trực tiệp bằng tay đi. Đôi khi hiểu được ý tưởng của tác giả còn khó hơn cả làm bài toán đó.
    Bạn gửi file lên!
     
  3. yeudoi

    yeudoi Moderator Staff Member

    Cái này thì bạn copy lại và dán giá trị là được chứ gì. Còn không chuyển sang VBA
     
  4. huuthang_bd

    huuthang_bd Thay thái độ đổi cuộc đời

    Thay vì gõ
    Mã:
    =Month(Today())
    Bạn gõ như thế này:
    Mã:
    =Month({Ctrl+;})
    {Ctrl+;} là gõ phím Ctrl; nhé
     
  5. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    - Một là gõ bằng tay (dùng tổ hợp phím Ctrl + ;)
    - Hai là dùng code VBA, nó sẽ tự động điền ngày tháng cho bạn
    Bạn thích món nào đây?
     
  6. binhoanh

    binhoanh Thành viên mới

    Today

    Bạn xem cách mình làm có như ý bạn không?+-+-+-+
     
    Lần chỉnh sửa cuối: 28 Tháng tám 2009
  7. ali3340tc

    ali3340tc Thành viên chính thức


    Không ra kết quả bạn à. Máy báo lỗi
     
  8. ali3340tc

    ali3340tc Thành viên chính thức


    Bạn chỉ cho mình cái code đi
     
  9. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Tạm cái này xem:
    PHP:
    Private Sub Worksheet_Change(ByVal Target As Range)
      If 
    Not Intersect(Range("A1:A100"), TargetIs Nothing Then
        With Target
    .Offset(, 1)
          .
    NumberFormat "dd/mm/yyyy"
          
    .Value Date
        End With
      End 
    If
    End Sub
    Code có tác dụng từ cell A1 đến cell A100 ---> Nếu bạn có yêu cầu khác hãy tự sửa lại
     

    Các file đính kèm:

  10. binhoanh

    binhoanh Thành viên mới

    Trong cột A bạn đánh STT. VD A2 là 1, A3 là 2... B1=date(2009,8,28); B2=A2+$B$1 sau đó copy công thức là được.//**/
     
  11. huuthang_bd

    huuthang_bd Thay thái độ đổi cuộc đời

    Khi gõ phím ; phải giữ phím Ctrl. Nghĩa là bấm giữ phím Ctrl, bấm tiếp phím ;.
     
  12. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Vì bạn đang muốn lấy ngày tháng hiện hành nên không cần phải MONTH gì cả ---> Cứ bấm tổ hợp phím Ctrl + ; là xong!
     
  13. ali3340tc

    ali3340tc Thành viên chính thức


    Tôi vừa thử và OK rồi. Cho tôi hỏi thêm 1 chút về code này: Hiện tại khi đánh số thứ tự ở cột A thì cột B sẽ xuất hiện ngày nhưng nếu xóa số thứ tự ở cột A thì cột B lại không tự xóa. Vậy phải thêm code như thế nào để tự xóa cột B khi xóa số ở cột A
     
  14. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Tạm sửa thành vầy đi:
    PHP:
    Private Sub Worksheet_Change(ByVal Target As Range)
      If 
    Not Intersect(Range("A1:A100"), TargetIs Nothing Then
        With Target
    .Offset(, 1)
          .
    NumberFormat "dd/mm/yyyy"
          
    .Value IIf(Target """"Date)
        
    End With
      End 
    If
    End Sub
    Lưu ý: Code trên chỉ cho bạn nhập từng cell, nếu bạn copy nguyên vùng rồi paste vào cột A thì code sẽ báo lổi... Nếu có nhu cầu copy/paste luôn thì dùng cái này:
    PHP:
    Private Sub Worksheet_Change(ByVal Target As Range)
      
    Dim Clls As Range
      
    If Not Intersect(Range("A1:A100"), TargetIs Nothing Then
        
    For Each Clls In Target
          With Clls
    .Offset(, 1)
            .
    NumberFormat "dd/mm/yyyy"
            
    .Value IIf(Clls """"Date)
          
    End With
        Next
      End 
    If
    End Sub
     
    Lần chỉnh sửa cuối: 28 Tháng tám 2009
  15. Chuotdong

    Chuotdong Thành viên thường trực

    @ndu96081631: mình muốn nếu ô ở cột B đã có dữ liệu rồi, thì khi click vào ô tương ứng ở cột A chương trình VBA không cập nhật thành today() nữa (tức là không làm gì cả)


    Xin lỗi phải hỏi vì mình không biết gì về VBA, chỉ biết dùng thôi.
     
  16. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Thì thêm cái IF vào
    If cột B = rổng thì
    chạy code này
    End If

    Đại khái như sau:
    PHP:
    Private Sub Worksheet_Change(ByVal Target As Range)
      
    Dim Clls As Range
      
    If Not Intersect(Range("A1:A100"), TargetIs Nothing Then
        
    For Each Clls In Target
          With Clls
    .Offset(, 1)
            If .
    Value "" Then
              
    .NumberFormat "dd/mm/yyyy"
              
    .Value Date
            End 
    If
          
    End With
        Next
      End 
    If
    End Sub
     

Chia sẻ trang này