J'ai créé une liste de 2 listes où une liste est peuplée à partir des objets de l'autre liste. En transférant les détails de la deuxième liste à un tableau, puis d'analyser, je reçois une erreur. Je n'arrive pas à comprendre où l'erreur est.
Donc, je suppose que le problème réside avec l'initialisation et la conversion du tableau pendant la comparaison. P>
coa = ""
For i = 0 To partab.ListBox2.ListCount - 1
If partab.ListBox2.Selected(i) Then
If coa = "" Then
coa = partab.ListBox2.List(i).tostring()
Else
coa = coa & "," & partab.ListBox2.List(i).tostring()
End If
End If
Next i
Dim arr() As String
Dim arrv() As Integer
arr = Split(coa, ",")
For i = 0 To partab.ListBox2.ListCount - 1
If IsEmpty(arr) = True Then
arrv(0) = 99
Else
If arr(i) = "Vehicle-Vehicle" Then
arrv(i) = 1
ElseIf arr(i) = "Vehicle-Pedestrian" Then
arrv(i) = 2
ElseIf arr(i) = "Vehicle-Bicycle/Others" Then
arrv(i) = 3
ElseIf arr(i) = "Vehicle-Animal" Then
arrv(i) = 4
Else
arrv(i) = 99
End If
End If
Next i
Dim displayar As String
displayar = ""
If IsEmpty(arrv) Then
displayar = 99
Else
For i = 0 To partab.ListBox2.ListCount - 1
displayar = displayar & "," & arrv(i)
Next i
End If
3 Réponses :
La variable "ARLV" ne peut avoir un index car ce n'est pas un tableau. P>
La variable Le tableau attribué à CAO est une matrice de tous les éléments sélectionnés dans la liste de liste. Cela ne pourrait être ni plusieurs. Il n'y a aucun moyen de savoir en regardant le code. P>
Toutefois, Je suggère de formater la boucle comme COA code> n'est pas déclarée dans votre code. Donc, je présume que c'est une variante. Vous attribuez la valeur "" au début de votre code et cela en fait une variante de type de chaîne. Ensuite, votre code vérifie s'il a vraiment une valeur de chaîne NULL, qui semble superflu, puisque vous venez de vous attribuer cette valeur à celle-ci, mais si elle a une valeur de votre code, vous procédez ensuite pour attribuer une matrice à celle-ci. Cela le transforme en une variante de type tableau. Notez qu'il ne peut jamais avoir la valeur "". Je vous suggère de déclarer CAO code> comme ce que vous voulez que ce soit et traitez-le comme tel. P>
pour i = 0 à partitab.listbox2.listCount - 1 code> tente de lire toutes les valeurs de la liste de la liste de la liste CAO code>. Cela ne devrait être possible que si tous les éléments de la liste de liste étaient sélectionnés car CAO code> ne contient que les éléments sélectionnés. Par conséquent, la ligne si arr (i) = "véhicule-véhicule" puis code> doit lancer une erreur d'indice lorsque je serai plus grand que Ubound (CAO). P>
pour i = lbound (CAO) à ubound (CAO) code>. Cela guérirait cette erreur particulière. Il pourrait y avoir d'autres. P>
Je pense que vous utilisez vb.net. Si oui, alors c'est ce que vous essayez? Si je sélectionne tous les éléments, la sortie sera 99,1 99,99,2,99,3,99, 4 code> et si je ne sélectionne rien, la sortie sera 99 code> p> p>
Quel est le message d'erreur et quelle ligne se produit-t-il? S'il vous plaît Modifier Votre question avec cette information.
il se produit sur si Arr (i) = "véhicule-véhicule" puis ligne, le script hors de portée est l'erreur
@Binkurian qui signifie que
arr (i) code> n'a aucun élémenti code>. Vous avez dépassé l'indice maximal deArt code>.Comment puis-je le rectifier ?, une autre erreur se produit dans. Je suis toujours débutant à apprendre VBA. Je suis coincé à ce morceau de code. J'apprécierais une meilleure méthode pour faire face à ce processus. Merci d'avance!
.tostring () code> ?? Vba ou vb.net?Si c'est si vb.net, j'espère que vous savez que vous n'avez pas besoin de 2 boucles pour trouver l'élément sélectionné? Une boucle fera ...
pour i = 0 to listbox2.selectedems.count - 1 code>