VBA méthode de l'aire de répartition de l'objet' _Worksheet échec de variables utilisées dans la gamme de la déclaration de
J'obtiens le message d'erreur suivant: Method range of object _worksheet failed
lorsque vous essayez de sélectionner une plage dans excel à l'aide de variables, comme la longueur de la gamme.
Ci-dessous est un extrait de mon code:
Private Function copyAmount(startRange As Integer, endRange As Integer)
Dim startRng As String
Dim endRng As String
startRng = "A" & Str(startRange)
endRng = "A" & Str(endRange)
activateBook ("book2.xlsm")
Set rng = Range(startRng, endRng)
Workbooks("book2.xlsm").Sheets(1).Range(rng).Select
Selection.Copy
activateBook ("Book1.xlsm")
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Function
Toute aide serait grandement appréciée.
L'erreur que vous avez n'arrivera pas si vous remplacez
Range(rng).Select
avec rng.Select
(c'est-à - déjà un Range
) en supposant que rng
a été défini comme un Range
variable dans MS Excel 2010.
OriginalL'auteur user1155383 | 2012-07-03
Vous devez vous connecter pour publier un commentaire.
Vous obtenez l'erreur parce que vous n'êtes pas entièrement de qualification de vos gammes. Aussi il n'est pas nécessaire d'activer un classeur à faire un copier coller 🙂 Aussi, vous n'avez pas besoin d'un
Function
pour cela. Utiliser unSub
Est-ce que vous essayez (non testé)?
MODIFIER
Sub
, comme unFunction
de la procédure, est une procédure distincte qui peut prendre des arguments, effectuer une série d'instructions, et changer la valeur de ses arguments. Toutefois, unSub
procédure ne retourne pas une valeur comme uneFunction
n'.OriginalL'auteur Siddharth Rout
Au lieu de
Str
, utilisezCstr
. Cela rendra votre travail de code, je suppose...OriginalL'auteur Trace
Vous obtiendrez ce message d'erreur lorsque votre code est dans une feuille de calcul et non pas un module.
OriginalL'auteur IndyThinker