pour chaque variable de contrôle doit être d'une variante ou d'objet
De vraiment nouveau à VBA ici... j'ai regardé autour et a essayé de rassembler un peu de code pour satisfaire mon besoin. Pense que c'est presque là, mais j'ai des erreurs qui sont susceptibles facile à surmonter, et pourtant, je ne sais pas comment.
Le code ressemble à la feuille en cours (STOCK), et prend une 'cible' texte de la valeur de la cellule A2. Il recherche ensuite une plage nommée dans une autre feuille "Autres". Si elle détermine que l'une des cellules ('cand') dans les Autres pour être égale à la valeur de la cible, alors la valeur "True" sera appliqué à la colonne G de l'encours de la feuille, dans la même ligne de la cible d'origine.
Espérons que cela a du sens. J'ai copié le code qui va peut-être jeter plus de lumière sur les choses.
Dim cible Comme une Chaîne de caractères Dim cand Comme une Chaîne de caractères Dim currentrow as Integer Sous search_named_range() "Cette gamme est codé en dur; nous pouvons essayer Un:Un si dur version du code qui fonctionne" Pour Chaque cible Dans des Feuilles de calcul("STOCK").Range("A2:A1000") 'récupérer la ligne de la gamme actuelle, pour les utiliser lors de la définition des valeurs cibles' currentrow = Range(cible).Ligne 'Boucle for POUR la recherche de numéros de partie dans le désert de Mojave' Pour Chaque candidat Dans les Feuilles de calcul("Autres").Range("N9:N150") Si StrConv(cand.Valeur, 2) = StrConv(cible, 2) Puis Worksheets("STOCK").Range("G" + currentrow) = "True" GoTo De Têtière Fin De Si Prochaine cand "Si la partie n'est pas trouvé, ne rien faire et de retour pour trouver la cible" Têtière: Prochaine cible End Sub
L'heure actuelle, j'obtiens le message d'erreur "Pour Chaque variable de contrôle doit être d'une Variante ou d'Objet", mais ne peut pas trouver n'importe où qui explique pourquoi il en est. Je suis sûr que c'est assez évident, mais un bœuf serait vraiment apprécié.
Grâce.
OriginalL'auteur user2311821 | 2013-04-23
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser une variable de Chaîne dans une Pour Chaque. Vous êtes à l'aide de
tartget
etcand
que les variables de contrôle dans votre Pour Chacune des boucles mais vous avez définis comme des chaînes de caractères. Ils ont besoin d'être un objet, et plus précisément un objet qui est contenue la collection d'objets que vous êtes l'itération. Vous êtes une itération sur une plage, qui est une collection de plages, de sorte que vos variables de contrôle doivent être la Gamme des objets.D'autres modifications qui n'étaient pas de corriger les erreurs:
Je ne suis pas sûr de savoir pourquoi vous avez déclaré vos variables en dehors de la sub, mais je les ai mis à l'intérieur.
Vous n'avez pas besoin de définir
.Cells
à la fin de Chaque ligne, mais j'aime ça. Vous pourriez itération sur.Rows
ou.Columns
ou.Areas
avec une Gamme (bien que.Cells
est la valeur par défaut).Il n'y a rien de mal avec StrConvert, mais vous pouvez également utiliser LCase() ou, comme je le fais, StrComp.
Puisque j'ai déjà une référence à une cellule de la ligne en cours (rCell), - je l'utiliser et de l'Offset pour remplir une colonne que je veux.
OriginalL'auteur Dick Kusleika