VBA IsDate - Cách sử dụng Hàm IsDate trong Excel VBA?

Hàm IsDate trong Excel VBA

IsDate là hàm VBA kiểm tra xem giá trị đã cho có phải là ngày hay không. Nếu giá trị được cung cấp hoặc giá trị tham chiếu phạm vi là giá trị ngày thì chúng ta sẽ nhận được kết quả là “TRUE”, nếu giá trị không phải là giá trị ngày thì chúng ta sẽ nhận được kết quả là “FALSE”. Vì vậy, kết quả là giá trị BOOLEAN tức là TRUE hoặc FALSE.

Dưới đây là cú pháp của hàm IsDate.

Biểu thức không là gì ngoài giá trị mà chúng tôi đang cố gắng kiểm tra, cho dù đó có phải là ngày tháng hay không.

Làm thế nào để sử dụng VBA IsDate Function?

Chúng tôi sẽ kiểm tra xem giá trị “5.01.19” có phải là giá trị ngày tháng hay không.

Đối với lần bắt đầu đầu tiên này, thủ tục macro excel.

Mã:

Sub IsDate_Example1 () End Sub

Xác định biến để lưu trữ giá trị ngày tháng và vì giá trị này sẽ là giá trị ngày tháng, hãy chỉ định kiểu dữ liệu là “Ngày tháng”.

Mã:

Sub IsDate_Example1 () Dim MyDate As Date End Sub

Bây giờ, hãy gán giá trị “5.1.19” cho biến “MyDate”.

Mã:

Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" End Sub

Mở hộp thư trong VBA ngay bây giờ.

Mã:

Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox (End Sub

Trong hộp thông báo này, chúng tôi sẽ kiểm tra xem giá trị ngày được cung cấp cho biến “MyDate” có phải là ngày hay không bằng cách sử dụng hàm “IsDate”. Đầu tiên, mở chức năng “IsDate”.

Mã:

Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox IsDate (End Sub

Biểu thức là giá trị mà chúng tôi đang kiểm tra để tìm xem nó có phải là Ngày hay không. Vì chúng tôi đã lưu trữ giá trị cho biến “MyDate”, nên chỉ cung cấp tên biến.

Mã:

Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox IsDate (MyDate) End Sub

Ok, bây giờ hãy chạy mã và xem những gì chúng ta nhận được trong hộp tin nhắn.

Chà !!! Kết quả là TRUE .

Bạn phải tự hỏi làm thế nào nó nhận ra giá trị “5.1.19” là ngày.

Lý do tại sao nó trả về kết quả là TRUE vì khi bạn nhìn vào giá trị đã cho “5.1.19”, nó là dạng ngắn của ngày “05.01.2019”, vì vậy excel đủ sáng để nhận ra nó là ngày, vì vậy kết quả là TRUE.

Bây giờ, điều khó khăn ở đây là, với cùng một giá trị, những gì chúng tôi sẽ làm là chúng tôi sẽ thay đổi hình thức ngắn của năm từ 19 sang 2019.

Mã:

Sub IsDate_Example1 () Dim MyDate As String MyDate = "5.1.2019" MsgBox IsDate (MyDate) End Sub

Bây giờ hãy chạy mã và xem kết quả.

Lần này nó đã trả về kết quả là FALSE vì phần "ngày và tháng" của ngày ở dạng ngắn, nhưng phần năm ở dạng đầy đủ là "YYYY", vì vậy ISDATE không thể nhận ra nó có ngày, vì vậy kết quả là sai.

Bây giờ, hãy xem đoạn mã dưới đây.

Mã:

Sub IsDate_Example1 () Dim MyDate As String MyDate = "05.01.2019" MsgBox IsDate (MyDate) End Sub

Tôi đã đề cập đến định dạng ngày và tháng đầy đủ bằng cách sử dụng 0. Hãy chạy mã và xem kết quả của hàm IsDate.

Lần này chúng tôi cũng nhận được kết quả là FALSE .

Bây giờ thay đổi mã như sau.

Mã:

Sub IsDate_Example1 () Dim MyDate As String MyDate = "05/01/2019" MsgBox IsDate (MyDate) End Sub

Thay vì dấu chấm (.) Làm dấu phân tách, chúng tôi đã nhập dấu gạch chéo lên (/) làm dấu phân tách. Bây giờ hãy chạy mã và xem kết quả.

Lần này chúng tôi nhận được kết quả là TRUE .

Đây là lý do tôi đã nói với bạn ở đầu bài viết rằng “Ngày” là một điều nhạy cảm.

Bây giờ những gì tôi sẽ làm là tôi sẽ hợp nhất ngày và giờ với nhau.

Mã:

Sub IsDate_Example1 () Dim MyDate As String MyDate = "05/01/2019 15:26:24" MsgBox IsDate (MyDate) End Sub

Những gì tôi đã thêm ở trên là phần thời gian “15:26:24” trước ngày. Bây giờ hãy chạy mã và xem kết quả.

Lần này, chúng tôi nhận được kết quả là TRUE vì NGÀY & GIỜ trong excel là những thứ giống nhau và được lưu trữ dưới dạng số sê-ri. Toàn bộ số đại diện cho phần ngày và các vị trí thập phân đại diện cho phần thời gian.

Những điều cần nhớ ở đây

  • IsDate trả về kết quả kiểu Boolean, tức là TRUE hoặc FALSE.
  • IsDate chỉ khả dụng dưới dạng một hàm VBA.
  • Chỉ những ngày được định dạng hợp lệ mới được coi là ngày tháng, nếu không nó sẽ được coi là giá trị văn bản và trả về kết quả là FALSE.

thú vị bài viết...