Video: Mengenal Tipe Data VBA Excel 2024
Fungsi IsDate VBA seharusnya memberi tahu Anda apakah string teks dapat ditafsirkan sebagai tanggal. Misalnya, semua ungkapan berikut mengevaluasi ke True:
IsDate ("5/25/2015") IsDate ("16 Januari") IsDate ("12-1") IsDate ("12/1/15") IsDate ("2/30") IsDate ("30/2")
Dalam dua contoh terakhir, perhatikan bahwa IsDate tidak pilih-pilih tentang urutan hari dan bulan. Kedua senar ini bisa diartikan sebagai tanggal, jadi IsDate mengembalikan True (terlepas dari pengaturan format tanggal sistem Anda).
Berikut adalah beberapa informasi dari artikel Microsoft Support:
Tanggal fungsi VBA IsDate, Format, CDate, dan CVDate menggunakan fungsi yang terdapat pada OLE Automation (OleAut32 dll). Fungsi ini mencari semua format tanggal yang mungkin dengan memberi tokenizing masing-masing nilai yang dipisahkan dalam string yang mewakili tanggal dan mengembalikan nilai Boolean yang menunjukkan apakah input dapat diwakili sebagai Tanggal.
Hal ini penting untuk diingat saat menggunakan fungsi untuk menafsirkan tanggal yang berisi 2 digit tahun. Lokal yang berbeda menggunakan berbagai format tanggal (yaitu, mm / dd / yy, yy / mm / dd, " DD MMM YY " , " YY MMM DD " , dan seterusnya) dan karena itu fungsinya mencoba digit di semua posisi sampai fungsi tersebut menemukan tanggal yang valid atau menghabiskan semua kemungkinan.
Hanya karena IsDate mengenali sebuah string sebagai sebuah tanggal tidak berarti bahwa string tersebut dapat dengan andal dikonversi menjadi sebuah tanggal. Dalam beberapa kasus, hasilnya ambigu. Misalnya, bagaimana dengan ungkapan ini?
IsDate ("29-Feb-01")
29 Februari 2001 bukanlah tanggal yang valid. Namun, ungkapan ini kembali benar karena 1 Februari 1929 (dan 2 Januari 1929) adalah tanggal yang valid. Begitu juga tanggal yang sama di tahun 2029.
Pencarian untuk dokumentasi Isdate muncul kosong. Berdasarkan pengujian, IsDate menerima salah satu dari berikut ini sebagai karakter pemisah: garis miring (/), tanda hubung (-), koma (,), titik (.), Dan spasi.
Oleh karena itu, ungkapan berikut semua kembali Benar:
IsDate ("5 1") IsDate ("30 6") IsDate ("30, 6") IsDate ("1/2")
Tapi maka ada anomali ini: Ungkapan berikut mengembalikan True:
IsDate ("5. 1. 5") IsDate ("5. 1. 05")
Namun, secara tidak jelas, ungkapan ini kembali salah:
Isdate ("5. 1. 2005")
Misalkan Anda membuat UserForm dengan InputBox tempat pengguna memasukkan tanggal. Harus jelas bahwa menggunakan IsDate untuk memvalidasi entri tidak terlalu bisa diandalkan.
Hal menjadi semakin membingungkan saat Anda menyadari bahwa IsDate juga mencakup nilai waktu. (Tidak ada fungsi IsTime yang sesuai.) Jadi, ungkapan berikut semuanya kembali Benar:
IsDate ("4: 45") IsDate ("4 45") IsDate ("4 45") IsDate ("4/45 ") IsDate (" 23: 59 ")
Ungkapan ini kembali Salah:
IsDate (" 4: 60 ") IsDate (" 24. 45 ")
Penting untuk menunjukkan bahwa Isdo tidak Tunjukkan semua quirks ini saat Anda melewati argumen Range. Misalnya:
IsDate (Range ("A1"))
Tampaknya IsDate sangat andal dalam mengidentifikasi sel yang berisi tanggal atau waktu. Ini tidak, misalnya, mengidentifikasi sel yang berisi 5. 1 sebagai tanggal. Jika kode Anda perlu menentukan apakah sebuah string dapat diartikan sebagai tanggal, solusi terbaik adalah memasukkan string itu ke dalam sel, kemudian menulis kode untuk memeriksa isi sel.