2017-08-03 3 views
1

Je tente d'écrire une macro VBA simple qui prendra la colonne de la cellule active et l'entrée de l'utilisateur pour ajouter une plage de cellules sur une seule ligne. La plage est calculée en ajoutant l'entier que l'utilisateur entre dans la colonne active et c'est la colonne de fin. Le problème est qu'il me donne un "Compile Error: Invalid Qualifier" quand je l'exécute, et se met en colère contre la ligne "total".Erreur de compilation de macro VBA

Voici mon code. Je commence juste à VBA, mais ça ne peut pas être si dur ... pas vrai?

Sub Food() 
Dim first As Variant 
Dim last As Integer 
Dim days As Integer 
Dim month As Range 
Dim total As Double 
first = ActiveCell.Column 
days = InputBox("Days in the month?") 
last = first + days 
Set month.Value = Range(Cells(first, 4), Cells(last, 4)) 
total.Value = WorksheetFunction.Sum(month) 
Worksheets(1).Cells(1, 13).Value = total 
End Sub 

Répondre

0

Cela ressemble à une erreur de syntaxe. Essayez de laisser tomber le .value sur month et total.

Sub Food() 
Dim first As Variant 
Dim last As Integer 
Dim days As Integer 
Dim month As Range 
Dim total As Double 
first = ActiveCell.Column 
days = InputBox("Days in the month?") 
last = first + days 
Set month = Range(Cells(first, 4), Cells(last, 4)) 
total = WorksheetFunction.Sum(month) 
Worksheets(1).Cells(1, 13).Value = total 
End Sub 

Si vous souhaitez obtenir la valeur d'une plage dans une variable, vous mettez le .value avec la plage au lieu de la variable. Par exemple:

x = cells(1,2).value 

La propriété .value renvoie la valeur dans un objet de plage. Cela n'a donc pas de sens de l'utiliser sur une fonction et provoquera des erreurs et des erreurs si vous essayez. Cela n'a pas non plus de sens d'essayer de définir la variable month en tant que valeur au lieu d'une plage, car cela ferait simplement un tableau. Si vous voulez que month soit un tableau, vous voudriez le définir comme une variante au lieu d'une plage.

Pour plus d'informations sur la propriété .value, voir ce lien: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-value-property-excel