vba data types numeric
Ce didacticiel explique divers types de données numériques et non numériques disponibles dans VBA. Nous en apprendrons également davantage sur les conversions de types de données :
Nous rencontrons quotidiennement de nombreux types de données comme le nom, la date, les factures, le prix d'une marchandise, etc. Toutes ces données appartiennent à un certain type et leurs valeurs ne peuvent pas différer du type qui y est attaché. De même, VBA a de nombreux types de données qui sont utilisées pour effectuer l'action requise.
Dans ce didacticiel, nous allons apprendre les différents types de données utilisés dans VBA et voir comment ceux-ci aideront à organiser notre programme. Nous examinerons également la conversion d'un type de données en un autre type de données.
=> Vérifiez TOUS les didacticiels VBA ici
Ce que vous apprendrez:
- Catégories de types de données
- Conclusion
Catégories de types de données
Le type de données indique à l'ordinateur le type de données qui doit être stocké à l'aide d'une variable. Les types de données sont divisés en 2 catégories, à savoir les types de données numériques et non numériques
Types de données numériques
Ces types sont utilisés pour effectuer des opérations mathématiques telles que l'addition, la soustraction, etc. Exemple, calcul du pourcentage, cours de l'action, frais, factures, âge, etc.
Dans VBA, il existe 7 types de types de données numériques, comme indiqué ci-dessous.
Type de données numériques | |
---|---|
sept | Décimal |
un | Octet |
deux | Entier |
3 | Longue |
4 | Seul |
5 | Double |
6 | Devise |
Examinons brièvement tous les types de données numériques.
# 1) Type de données d'octet
Ce type de données ne nécessite qu'un seul octet de mémoire. Les variables de type de données Byte peuvent stocker des valeurs comprises entre 0 et 255. La valeur d'octet par défaut est 0. Les valeurs négatives et supérieures à 255 ne sont pas autorisées. Si vous tentez d'attribuer des valeurs non valides, une erreur de dépassement de capacité sera renvoyée.
Syntaxe: Dim Vname As Byte
Ici, Vname est un nom de variable et Byte est le type de données de la variable.
Exemple:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
La sortie est donnée ci-dessous
# 2) Type de données entier
Ces types de données sont utilisés pour stocker la valeur entière entière. Cela occupe 2 octets de mémoire. Un entier est l'un des types de données fréquemment utilisés. Ils acceptent à la fois les valeurs positives, les valeurs négatives et zéro également. Ils ont une plage comprise entre -32 768 et 32 767.
Syntaxe: Dim s'enflamme en tant qu'entier
Exemple:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
La sortie est donnée ci-dessous
# 3) Type de données long
Il s'agit d'une alternative à un type de données entier qui stocke également une valeur entière entière. Cependant, elle occupe plus de mémoire qu'une variable entière de 4 octets. Il a une plage de valeurs allant de -2 147 483 648 à 2 147 483 648
Syntaxe: Dim vname As Long
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Si vous exécutez le code ci-dessus avec une variable entière, vous obtiendrez une erreur de débordement car il y a 1048576 lignes dans Excel et le type de données Integer ne prend en charge que jusqu'à 32767. Comme indiqué ci-dessous, lorsque le type de données est long, un résultat approprié s'affiche.
Mais lorsque le type de données est un entier, une erreur de dépassement de capacité est générée.
# 4) Type de données décimal
Il s'agit d'un type de données numérique exact utilisé pour sa précision. C'est le nombre total de chiffres et le nombre de chiffres à droite du point décimal appelé facteur d'échelle.
Dans VBA, les nombres sont mis à l'échelle par une puissance de 10. Il est approprié d'utiliser ces types tout en manipulant de grands nombres qui nécessitent une valeur précise. Cela occupe 14 octets en mémoire.
Mais les variables ne peuvent pas être directement déclarées en tant que type de données décimal. Pour utiliser Decimal, vous devez utiliser la fonction de conversion CDec. Vous devez utiliser un type de données Variant.
Ce type de données contient la plage de valeurs ci-dessous.
+/- 79,228,162,514,264,337,593,543,950,335 sans point décimal
+/- 7,9228162514264337593543950335 avec 28 décimales à droite de la décimale.
La plus petite valeur non nulle acceptée est +/- 0,00000000000000000000000001.
Syntaxe: Dim s'enflamme comme variante
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Noter: La fonction TypeName donnera le nom du type de données
Production:
# 5) Type de données unique
Ce type de données est utilisé pour stocker des nombres à virgule flottante simple précision. Il occupe 4 octets de mémoire. La valeur par défaut est 0 et stocke les valeurs décimales. Vous pouvez utiliser le point d'exclamation (!) Lors de la déclaration d'une variable comme indiqué dans la syntaxe ci-dessous.
La plage de valeurs acceptée est:
3.402823E38 à -1.401298E-45 pour les valeurs négatives
1.401298E-45 à 3.402823E38 pour les valeurs positives.
Syntaxe
Dim VariableName comme unique
ou
Dim VariableName!
Sub SingleDataTypeTest() Dim SingleVal1 As Single Dim SingleVal2! SingleVal1 = 123 SingleVal2 = 333.44 MsgBox ('Data type of SingleVal1 is ' & TypeName(SingleVal1) & ' with value ' & SingleVal1 & ' and datatype of SingleVal2 is ' & TypeName(SingleVal2) & ' with value ' & SingleVal2) End Sub
# 6) Double type de données
Les données Double VBA peuvent être utilisées pour contenir à la fois des entiers et des fractions. Double est utilisé pour stocker des nombres à virgule flottante double précision. Il occupe 8 octets de mémoire et a une plage de valeurs.
-1,79769313486231E308 à -4,94065645841247E-324 pour les valeurs négatives
4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives
Comme le type de données Single, double peut également être déclaré à l'aide d'un symbole qui est Hash (#) comme indiqué ci-dessous.
Syntaxe
Dim VariableName comme Double
ou
Dim VariableName #
Sub DoubleDataTypeTest() Dim douValue As Double Dim douVal1# douValue = 100.21 douVal1 = 333.44 MsgBox ('Data type of douValue is ' & TypeName(douValue) & ' with value ' & douValue & ' and datatype of douVal1 is ' & TypeName(douVal1) & ' with value ' & douVal1) End Sub
# 7) Type de données de devise
Ce type de données peut prendre jusqu'à 8 octets de taille de stockage. Ce type de données donne une valeur exacte, contrairement aux types de données simples et doubles dont nous avons déjà parlé sont arrondis. Ceux-ci sont utiles pour les calculs monétaires.
Le type de données de devise peut stocker des valeurs positives et négatives. Ceux-ci peuvent stocker 15 chiffres à gauche de la décimale et 4 chiffres à droite.
La plage autorisée est de -922,337,203,685,477,5808 à 922,337,203,685,477,5807. Vous pouvez utiliser @ pour déclarer les types de données Currency.
Syntaxe
Dim VariableName comme devise
ou
Dim VariableName @
Sub CurrencyDataTypeTest() Dim val1 As Currency Dim Val2@ val1 = 123 Val2 = 333.44 MsgBox ('Data type of Val1 is ' & TypeName(val1) &” with value “ &val1 & ' and datatype of Val2 is ' & TypeName(Val2) & “ with value “ &val2) End Sub
Production:
Remarque :Si la valeur de la variable dépasse la plage fournie pour un type de données particulier, une erreur de dépassement de capacité sera générée.
Prenons l'exemple simple du type de données octet dépassant sa plage. La même erreur s'affichera si vous entrez des valeurs négatives pour le type de données octet.
Types de données non numériques
Ce sont des données qui ne peuvent pas être manipulées par des opérateurs arithmétiques. Ils comprennent du texte, une chaîne, une date, etc. Ci-dessous sont les types de données non numériques pris en charge dans VBA.
Type de données non numériques | |
---|---|
sept | Variante (caractères) |
un | Chaîne (longueur fixe) |
deux | Chaîne (longueur variable) |
3 | Date |
4 | Booléen |
5 | Objet |
6 | Variante (nombres) |
# 1) Type de données booléen
Ce type de données nécessite 2 octets de mémoire et ne peut stocker que 2 valeurs, c'est-à-dire TRUE ou FALSE. En d'autres termes, la variable booléenne ne peut obtenir que la valeur TRUE ou FALSE, alternativement 1 ou 0 respectivement. La valeur par défaut d'une variable booléenne est False.
cisco networking interview questions et réponses pdf
Syntaxe - Dim Vname As Boolean
Exemple:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Type de données de date
Ce type de données est utilisé pour représenter la date et l'heure. Il a des valeurs de plage de dates du 1er janvier 0100 au 31 décembre 9999 et des valeurs d'heure de 0:00:00 à 23:59:59 et occupe 8 octets de taille de stockage.
Syntaxe: Dim s'enflamme comme date
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Noter: Maintenant, la fonction donne la date et l'heure actuelles
# 3) Type de données de chaîne
Ce type de données est utilisé pour stocker la valeur de chaîne. La chaîne est définie comme une séquence de caractères. Ainsi, vous pouvez utiliser le type de données String pour stocker du texte et peut être utilisé pour stocker des nombres, des caractères spéciaux, des s et des espaces d'événement. Une valeur de chaîne doit être incorporée entre guillemets doubles «».
Il existe 2 types de type de données String.
# 1) Chaîne de longueur variable: Ce type occupe 10 octets de taille de stockage plus la mémoire requise pour la chaîne qui correspond à la longueur de la chaîne. Ils ont une valeur comprise entre 0 et environ 2 milliards.
# 2) Chaîne de longueur fixe: Il occupe la mémoire égale à la longueur de la chaîne elle-même. Il peut comprendre de 1 à environ 65 400 caractères
Syntaxe: Dim Vname As String
Exemple:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Type de données d'objet
L'objet aura une référence à un objet de n'importe quel type, c'est-à-dire que le type de données Object peut pointer vers n'importe quel type de données tel que chaîne, double, entier, etc. stockée. Il occupe 4 octets de mémoire informatique. La valeur par défaut d'un objet est une référence nulle.
Syntaxe: Dim VName comme objet
Exemple:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Cela effacera toutes les cellules utilisées dans la feuille actuelle.
# 5) Type de données de variante
C'est le type de données universel de VBA, il peut accepter tout type de données numériques et non numériques. Le type de données Variant offre plus de flexibilité lors de l'utilisation des données. Le type de données Variant utilise plus de taille de stockage que tout autre type de données. Si vous ne mentionnez pas de type de données, VBA le traitera comme une variable de type Variant.
Il existe 2 types de types de données Variant
# 1) Variante (nombres): Cela peut contenir n'importe quelle valeur numérique jusqu'à la plage de Double. Les numéros de variante occupent 16 octets de taille de stockage.
# 2) Variante (caractères): Cela peut contenir la même plage que pour une chaîne de longueur variable. Les caractères Variant occupent 22 octets + longueur de chaîne (24 octets sur les systèmes 64 bits)
Syntaxe
Dim VName comme variante
ou
Dim VName
Exemple:
Sub VariantDataTypeTest() Dim EmpName As Variant Dim DOB Dim Salary As Variant EmpName = 'Jofn kim' DOB = #10/3/2020# Salary = 55000 MsgBox EmpName & ' ' & DOB & ' ' & Salary End Sub
Conversion de type de données
Parfois, il devient nécessaire de convertir le type de données d'une variable en quelque chose de spécifique dans notre cas d'utilisation.
Exemple: Vous récupérez une valeur d'une cellule, qui est généralement une chaîne, et vous devez donc la convertir en un type de données numérique avant d'effectuer toute opération arithmétique. Pour y parvenir, VBA dispose de fonctions de conversion de type pour tous les types de données pris en charge.
# 1) CBool
Cette fonction est utilisée pour convertir une expression en un type de données booléen. Si l'expression renvoie zéro, CBool retournera False, toute valeur différente de zéro, CBool retournera True.
Sub CBooleanTest() Dim val1 As Integer Dim strval2 As String val1 = 0 MsgBox CBool(val1) val1 = 177 MsgBox CBool(val1) strval2 = 'A' MsgBox CBool(strval2 = 'B') MsgBox CBool(strval2 'B') End Sub
Le code ci-dessus renverra les résultats sous la forme False, True, False, True.
Vous pouvez essayer vous-même, dessiner un bouton de commande de contrôle ActiveX, faire un clic droit -> Afficher le code et insérer le code ci-dessus. Cliquez sur le bouton Commande et le résultat sera affiché. (Désactivez le mode de conception)
Production
# 2) CByte
Cette fonction est utilisée pour convertir une expression en un type de données Byte. N'oubliez pas après la conversion si la plage dépasse la plage autorisée pour Byte, une erreur de dépassement de capacité sera générée.
Sub cbyteTest() Dim val1 As Double Dim val2 val1 = 125.5678 val2 = CByte(val1) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
Noter: Si vous donnez la valeur 255,56. Complier renverra une erreur de dépassement
# 3) CCur
Cette fonction convertit une expression en un type de données monétaire.
Sub ccurTest() Dim val1 As Integer Dim val2 val1 = 5544 val2 = CCur(val1 / 5) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
# 4) CDate
Cette fonction convertit une chaîne en date. Supposons que vous récupériez la valeur Date sous forme de chaîne à partir d'une cellule Excel, vous devez la convertir avant d'effectuer toute autre action. Vous pouvez utiliser CDate.
Sub CDateTest() Dim val1, val2, val3 As String Dim Res1, Res2, Res3 val1 = '12:21' val2 = '23/09 12:12' val3 = 'Sep 23, 2020' Res1 = CDate(val1) Res2 = CDate(val2) Res3 = CDate(val3) MsgBox 'Date of val1 is : ' & Res1 & ' Date of val2 is : ' & Res2 & ' Date of val3 is ' & Res3 End Sub
# 5) CDbl
La fonction CDbl est utilisée pour convertir une expression en un type de données Double.
Sub CDblTest() Dim val1 As String Dim val2 As Integer Dim Res1 val1 = 10000.12345 val2 = 1222.222 Res1 = CDbl(val1) Res2 = CDbl(val2) MsgBox 'Double value after converting String : ' & Res1 & ' Double value after converting Integer : ' & Res2 End Sub
# 6) CDec
Cette fonction convertit une valeur numérique en décimal.
Sub CDecTest() Dim Val1 As Currency Dim Result Val1 = 1234566.56366 Result = CDec(Val1) ‘Result is 1234566.5637 MsgBox 'Decimal Data Type Value : ' & Result End Sub
# 7) CInt
La fonction CInt convertira une valeur en un type de données entier.
Sub CintTest() Dim Val1 As Double Dim Result Val1 = 2345.5678 Result = CInt(Val1) 'Result is 2346 MsgBox 'Integer value of converting is : ' & Result & ' and datatype of Result is ' & TypeName(Result) End Sub
# 8) CLng
Cette fonction est utilisée pour convertir une valeur en un type de données long
Sub cLngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 45457.35 Val2 = 45457.65 Res1 = CLng(Val1) Res2 = CLng(Val2) MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 9) CSng
Cette fonction convertit une valeur en un seul type de données
Sub cSngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 75.3421115 Val2 = 75.3421555 Res1 = CSng(Val1) ' Result is 75.34211. Res2 = CSng(Val2) ' Result is 75.34216. MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 10) CStr
Cette fonction est utilisée pour convertir une valeur numérique en un type de données chaîne.
Sub CStrTest() Dim Val1 As Double Dim Result Val1 = 123.123 Result = CStr(Val1) 'Result will be 123.123 MsgBox 'Result of Val1 is ' & Val1 End Sub
# 11) CVar
Cette fonction convertit une expression en un type de données Variant.
Sub CVarTest() Dim Val1 As Integer Dim Result Val1 = 1234 Result = CVar(Val1 & 1.12) ' Result will be 12341.12 MsgBox 'Result is ' & Result End Sub
Questions fréquemment posées
Q # 1) Quel est le type de données par défaut dans VBA?
Répondre: La variante est celle par défaut. Si vous ne définissez pas de type de données pour une variable, VBA la traite comme une variable / objet variant.
Q # 2) Qu'est-ce qu'une erreur d'incompatibilité de type?
Répondre: Cette erreur sera déclenchée lorsque vous déclarez une variable comme un type de données et attribuez une valeur inappropriée.
Exemple: Déclarez une variable comme Integer et entrez une valeur de texte.
Q # 3) Comment corriger une erreur de débordement?
Répondre: Vous devez faire référence à la plage pour laquelle un type de données particulier est autorisé et vous assurer que vous entrez une valeur dans la plage autorisée.
Exemple: Octet autorise uniquement 0 à 255, si vous entrez une valeur négative ou une valeur v supérieure à 255, vous rencontrez une erreur de dépassement de capacité.
Conclusion
Dans ce didacticiel, nous avons découvert les types de données VBA, à savoir 7 types de données numériques et 7 types de données non numériques. Nous avons également expliqué comment convertir un type de données d'un type à un autre avec des exemples.
=> Vérifiez ici pour voir de A à Z des didacticiels de formation VBA
lecture recommandée
- Tutoriel Excel VBA - Introduction à VBA dans Excel
- Types de données C ++
- Types de données Python
- Types de données et variables C # avec exemples
- Casting de type C #: conversion de données explicite et implicite avec exemple
- Types de données de tableau - tableau int, tableau double, tableau de chaînes, etc.
- Types de données MySQL | Quels sont les différents types de données dans MySQL