Excel VBA: la Sélection de Différentes Gammes en Boucle
Je suis en train de sélectionner deux gammes différentes dans une boucle (c'est à dire de la première itération sélectionne une plage, deuxième itération sélectionne une autre gamme). Voici mon essaie juste de voir si je pouvais faire une tâche simple, comme la sélection de deux plages, l'une après l'autre:
Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
m = i * 50 - 48
n = i * 50 + 1
Range(Cells(m, 1), Cells(n, 2)).Select
Next i
End Sub
Cela donne l'erreur: "la Méthode des "Cellules" de l'Objet "_Global" a Échoué"
Je l'ai essayé avant:
Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
m = i * 50 - 48
n = i * 50 + 1
Range("Am:Bn").Select
Next i
End Sub
Ou:
Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
m = i * 50 - 48
n = i * 50 + 1
Range("A$n:B:m").Select
Next i
End Sub
Et rien de ce qui précède travaillé. Je pense que mon problème est à l'aide de la boucle de la variable dépendante à l'intérieur de chaînes (dont j'ai essayé de l'éviter en utilisant les "Cellules(#, #)..." formation à l'intérieur de la Gamme" ()". Mais maintenant, je suis juste coincé.
Est-ce possible?
- l'exemple fourni fonctionne très bien, est-il un autre code qui pourrait interférer avec elle? pour votre deuxième exemple, le code devrait ressembler à
Range("A" & m & ":B" & n).Select
, cela devrait fonctionner aussi bien. - Votre premier échantillon a fonctionné parfaitement pour moi.
- essayez de les qualifier complètement votre gamme de référence(s) avec une feuille de nom et / ou numéro de la feuille.
- Les deuxième et troisième exemple utiliser des guillemets de manière erronée dans la plage d'adresse. Ils devraient être comme
Range("A" & n & ":B" & m).Select.
- êtes-vous à l'aide de cellules fusionnées ? ou verrouillé feuille/cellules,? ou cachés ? (ne peut pas choisir ceux-là...)
Vous devez vous connecter pour publier un commentaire.
Il est probable que vous êtes l'obtention de la "Méthode" Cellules "de l'Objet "_Global" a Échoué " erreur parce que vos Cellules() la méthode n'est pas attaché à un objet. Selon ce post (La méthode 'Range' de l'objet '_Global" a échoué. erreur), vous pouvez éviter cela en utilisant "activeSheet".
Comme pour vos autres exemples; vous avez entièrement raison. Y compris le nom d'une variable dans une chaîne de caractères ne faisant pas référence à la variable à tous. Vous pouvez utiliser le format suivant pour concaténer des chaînes de caractères (VBA essaie de convertir automatiquement les valeurs des variables dans les chaînes de concaténation)
Personnellement, j'aime utiliser des CStr() pour s'assurer VBA convertit une valeur à une chaîne
Le premier exemple a fonctionné pour moi, mais essayez:
Ce sera entièrement de qualifier les Cellules() plage de référence.