Les erreurs de l'ajout d'éléments à un VBA/VB6 Collection
Je suis encore à apprendre VBA et je ne peux pas comprendre wth je vais avoir beaucoup de problèmes avec une des Collections d'objets.
J'ai une fonction qui ajoute des objets personnalisés (j'ai créé une classe très simple pour stocker des données qui ne le typique "lire les données, créer un objet de représentation, de l'enfoncer dans les Collections" genre de chose.
Si j'essaie d'ajouter une "clé" pour le sac.ajouter un appel que je reçois une "erreur de Compilation. Prévu:=" message.
Si je ne le fait pas, il semble avoir travaillé ensuite quand je lance le programme il me dit "Erreur de Compilation. Argument pas une option" et souligne "le getRevColumns = sac" de ligne.
Je ne peux pas pour la vie de me comprendre wth est passe!!! Je soupçonne quelque chose de mal avec la façon dont j'ai initialisé mon sac?! PS: columnMap est le nom de ma classe personnalisée.
Function getRevColumns() As Collection
Dim rng As Range
Dim i As Integer
Dim bag As Collection
Dim opManCol As Integer, siebelCol As Integer
Dim opManColName As String, siebelColName As String
Dim itm As columnMap
Set bag = New Collection
Set rng = shSiebelMap.UsedRange.Columns(5)
i = 1
For i = 1 To rng.Rows.count
If StrComp(UCase(rng.Cells(i).value), "Y") = 0 Then
opManCol = rng.Rows(i).OffSet(0, -2).value
opManColName = rng.Rows(i).OffSet(0, -4)
siebelCol = rng.Rows(i).OffSet(0, -1).value
siebelColName = rng.Rows(i).OffSet(0, -3)
Set itm = New columnMap
itm.opManColName = opManColName
itm.opManColNumber = opManCol
itm.siebelColName = siebelColName
itm.siebelColNumber = siebelCol
'WHY DOESN'T IT WORK!''
bag.Add (itm)
'MsgBox "opMan Col: " & opManColName & " : " & opManCol & ". Siebel Col: " & siebelColName & " : " & siebelCol'
End If
Next i
getRevColumns = bag
End Function
OriginalL'auteur holografix | 2010-07-30
Vous devez vous connecter pour publier un commentaire.
Essayez de supprimer les parenthèses autour de l'imt dans le ajouter:
ou
Il a été un moment depuis que j'ai eu à travailler avec VBA/VB6, mais je crois y compris les parens causes de l'imt à être passés par valeur et non par référence. J'ai peut-être tort.
Ce comportement a également été discuté de la Question
Hidden features of VBA
sur StackOverflow. stackoverflow.com/questions/1070863/...OriginalL'auteur Vincent
le sac est un objet. Règle n ° 1 pour les objets utiliser Set
Il n'y a pas une instruction de retour. La valeur de retour(ou de l'objet comme dans votre cas) doit correspondre au nom de la fonction.
Yep je l'ai eu au bout de 20 minutes de me gratter la tête et un supplément de 10 de googler!
OriginalL'auteur renick
Vous avez besoin de dire
aussi je suppose que vous avez un problème sur le ajouter. Je ne sais pas pourquoi, mais il fonctionne sur
J'ai essayé la chose d'une manière simple, voici mon code de travail
La classe est très simple:
Espère que cela aide
Oui c'est fou, mais comme Vincent mentionné avant, il semble y avoir une certaine logique derrière elle la façon dont le paramètre est passé (par valeur ou par référence). J'ai googlé un peu, mais ne pouvait pas trouver quoi que ce soit. VBA est en quelque sorte le vieux VB6 et n'était pas parfait.
OriginalL'auteur hol
J'ai eu un problème similaire avec une collection.
Je Dim avais, mais n'avait pas fait lui-même avec de Nouveaux ou initialisé.
Fondamentalement, j'ai eu
J'ai ajouté les points suivants avant de l'ajouter
puis il a travaillé comme un charme...j'ai aussi déplacé le Dim déclaration de Sous pour le haut du Module pour en faire une variable de classe
OriginalL'auteur Robin Sandlin - Developer