首页 > 解决方案 > 如何将范围定义为变量以用作 Excel 工作表函数的参数?

问题描述

我正在尝试在我的 vba 代码中使用 excel 工作表 Forecast() 函数。Forecast() 函数需要两个范围作为参数。我想使用一个变化的范围作为这个函数的输入,所以我不能定义一个静态范围作为输入(例如 B2:B10)。

For i = 1 To DailySize
        n = i + 1
        ForecastHours(i) = Cells(n, 4).Value
        ProgramDays(i) = Cells(n, 1).Value
    Next i    
For i = Start To ForecastSize
        Worksheets("Data Inputs").Cells(i, 5).Formula = "=Forecast(" & Worksheets("Data Inputs").Cells(i, 1) & ","ForecastHours","ProgramDays")"
    Next i

第一个 for 循环定义了两个数组,ForecastHours 和 ProgramDays,它们的大小根据变量 DailySize 改变。如果我可以使这两个数组范围成为我正在徘徊,以便它们可以成为第二个 for 循环中 Forecast() 函数的输入。

我现在收到第二个 for 循环的语法错误,可能是因为我试图将数组用作输入而不是范围。任何帮助将不胜感激,谢谢!

标签: excelvba

解决方案


跳过循环并将变量声明为范围并使用它们的地址:

Dim ProgramDays As Range
Dim ForecastHours As Range

Set ProgramDays = Range("A1:A" & DailySize)
Set ForecastHours = Range("D1:D" & DailySize)

Worksheets("Data Inputs").Range("E" & Start & ":E" & ForecastSize + Start - 1).Formula = _
    "=forecast(" & Worksheets("Data Inputs").Cells(Start, 1).Address(0, 0) & "," & ForecastHours.Address(1, 1) & "," & ProgramDays.Address(1, 1) & ")"

推荐阅读