Lấy giá trị ngày tháng trong Sheet để thực hiện trên VBA?

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi undefinite, 18 Tháng bảy 2007.

6,990 lượt xem

  1. undefinite

    undefinite Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    Nơi ở:
    Hanoi
    Mọi người ơi, cho mình hỏi một chút nhé. Mình có một file bao gồm dữ liệu, trong đó có một cột định dạng là dd/mm/yyyy. Khi mình tiến hành lọc bằng AutoFilter để lọc các dữ liệu từ ngày A đến ngày B thì thực hiện được. Để đơn giản hơn trong việc chọn ngày tháng, mình để hai ô, ví dụ là ô B1 có giá trị là ngày bắt đầu (01/01/2007) và ô B2 có giá trị là ngày kết thúc (10/01/2007). Khi nhập xong giá trị tại ô B2, thì Excel sẽ tự động thực hiện lọc theo điều kiện đã đưa ra tại ô B1 và B2 (01/01/2007<=điều kiện<=10/01/2007) thông qua một Macro. Tuy nhiên, khi mình sửa lại macro để lấy giá trị từ ô B1 và B2, thì mặc dù đã kiểm tra đã lấy dữ liệu từ ô B1; B2 nhưng kết quả lại là không có row nào đáp ứng được điều kiện đã đưa ra
    Đây là code của mình

    Sub Macro1()
    Range("B1").Select
    NgayBD=ActiveCell.Value
    Range("B2").Select
    NgayKT=ActiveCell.Value
    Range("A3").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:=">=NgayBD", Operator:=xlAnd _
    , Criteria2:="<=NgayKT"
    End Sub


    Cho mình hỏi là đoạn code này bị sai ở đâu mà khi thực hiện lại không có Row nào đáp ứng được yêu cầu của mình vậy. Hãy giúp mình với!
     
    Last edited: 18 Tháng bảy 2007
    #1
  2. SA_DQ

    SA_DQ Thành viên thân thiết

    Bài viết:
    432
    Đã được thích:
    37
    Nơi ở:
    HCM city
    Hình như nó lầ vầy:

    Ngày tháng này phải theo định dạng cũa bọn mẽo chứ không thể theo hệ Pháp được! (đáng tiếc!)
    Theo mình bạn nên khai báo biến một cách mà người ta hay gọi là: 'tường minh'
     
    #2
  3. undefinite

    undefinite Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    Nơi ở:
    Hanoi
    Cám ơn bạn rất nhiều. Mình đã thực hiện được rồi. Nhưng định dạng ngày vẫn bị sai. Trong ví dụ trên, thực hiện theo code của bạn, thì nó lọc một lèo từ ngày 01/01/07 đến tận ngày 01/10/07. Dù sao cũng cám ơn bạn rất nhiều
     
    Last edited: 18 Tháng bảy 2007
    #3
  4. SA_DQ

    SA_DQ Thành viên thân thiết

    Bài viết:
    432
    Đã được thích:
    37
    Nơi ở:
    HCM city
    Đưa bạn ví dụ mình đã làm

    Bạn hãy xem VD như thế này, & phát biểu sau đó:
    :dance2:
    /)/hờ Mod /Smod nào ngang qua đây xóa dùm bài trên của mình!
     

    Các file đính kèm:

    #4
  5. darkmoon

    darkmoon Tiền và tiền $$$

    Bài viết:
    404
    Đã được thích:
    8
    Nơi ở:
    HCM
    Lâu quá mới thấy pác SA_DQ ghé diễn đàn:bigok:. Tưởng pác quên chúng em roài chứ:freddy:

    Bạn thêm đoạn code màu đỏ xem thế nào.

     
    #5
  6. undefinite

    undefinite Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    Nơi ở:
    Hanoi
    Hi hi, tớ đã tải về VD của bạn, và sau đó thực hiện Macro mà bạn viết => Kết quả là không có Row nào phù hợp với điều kiện đưa ra. Tại vì NgayKT nhận giá trị là 03/17/2007
     
    #6
  7. undefinite

    undefinite Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    Nơi ở:
    Hanoi
    Option Explicit
    Sub Auto_Filter()
    Dim NgayBD, NgayKT
    Range("D1:D2").NumberFormat = "General"
    NgayBD = Range("D1").Value
    NgayKT = Range("D1").Offset(1).Value ' "D2"
    Range("A1:B12").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:=">=" & NgayBD, Operator:=xlAnd _
    , Criteria2:="<=" & NgayKT
    Range("D1:D2").NumberFormat = "dd/mm/yyyy"
    End Sub
    Tớ xin phép bổ sung thêm dòng lệnh màu đỏ trả lại định dạng như ban đầu để người sử dụng biết được là lọc từ ngày nào đến ngày nào. Rất cám ơn bạn Darkmoon.
     
    #7
  8. tranxuanthien

    tranxuanthien Thành viên hoạt động

    Bài viết:
    99
    Đã được thích:
    0
    Nơi ở:
    Tam Ky
    Các bác chú ý: với kiểu dữ liệu ngày, khi khai báo phải rõ ràng Dim XXX as Date và tại Regional and Language của Control Panel phải khai báo định dạng giống như sử dụng trong bảng tính thì VBA mới hiểu được
     
    #8

Chia sẻ trang này