Erreur de non-concordance de type VBA

Erreur d'incompatibilité de type ou nous pouvons également l'appeler comme code d'erreur 13, cela se produit lorsque nous affectons une valeur à une variable qui n'est pas de son type de données, par exemple, si nous fournissons une valeur décimale ou longue à une variable de type de données entier rencontrez cette erreur d'incompatibilité de type lorsque nous exécutons le code qui est affiché comme code d'erreur 13.

Qu'est-ce que l'erreur de non-concordance de type VBA?

L'erreur de non-concordance de type VBA dans Excel est un type d '«erreur d'exécution» et il s'agit de l'erreur numéro 13 dans cette catégorie.

Pour commencer les apprentissages en VBA et pour les débutants, il est difficile de trouver l'erreur générée par les codes VBA. N'oubliez pas que VBA ne lance pas une erreur, mais met simplement en évidence nos erreurs lors de l'écriture du code.

Nous déclarons généralement des variables et nous leur attribuons des types de données. Lorsque nous attribuons une valeur à ces variables, nous devons nous rappeler quel type de données elle peut contenir, si la valeur assignée n'est pas conforme au type de données, nous obtiendrons «Erreur d'exécution 13: Type Mismatch».

Comment réparer l'erreur d'exécution 13 d'incompatibilité de type VBA?

Voyons quelques exemples pour comprendre cette erreur de non-concordance de type VBA.

Vous pouvez télécharger ce modèle Excel de discordance de type VBA ici - Modèle Excel de discordance de type VBA

Incompatibilité de type VBA - Exemple n ° 1

Pour un exemple, regardez le code VBA ci-dessous.

Code:

 Sub Type_MisMatch_Example1 () Dim k As Byte k = "Hiii" MsgBox k End Sub 

J'ai déclaré la variable «k» comme Byte.

Cela signifie que la variable «k» peut contenir des valeurs de 0 à 255. Mais dans la ligne suivante, j'ai attribué la valeur de la variable «k» à «Hiii».

Il est très clair que le type de données ne peut pas contenir la valeur d'un texte, voici donc l'erreur d'incompatibilité de type.

Non-correspondance de type VBA - Exemple n ° 2

Regardez maintenant un autre exemple avec un type de données différent. Regardez le code ci-dessous.

Code:

 Sub Type_MisMatch_Example2 () Dim x As Boolean x = 4556 MsgBox x End Sub 

Nous avons déclaré la variable «x» comme booléenne.

Boolean est un type de données qui peut contenir la valeur TRUE ou FALSE.

Dans le code ci-dessus, nous avons attribué une valeur de 4556, qui n'est pas conforme aux valeurs de type de données VRAI ou FAUX.

Lorsque nous exécutons ce code, vous vous attendez à une erreur d'incompatibilité de type, mais voyez ce qui se passe lorsque nous exécutons ce code.

Vous devez vous demander pourquoi cela ne donne pas l'erreur d'exécution 13 d'une erreur de non-correspondance de type.

La raison en est qu'Excel traite tous les nombres comme VRAI sauf zéro. La valeur zéro sera traitée comme FAUX. C'est pourquoi nous avons obtenu le résultat VRAI au lieu d'une erreur.

Maintenant, je vais attribuer une valeur numérique avec du texte.

Code:

 Sub Type_MisMatch_Example2 () Dim x As Boolean x = "4556a" MsgBox x End Sub 

Cela entraînera certainement l'erreur d'exécution 13: incompatibilité de type.

Non-correspondance de type VBA - Exemple n ° 3

Maintenant, regardez le code ci-dessous pour cet exemple.

Code:

 Sub Type_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub 

La variable «x» est un type de données entier et «y» est un type de données chaîne.

X = 45 et y = 2019 janv.

Dans la boîte de message, j'ai ajouté x + y.

Mais ce n'est pas le code parfait car nous ne pouvons pas ajouter de nombres avec des textes de chaîne. Nous rencontrerons l'erreur d'exécution 13.

Incompatibilité de type VBA - Exemple n ° 4

Cas exceptionnels

Il existe des situations dans lesquelles Excel pardonne les mauvaises données affectées au type de données variable. Pour un exemple, regardez le code ci-dessous.

Code:

 Sub Type_MisMatch_Example3 () Dim x As Long Dim y As Long x = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub 

Deux variables déclarées sont «x» et «y».

Pour cette variable, le type de données attribué est «Long».

Le type de données long n'accepte que des nombres entiers, pas des valeurs décimales.

Donc, la perception générale est d'obtenir l'erreur d'exécution 13 d'erreur de non-correspondance de type.

Mais voyons ce qui se passe lorsque nous exécutons ce code.

Sensationnel!!! Nous avons les valeurs 59 et 85.

En effet, VBA convertit la valeur décimale 58,85 en valeur entière la plus proche et même si les nombres sont entourés de guillemets doubles, il ne se convertit qu'en valeur entière.