VBAmacros编译错误

我正在尝试编写一个简单的VBAmacros,它将采用活动单元格的列和用户的input将一行单元格的范围添加到一起。 范围是通过将用户input的整数添加到活动列并且是结束列来计算的。 问题是,当我运行它时,它给了我一个“编译错误:无效的限定符”,并在“全部”行中生气。

这是我的代码。 我刚刚开始在VBA,但不能那么辛苦….对吧?

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 

看起来像一个语法错误。 尝试删除monthtotal

 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 

如果你想把一个范围的值变成一个variables,你把.value的范围,而不是variables。 例如:

 x = cells(1,2).value 

.value属性返回范围对象中的值。 所以在函数上使用它是没有意义的,如果你尝试的话会导致excel抛出错误。 尝试将monthvariables设置为一个值而不是一个范围也没有意义,因为这只会使它成为一个数组。 如果你想要month是一个数组,你会想将它设置为一个变体,而不是一个范围。

有关.value属性的更多信息,请参阅此链接: https : //msdn.microsoft.com/en-us/vba/excel-vba/articles/range-value-property-excel