0
votes

Comment réparer une erreur lors de la conversion de la liste en tableau, puis comparant le tableau?

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


6 commentaires

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) n'a aucun élément i . Vous avez dépassé l'indice maximal de Art .


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 () ?? 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


3 Réponses :


0
votes

La variable "ARLV" ne peut avoir un index car ce n'est pas un tableau.


0 commentaires

1
votes

La variable COA 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 comme ce que vous voulez que ce soit et traitez-le comme tel.

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.

Toutefois, pour i = 0 à partitab.listbox2.listCount - 1 tente de lire toutes les valeurs de la liste de la liste de la liste CAO . Cela ne devrait être possible que si tous les éléments de la liste de liste étaient sélectionnés car CAO ne contient que les éléments sélectionnés. Par conséquent, la ligne si arr (i) = "véhicule-véhicule" puis doit lancer une erreur d'indice lorsque je serai plus grand que Ubound (CAO).

Je suggère de formater la boucle comme pour i = lbound (CAO) à ubound (CAO) . Cela guérirait cette erreur particulière. Il pourrait y avoir d'autres.


0 commentaires

0
votes

Je pense que vous utilisez vb.net. Si oui, alors c'est ce que vous essayez? XXX

Si je sélectionne tous les éléments, la sortie sera 99,1 99,99,2,99,3,99, 4 et si je ne sélectionne rien, la sortie sera 99


0 commentaires