【发布时间】:2019-06-26 16:27:55
【问题描述】:
我正在尝试动态设置范围。但是,我遇到了一些错误:
赋值左侧的函数调用必须返回 Variant 或 Object。
Sub calDailyGC()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim Rng As Range
numGC = Cells(46, 7).Value
numDays = Cells(47, 7).Value
Debug.Print numGC
Debug.Print numDays
For k = 3 To numDays + 1
Set Rng = Range(Cells(k, 12), Cells(k, 9999))
sumRate = 0
For j = 1 To numGC
rate = Application.WorksheetFunction.Large(Rng, j)
sumRate = sumRate + rate
Next j
avgGCRate = sumRate / numGC
Next k
Debug.Print avgGCRate
End Sub
【问题讨论】:
-
k没有定义,所以k是0并且行0不存在所以Cells(k, 12)失败。您图片中的代码不是您问题中的代码!清楚我们在说什么。 • 还要指定您的单元格和范围在哪个工作表中类似于Worksheets("Sheet1").Range(…),否则Excel 无法知道并猜测(并且可能猜测错误)。 • 如果你转ScreenUpdating = False,别忘了最后转True。Calculation = xlCalculationManual也是如此,您可能希望将其转回自动模式。 -
确保你使用
Option Explicit并正确声明所有你的变量。 -
@Pᴇʜ 感谢您的帮助!我在更新的代码中解决了你的一些 cmets。我遇到了一个新问题......
-
错误在哪一行?请考虑我在 cmets 中提到的其他问题。所有这些对于生成可靠的代码都非常重要。
-
请为每个范围对象指定工作簿和工作表。否则 VBA 将引用活动工作簿和 -sheet