Le type de '<NomVariable>' ne peut pas être déduit, car les limites de la boucle et la clause d'incrémentation ne sont pas converties en un même type
Mise à jour : novembre 2007
Type of '<variablename>' cannot be inferred because the loop bounds and the step variable do not widen to the same type
Vous avez écrit une boucle For...Next dans laquelle le compilateur ne peut pas déduire de type de données pour la variable de contrôle de boucle, car les conditions suivantes sont vraies :
Le type de données de la variable de contrôle de boucle n'est pas spécifié avec une clause As.
Les limites de la boucle et la clause d'incrémentation contiennent au moins deux types de données.
Aucune conversion standard n'existe entre les types de données.
Par conséquent, le compilateur ne peut pas déduire le type de données de la variable de contrôle d'une boucle.
Dans l'exemple suivant, la clause d'incrémentation est un caractère et les limites de la boucle sont toutes les deux des entiers. Étant donné qu'il n'existe aucune conversion standard entre les caractères et les entiers, cette erreur est signalée.
Dim stepVar = "1"c
Dim m = 0
Dim n = 20
' Not valid.
' For i = 1 To 10 Step stepVar
' Loop processing
' Next
ID d'erreur : BC30982
Pour corriger cette erreur
Modifiez les types des limites de la boucle et de la clause d'incrémentation selon vos besoins afin qu'au moins un des types soit un type de conversion. Dans l'exemple précédent, modifiez le type de stepVar en Integer.
Dim stepVar = 1
- ou -
Dim stepVar As Integer = 1
Utilisez les fonctions de conversion explicite pour convertir les limites de la boucle et la clause d'incrémentation en types appropriés. Dans l'exemple précédent, appliquez la fonction Val à stepVar.
For i = 1 To 10 Step Val(stepVar) ' Loop processing Next
Voir aussi
Concepts
Conversions implicites et explicites
Conversions étendues et restrictives
Référence
For...Next, instruction (Visual Basic)