VBA CInt Function – Convert to Integer

Written by

Editorial Team

Reviewed by

Steve Rynearson

Last updated on July 19, 2021

This tutorial will demonstrate how to use the CInt VBA function to convert an expression to the integer data type.

CInt Function

VBA CInt Convert Expression to Integer

The VBA CInt function can be used to convert expressions to integer data type inside VBA code. The resulting number is rounded to become an integer.

Sub CIntExample_1()
MsgBox CInt(12.34)  'Result is: 12
MsgBox CInt(12.345) 'Result is: 12
MsgBox CInt(-124)   'Result is: -124
MsgBox CInt(-12.34) 'Result is: -12
End Sub

VBA CInt Rounding

The VBA CInt function will round the decimal part of a number type or a number like expression. However, it does not round correctly in all cases. When the decimal part is 0.5 then VBA CInt function returns the closest even integer.

Sub CIntExample_2()
MsgBox CInt(0.34)
'Result is:    0

MsgBox CInt(0.99)
'Result is:    1

MsgBox CInt(-124.95)
'Result is:    -125

MsgBox CInt(1.5)
'Result is:    2

MsgBox CInt(2.5)
'Result is:    2
End Sub

We can add a decimal number relatively small to our expected decimal value to change the behavior of VBA Cint function to the expected.

Sub CIntExample_3()
MsgBox CInt(2.5)
'Result is:    2
MsgBox CInt(2.5 + 0.001)
'Result is:    3

MsgBox CInt(14.5)
'Result is:   14
MsgBox CInt(14.5 + 0.001)
'Result is:   15
End Sub

VBA CInt Converting Strings to Integers

The VBA CInt function can be used to convert strings to integers if the characters in the string have a meaning as numbers.

Sub CIntExample_4()
Dim StrEx As String
StrEx = "112"
MsgBox CInt(StrEx)
'Result is: 112

StrEx = "112.3"
MsgBox CInt(StrEx)
'Result is: 112   --> 112.3 is rounded

StrEx = "11,2"
MsgBox CInt(StrEx)
'Result is: 112   -->  , is ignored

StrEx = "$112"
MsgBox CInt(StrEx)
'Result is: 112   -->  $ is ignored
End Sub

VBA CInt Run-Time Error 13 Type Mismatch

Using VBA Cint function with strings that contain non-numerical characters or characters that don’t have meaning in numerical context will result in a Run-Time error ’13’: Type mismatch.

Sub CIntExample_5()
'The code below will result in an ERROR message
'CInt can’t handle non numerical characters
Dim StrEx As String
StrEx = "Ab13"
MsgBox CInt(StrEx)
End Sub

VBA CInt Run-Time Error 6 Overflow

Using VBA Cint function with strings that result in a value smaller or bigger than the expected integer will result in a Run-Time error ’6’: Overflow. Integer data type in excel has an expected value of -32768 to 32767.

Sub CIntExample_6()
'The code below will result in an ERROR message
'CInt cant handle non numerical characters
Dim StrEx As String
StrEx = "1234567"
MsgBox CInt(StrEx)
End Sub

VBA CInt Regional Settings

VBA CInt function has different behavior converting strings with comma or dot.  It uses the Regional Settings of the operating system for decimal separator and digit separator.

Sub CIntExample_7()
Dim StrEx As String
StrEx = "1,9"
MsgBox CInt(StrEx)
‘If Regional settings have , as a grouping separator then 
'Result is: 19
‘If Regional settings have , as a decimal separator then 
'Result is: 2 (2 because 1.9 gets rounded)

StrEx = "1.9"
MsgBox CInt(StrEx)
‘If Regional settings have . as a grouping separator then 
'Result is: 19
‘If Regional settings have . as a decimal separator then 
'Result is: 2 (2 because 1.9 gets rounded)
End Sub

VBA CInt Converting Booleans to Integers

VBA Cint function can convert boolean variables to integers. If the evaluated expression is true the resulting integer is -1 and if the evaluated expression is false, the resulting integer is 0.

Sub CIntExample_8()
Dim BoolEx As Boolean
BoolEx = True
MsgBox CInt(BoolEx)  'Result is: -1
MsgBox CInt(2 = 2)   'Result is: -1

BoolEx = False
MsgBox CInt(BoolEx)  'Result is: 0
MsgBox CInt(1 = 2)   'Result is: 0
End Sub

VBA CInt Converting Dates to Integers

VBA Cint function can convert a date variable to an integer. The returned value is the internal number used by excel for date storage rounded. If that number is outside of the expected integer limits for VBA then we get a  Run-Time error ’6’: Overflow.

Sub CIntExample_9()
Dim DateEx As Date
DateEx = #2/3/1940#
MsgBox CInt(DateEx)
'Result is: 14644
DateEx = #8/7/1964#
MsgBox CInt(DateEx)
'Result is: 23596
End Sub

 

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples