J'ai défini le sous-programme suivant:
Sub EnterCellValueMonthNumber(cells As range, number As Integer)
range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
Quand j'appelle le sous-programme comme ceci:
EnterCellValueMonthNumber ("N23:Q23",1)
Je reçois le message d'erreur suivant:
Compile error Expected: =
Je ne sais pas pourquoi je reçois ce message. Quelqu'un sait-il ce qui me manque?
Vous appelleriez le sous comme
EnterCellValueMonthNumber "N23:Q23", 1
Pas de parenthèses. Ou
Call EnterCellValueMonthNumber("N23:Q23", 1)
Crochets et Call
avant.
De plus, votre Sub attend un objet Range comme premier argument et vous fournissez une chaîne; vous devez changer la signature du sous-marin en:
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
En outre, je ne suis pas sûr de ce que vous essayez de réaliser avec ce code car il ne définira que la cellule supérieure gauche de la plage à 1.
Range(cells).Value = number
' Or, if you're going to be passing in something more complex later...
Range(cells).FormulaR1C1 = number
être plus approprié?
Je serais également très prudent d'utiliser Range("...")
sans spécifier à quelle feuille vous faites référence. Cela agira sur la feuille active et peut donc provoquer des problèmes inattendus, préférez presque toujours SheetX.Range("...")
. De même pour l'utilisation de .Select
, Ce n'est pas nécessaire et ne peut que vous causer des problèmes à l'avenir.
Vous avez en fait 2 problèmes.
D'abord la réponse réelle à votre question. Vous devez dire:
Call EnterCellValueMonthNumber("N23:Q23",1)
Mais cela ne fonctionnera toujours pas si vous l'exécutez, car vous avez défini cells
de type range
... définissez-le comme type string
en utilisant ceci à la place:
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
Essayez le code suivant:
Sub EnterCellValueMonthNumber(ByVal cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub