Каждая функция привнося выражение к определенному тип данных.
Синтаксис
CBool(
выражение
)
CByte(
выражение
)
CCur(
выражение
)
CDate(
выражение
)
CDbl(
выражение
)
CDec(
выражение
)
CInt(
выражение
)
CLng(
выражение
)
CSng(
выражение
)
CStr(
выражение
)
CVar(
выражение
)
Обязательный аргумент выражениеаргумент — это любое строковое выражение или числовое выражение.
Возвращаемые типы
Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:
Функция |
Тип возвращаемого значения |
Диапазон аргумента |
CBool |
Boolean |
Любое допустимое строковое или числовое выражение. |
CByte |
Byte |
От 0 до 255. |
CCur |
Currency |
От -922 337 203 685 477,5808 до 922 337 203 685 477,5807. |
CDate |
Date |
Любое допустимое выражение даты. |
CDbl |
Double |
От -1,79769313486231E308 до |
CDec |
Decimal |
+/-79 228 162 514 264 337 593 543 950 335 для чисел без дробной части. Для чисел с 28 десятичными знаками допустимый диапазон составляет |
CInt |
Integer |
От -32 768 до 32 767, дробная часть округляется. |
CLng |
Long |
От -2 147 483 648 до 2 147 483 647, дробная часть округляется. |
CSng |
Single |
От -3,402823E38 до -1,401298E-45 для отрицательных значений и от 1,401298E-45 до 3,402823E38 для положительных. |
CStr |
String |
Результат, возвращаемый функцией CStr, зависит от аргумента выражение. |
CVar |
Variant |
Тот же диапазон, что и для числов Double. Такой же диапазон, как и для строк для не числов. |
Замечания
Если передаваемое функции выражение находится за пределами диапазона типа данных, в который оно преобразуется, возникает ошибка.
Как правило, функции преобразования типов используются в тексте программ для того, чтобы указать, что результатом той или иной операции должны стать данные определенного типа, а не типа, заданного по умолчанию. Например, с помощью функции CCur можно принудительно перейти к вычислениям в денежном формате в тех случаях, в которых обычно используются действия с числами с обычной точностью, двойной точностью или с целыми числами.
Функции преобразования типа данных следует использовать вместо функции Val для преобразования типов данных в приложениях, поддерживающих различные региональные стандарты. Например, при использовании функции CCur десятичные разделители, разделители групп разрядов и параметры денежных единиц распознаются в соответствии с языковыми и региональными параметрами компьютера.
Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа. Например, 0,5 округляется до 0, а 1,5 — до 2. В отличие от функций CInt и CLng, в функциях Fix и Int дробная часть не округляется, а отбрасывается. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.
Для определения возможности преобразования даты в дату или время используется функция IsDate. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат. При преобразовании числа в дату преобразуется целая часть числа. Дробная часть преобразуется во время суток, начиная с полуночи.
CDate распознает форматы даты в соответствии с языковые стандарты системным параметром. Правильный порядок дат, месяца и года может быть определен не в том формате, который не является распознаемой датой. Кроме того, длинный формат даты не распознается, если он также содержит строку дней недели.
Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic. Синтаксис функции CVDate идентичен синтаксису функции CDate, однако функция CVDate возвращает не результат типа Date, а результат типа Variant с подтипом Date. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает. Того же результата можно добиться, преобразовав выражение в тип Date и присвоив это значение переменной типа Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.
Примечание: Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.
Примеры запросов
|
|
SELECT SalePrice,FinalPrice,CBool(SalePrice>FinalPrice) AS Expr1 FROM productSales; |
Возвращает значения «ЦенаПродажи», «ПоследняяЦена» и оценивает, превышает ли Цена конечная цена. Возвращает «-1», если истина, и «0», если ложь. |
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле «Количество» в формат «Количество» и отображает в столбце Expr1 значение «ProductID», преобразует значения в поле «Количество» в формат «Валюта» и отображает в столбце Expr1. |
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения поля DateofSale в формат Date и отображает значения в столбце Expr1. |
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в формат Double и отображает значения в столбце Expr1. |
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в формат Integer и отображает значения в столбце Expr1. |
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в формат Long и отображает в столбце Expr1. |
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле «Скидка» в single format и отображает в столбце «Expr1». |
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в строковом формате и отображает значения в столбце Expr1. |
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле «Скидка» в значение Double для числных значений и String для не числных значений. |
Примеры VBA
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
Функция CBool
Совет: В Access 2010 и более поздних версиях есть построитель выражений с поддержкой IntelliSense, который помогает создавать выражения.
В этом примере функция CBool используется для преобразования выражения в тип Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True; в противном случае она возвращает значение False.
Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.
Функция CByte
В этом примере функция CByte используется для преобразования выражения в тип Byte.
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
Функция CCur
В этом примере функция CCur используется для преобразования выражения в тип Currency.
Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2)
' Convert result of MyDouble * 2 (1086.429176) to a
' Currency (1086.4292).
Функция CDate
В этом примере функция CDate используется для преобразования выражения в тип Date. Как правило, не рекомендуется определять дату и время в виде строк (как показано в этом примере). Вместо этого пользуйтесь литералами даты и времени, например #2/12/1969# и #4:45:23 PM#.
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969"
' Convert to Date data type.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM"
' Convert to Date data type.
MyShortTime = CDate(MyTime)
Функция CDbl
В этом примере функция CDbl используется для преобразования выражения в тип Double.
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)
Функция CDec
В этом примере функция CDec используется для преобразования выражения в тип Decimal.
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.
Функция CInt
В этом примере функция CInt используется для преобразования выражения в тип Integer.
Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.
Функция CLng
В этом примере функция CLng используется для преобразования выражения в тип Long.
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)
' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)
' MyLong2 contains 25428.
Функция CSng
В этом примере функция CSng используется для преобразования выражения в тип Single.
Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2)
' MySingle2 contains 75.34216.
Функция CStr
В этом примере функция CStr используется для преобразования выражения в тип String.
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".
Функция CVar
В этом примере функция CVar используется для преобразования выражения в тип Variant.
Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000.
Excel VBA CDate Function
Have you heard of the function or command by which we can convert anything into date and time? Yes, along with Date function we have CDate function in VBA which does so. CDate is the function of excel but this can also be done in VBA as well. CDate converts anything but into standard Date format. This can be used for converting time as well along with Date.
Syntax of CDate is the easiest syntax we have ever seen. CDate only considers expression such as Date and time in any format as input. Below is the syntax of it.
We just need to feed any number, date or time in any format that we have and CDate will automatically convert that into standard Date and Time format.
How to Use Excel VBA CDate Function?
We will learn how to use a VBA CDate function with a few examples in Excel.
You can download this VBA CDate Excel Template here – VBA CDate Excel Template
VBA CDate – Example #1
We will take a simple example first. In this example, we will try to convert one simple type of date into a standard format which is actually inbuilt in excel by default.
Follow the below steps to use CDate function in VBA.
Step 1: Open a Module which is available in the Insert menu tab as shown below.
Step 2: Now write the subprocedure of VBA CDate in any name as shown below. But it is recommended to write the name of subprocedure in the name of performed work mainly.
Code:
Sub VBA_CDate() End Sub
Step 3: Now declare a variable let’s say it is Input1 as String. Considering the data type as String because we will be quoting the input in the combination of numbers and alphabets.
Code:
Sub VBA_CDate() Dim Input1 As String End Sub
Step 4: Now we will declare another variable by which we will see the output. And this variable will be used to see the dates.
Code:
Sub VBA_CDate() Dim Input1 As String Dim FormatDate As Date End Sub
Step 5: Now choose any date which is in the combination of numbers and alphabets and quote that in inverted commas as shown below.
Code:
Sub VBA_CDate() Dim Input1 As String Dim FormatDate As Date Input1 = "Sept 1, 2019" End Sub
Step 6: To convert the input date into a standard format we will use CDate function as shown below with the FormatDate variable which was declared above. And use the value stored in the Input1 variable.
Code:
Sub VBA_CDate() Dim Input1 As String Dim FormatDate As Date Input1 = "Sept 1, 2019" FormatDate = CDate(Input1) End Sub
Step 7: And to see the output we will use Msgbox to assign it with FormatDate function of Date.
Code:
Sub VBA_CDate() Dim Input1 As String Dim FormatDate As Date Input1 = "Sept 1, 2019" FormatDate = CDate(Input1) MsgBox FormatDate End Sub
Step 8: Now run the code by pressing the F5 key or by clicking on Play Button. We will get the date which we have chosen as 1 Sept 2019, is now got converted into standard date format as 9/1/2019 as shown below.
We can try different multiple combinations of dates that really exist and see what kind of standard output we get.
VBA CDate – Example #2
In this example, we will see different types of date and time which exist and what kind of output we would get while using VBA CDate. For this follow the below steps:
Step 1: Write the subprocedure of VBA CDate as shown below.
Code:
Sub VBA_CDate2() End Sub
Step 2: Now we will declare 3-4 different variables of Data type Date. Let’s declare the first variable as Date1 and give it the data type as Date as shown below.
Code:
Sub VBA_CDate2() Dim Date1 As Date End Sub
Step 3: Now assign any number which we want to convert it in Date format. We have chosen a random number as 12345.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" End Sub
Step 4: In a similar way define another variable Date2 as date type Date as shown below.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" Dim Date2 As Date End Sub
Step 5: Now again in the variable Date2, consider putting a date in any format. Here we have kept 12/3/45 as our date input.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" Dim Date2 As Date Date2 = "12/3/45" End Sub
Step 6: Further, we will again declare another variable Date3 as Date.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" Dim Date2 As Date Date2 = "12/3/45" Dim Date3 As Date End Sub
Step 7: Here we will assign the value of any time as shown below as 12:10 PM in 24 hours format.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" Dim Date2 As Date Date2 = "12/3/45" Dim Date3 As Date Date3 = "00:10:00" End Sub
Step 8: Now lastly we will declare another Date4 variable as Date.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" Dim Date2 As Date Date2 = "12/3/45" Dim Date3 As Date Date3 = "00:10:00" Dim Date4 As Date End Sub
Step 9: And here we will give some decimal value like 0.123 or you can choose any value as required.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" Dim Date2 As Date Date2 = "12/3/45" Dim Date3 As Date Date3 = "00:10:00" Dim Date4 As Date Date4 = "0.123" End Sub
Now there are 2 ways to see the output of the values stored in various variables declared above. MsgBox will only allow us to see all values simultaneously but by using Debug.print will allow us to see all the variables output in one go.
Step 10: So, here it is better if we choose Debug.Print as shown below. And in the same line assign all the variable starting from Date 1 to Date 4.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = "12345" Dim Date2 As Date Date2 = "12/3/45" Dim Date3 As Date Date3 = "00:10:00" Dim Date4 As Date Date4 = "0.123" Debug.Print Date1, Date2, Date3, Date4 End Sub
Step 11: And to see the output, we will use immediate window as shown below. To access this, go to the View menu tab and select Immediate Window as shown below.
Step 12: Now run the code by pressing the F5 key or by clicking on Play Button. We will see, date data type has given us the output but it is not in standard data format.
Step 13: To get the standard data out, we will use CDate here as well. So, we will assign CDate for each date and time which we used for different variables as shown below.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = CDate("12345") Dim Date2 As Date Date2 = CDate("12/3/45") Dim Date3 As Date Date3 = CDate("00:10:00") Dim Date4 As Date Date4 = CDate("0.123") Debug.Print Date1, Date2, Date3, Date4 End Sub
Step 14: Now run the code by pressing the F5 key or by clicking on the Play Button.
We will see the output of both Date and CDate are the same but there is basic common difference between both of them. And that is, CDate can convert any type of numbers into standard date format.
Step 15: Let’s try any text or alphabet with CDate and see what we get. So we have entered some random text as abc in variable Date4.
Code:
Sub VBA_CDate2() Dim Date1 As Date Date1 = CDate("12345") Dim Date2 As Date Date2 = CDate("12/3/45") Dim Date3 As Date Date3 = CDate("00:10:00") Dim Date4 As Date Date4 = CDate("abc") Debug.Print Date1, Date2, Date3, Date4 End Sub
Step 16: Now run the code again. We will get a message box with an error message as Type Mismatch. This is because CDate cannot read and convert text into a standard date and time format.
Pros & Cons of Excel VBA CDate Function
- This can convert any date or time to standard format as required.
- VBA CDate interpret any number as Date value and later convert that into a standard format.
- It cannot interpret and convert the text into date format.
Things to Remember
- CDate can only consider numbers as input but that number can be in any format.
- The text value cannot be converted.
- If we feed a time or date which is already in the standard format then it will again return the same value as output.
- Date and CDate function work in the same manner. Whereas by CDate we can convert both time and date.
Recommended Articles
This is a guide to VBA CDate Function. Here we discuss how to use CDate Function in Excel using VBA Code along with practical examples and downloadable excel template. You can also go through our other suggested articles –
- VBA Date Format
- Excel DATEDIF Function
- VBA DateSerial
- VBA DateDiff
VBA CDate Function in Excel is categorized as a Data Type Conversion function. It is a built-in function in Excel VBA. This VBA CDate function converts an expression to a Date data type.
This function use in either procedure or function in a VBA editor window in Excel. We can use this VBA CDate Function in any number of times in any number of procedures or functions. In the following section you learn many topics. Like what is the syntax and parameters of the CDate function, where we can use this VBA CDate Function and it’s real-time examples.
Table of Contents:
- Overview
- Syntax of VBA CDate Function
- Parameters or Arguments
- Where we can apply or use VBA CDate Function?
- Example 1: Convert a String(Sep 21, 2018) to Date Data Type
- Example 2: Convert a Value(21/12 12:12) to Date Data Type
- Example 3: Convert a Value(12:21) to Date Data Type
- Example 4: Convert a Value(43214) to Date Data Type
- Example 5: Convert a String(Sunday) to Date Data Type(Returns an Error)
- Instructions to Run VBA Macro Code
- Other Useful Resources
The syntax of the CDate Function in VBA is
CDate(Expression)
The CDate function returns a date data type value.
Parameters or Arguments:
The CDate function has one argument in Excel VBA.
where
Expression:It is a mandatory argument. An expression argument represents a Date or Time value. It is used to convert the string or numeric value to a date value.
Where we can apply or use VBA CDate Function?
We can use this CDate Function in VBA MS Office 365, MS Excel 2016, MS Excel 2013, 2011, Excel 2010, Excel 2007, Excel 2003, Excel 2016 for Mac, Excel 2011 for Mac, Excel Online, Excel for iPhone, Excel for iPad, Excel for Android tablets and Excel for Android Mobiles.
Example 1: Convert a String(Sep 21, 2018) to Date Data Type
Here is a simple example of the VBA CDate function. This below example converts an expression(Sep 21, 2018) to Date data type.
'Convert a String(Sep 21, 2018) to Date Data Type Sub VBA_CDate_Function_Ex1() 'Variable declaration Dim sValue As String Dim dResult As Date sValue = "Sep 21, 2018" dResult = CDate(sValue) MsgBox "String to Date Data Type : " & dResult, vbInformation, "VBA CDate Function" End Sub
Output: Here is the screen shot of the first example output.
Example 2: Convert a Value(21/12 12:12) to Date Data Type
Here is a simple example of the VBA CDate function. This below example converts an expression(21/12 12:12) to Date data type.
'Convert a Value(21/12 12:12) to Date Data Type Sub VBA_CDate_Function_Ex2() 'Variable declaration Dim sValue As String Dim dResult As Date sValue = "21/12 12:12" dResult = CDate(sValue) MsgBox "String to Date Data Type : " & dResult, vbInformation, "VBA CDate Function" End Sub
Output: Here is the screen shot of the second example output.
Example 3: Convert a Value(12:21) to Date Data Type
Here is a simple example of the VBA CDate function. This below example converts an expression(12:21) to Date data type.
'Convert a Value(12:21) to Date Data Type Sub VBA_CDate_Function_Ex3() 'Variable declaration Dim sValue As String Dim dResult As Date sValue = "12:21" dResult = CDate(sValue) MsgBox "String to Date Data Type : " & dResult, vbInformation, "VBA CDate Function" End Sub
Output: Here is the screen shot of the third example output.
Example 4: Convert a Value(43214) to Date Data Type
Here is a simple example of the VBA CDate function. This below example converts an expression(43214) to Date data type.
'Convert a Value(43214) to Date Data Type Sub VBA_CDate_Function_Ex4() 'Variable declaration Dim sValue As String Dim dResult As Date sValue = 43214 dResult = CDate(sValue) MsgBox "String to Date Data Type : " & dResult, vbInformation, "VBA CDate Function" End Sub
Output: Here is the screen shot of the fourth example output.
Example 5: Convert a String(Sunday) to Date Data Type(Returns an Error)
Here is a simple example of the VBA CDate function. This below example converts an expression(Sunday) to Date data type.
'Convert a String(Sunday) to Date Data Type(Returns an Error) Sub VBA_CDate_Function_Ex5() 'Variable declaration Dim sValue As Integer Dim dResult As Date sValue = "sunday" dResult = CDate(sValue) MsgBox "String to Date Data Type : " & dResult, vbInformation, "VBA CDate Function" End Sub
Output: Here is the screen shot of the fifth example output.
Instructions to Run VBA Macro Code or Procedure:
You can refer the following link for the step by step instructions.
Instructions to run VBA Macro Code
Other Useful Resources:
Click on the following links of the useful resources. These helps to learn and gain more knowledge.
VBA Tutorial VBA Functions List VBA Arrays in Excel Blog
VBA Editor Keyboard Shortcut Keys List VBA Interview Questions & Answers
Home / VBA / Top VBA Functions / VBA CDATE Function (Syntax + Example)
The VBA CDATE function is listed under the data type conversion category of VBA functions. When you use it in a VBA code, it converts an expression into the date data type. In simple words, with date data type it can hold a value that includes date and time as per VBA’s valid date and time system.
CDate(Expression)
Arguments
- Expression: The value which you want to convert to the date data type.
Example
To practically understand how to use the VBA CDATE function, you need to go through the below example where we have written a vba code by using it:
Sub example_CDATE()
Range("B1").Value = CDate(Range("A1"))
End Sub
In the above example, we have used the value from cell A1 where we have a number (8.5694) and then we have used the CDATE function to convert that value into date data type and it has returned 7/8/2018 0:00 in the result.
Notes
- It can interpret text representations of dates and times that can be recognized by VBA as Excel date and time format.
- A value that can’t be converted as date and time, VBA returns the run-time 13 error.
This Excel tutorial explains how to use the Excel CDATE function with syntax and examples.
Description
The Microsoft Excel CDATE function converts a value to a date.
The CDATE function is a built-in function in Excel that is categorized as a Data Type Conversion Function. It can be used as a VBA function (VBA) in Excel. As a VBA function, you can use this function in macro code that is entered through the Microsoft Visual Basic Editor.
Syntax
The syntax for the CDATE function in Microsoft Excel is:
CDate( expression )
Parameters or Arguments
- expression
- The value to convert to a date.
Returns
The CDATE function returns a date value.
Applies To
- Excel for Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 for Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000
Type of Function
- VBA function (VBA)
Example (as VBA Function)
The CDATE function can only be used in VBA code in Microsoft Excel.
Let’s look at some Excel CDATE function examples and explore how to use the CDATE function in Excel VBA code:
Dim LstrDate As String Dim LDate As Date LstrDate = "Apr 6, 2003" LDate = CDate(LstrDate)
In this example, the variable LDate would now contain the value 4/6/2003.