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
INDIRECT est une fonction de feuille de calcul. Je pense que vous vouliez utiliser RANGE(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 est C0,C1 - deux arguments. Le problème est, il pense que ce n'est qu'un argument.
Sun string? Qu'est-ce qui se passe si vous utilisezUnion(INDIRECT(S))?