Quelque part dans la feuille appelée feuille 2, j'ai les éléments suivants: Cliquez pour l'image
Il utilise la fonction TEXTJOIN pour concaténer les valeurs de la colonne A. La chaîne dans B100 est la variable S (voir le code).
J'essaie de l'utiliser comme entrée d'une méthode dans ma macro. Ce qui suit est un extrait de code du module:
Dim ListofSheets, WorkingSheet As Worksheet
Dim C0, C1 As Range
Dim S As String
Dim WholeRange As Range
Set ListofSheets = Sheets("Sheet2")
...
Set C0 = WorkingSheet.Range(PanelColumn & StartingRow & ":" & PanelColumn & lRow)
Set C1 = WorkingSheet.Range(LoadCaseColumn & StartingRow & ":" & LoadCaseColumn & lRow)
S = ListofSheets.Cells(100, 2).Value
Set WholeRange = Union(S)
WholeRange.Copy
End Sub
C0 et C1 sont calculés dans le code et correspondent aux plages suivantes:
C0= C7:C310
C1= D7:D310
Lorsque le code ci-dessus est exécuté, une erreur est générée sur la ligne. Set WholeRange = Union(S)
avec "Erreur de compilation: incompatibilité de type"
j'ai essayé Set WholeRange = Union(C0, C1)
qui fonctionne avec succès, mais je ne veux pas l'utiliser car il y a en fait plus de variables qui peuvent être choisies.
Ma question est la suivante: pourquoi la chaîne peut-elle être passée en tant que paramètre et comment puis-je résoudre le problème?
NB: J'ai plus de 2 plages dans le code qui ne sont pas montrées ici. Le script décide quelles plages utiliser. Étant donné que plus de 2 plages doivent être entrées, j’utilise la Union
méthode au lieu de Range
méthode
la source
S
un string? Qu'est-ce qui se passe si vous utilisezUnion(INDIRECT(S))
?INDIRECT
est une fonction de feuille de calcul. Je pense que vous vouliez utiliserRANGE(S)
.S
, une chaîne de caractères, pour représenter les noms de variables.UNION
nécessite au moins deux arguments de plage.S
estC0,C1
- deux arguments. Le problème est, il pense que ce n'est qu'un argument.Réponses:
Alors
S
est une chaîne et même s'il se lit comme s'il spécifiait une plage,Union()
nécessite une gamme objet , c'est pourquoi vous obtenez une erreur d'incompatibilité de type. Vous passez le mauvais type.Donc, tant que la valeur de
S
spécifie une plage appropriée, essayez quelque chose comme:la source