2017-08-03 139 views
1

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

这是我的代码。我刚刚开始使用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 

回答

0

看起来像一个语法错误。尝试放下monthtotal上的.value

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 

如果你想获得一定范围内的值到一个变量,你把.value与范围,而不是变量。例如:

x = cells(1,2).value 

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

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