在VBA中更改范围以选择表格的第一行

在VBA中更改范围以选择表格的第一行,vba,excel,range,Vba,Excel,Range,目前,在ExcelVBA中,我有一个简单的函数,可以从工作表的第一行读取一组值,然后在公式中使用这些值 equity(i) = Worksheets("Data").Range("D2").Offset(i - 1, 0) debt(i) = Worksheets("Data").Range("E2").Offset(i - 1, 0) riskFree(i) = Worksheets("Data").Range("F2").Offset(i - 1, 0) 我想对此进行更改,以便函数仅从工作

目前,在ExcelVBA中,我有一个简单的函数,可以从工作表的第一行读取一组值,然后在公式中使用这些值

equity(i) = Worksheets("Data").Range("D2").Offset(i - 1, 0)
debt(i) = Worksheets("Data").Range("E2").Offset(i - 1, 0)
riskFree(i) = Worksheets("Data").Range("F2").Offset(i - 1, 0)
我想对此进行更改,以便函数仅从工作表上突出显示的选择中读取值。因此,如果我从第20行开始的数据中选择一个值表,它应该读取D20、E20、F20等,而不是现在设置的D2、E2和F2。我试过:

equity(i) = Worksheets("Data").Range("D" & Rows.Count).end(xlUp).Offset(i - 1, 0)
debt(i) = Worksheets("Data").Range("E" & Rows.Count).end(xlUp).Offset(i - 1, 0)
riskFree(i) = Worksheets("Data").Range("F" & Rows.Count).end(xlUp).Offset(i - 1, 0)
但是没有运气。我做错了什么

到目前为止,我所拥有的是这样的

Function VarunModel(Table As Range, Optional EndCondition As Integer = 0) As Variant


Dim iNumCols As Integer, iNumRows As Integer
Dim i As Integer


iNumCols = Table.Columns.Count
iNumRows = Table.Rows.Count

maturity = Worksheets("KMV-Merton").Range("B2").Value
For i = 1 To iNumRows
equity(i) = Worksheets("Data").Range("D2").Offset(i - 1, 0)
debt(i) = Worksheets("Data").Range("E2").Offset(i - 1, 0)
riskFree(i) = Worksheets("Data").Range("F2").Offset(i - 1, 0)
Next I

如果在传递D20:F50范围时需要D20中的值,只需将D20:F50范围视为其自身的单元格子集;就像一个微型的独立工作表

with Worksheets("Data")
    equity(i) = .Range("D20:F50").Range("A1").Value    '◄ D20
    debt(i) = .Range("D20:F50").Cells(1, 2).Value      '◄ E20
    riskFree(i) = .Range("D20:F50").Range("C3").Value  '◄ F22
end with
处理已隔离的单元格区域时,所有区域和单元格引用都是相对于单元格区域的;e、 g.A1是左上角的单元格。写上述内容的另一种方式是

with Worksheets("Data").Range("D20:F50")
    equity(i) = .Range("A1").Value    '◄ D20
    debt(i) = .Cells(1, 2).Value      '◄ E20
    riskFree(i) = .Range("C3").Value  '◄ F22
end with

如果在传递D20:F50范围时需要D20中的值,只需将D20:F50范围视为其自身的单元格子集;就像一个微型的独立工作表

with Worksheets("Data")
    equity(i) = .Range("D20:F50").Range("A1").Value    '◄ D20
    debt(i) = .Range("D20:F50").Cells(1, 2).Value      '◄ E20
    riskFree(i) = .Range("D20:F50").Range("C3").Value  '◄ F22
end with
处理已隔离的单元格区域时,所有区域和单元格引用都是相对于单元格区域的;e、 g.A1是左上角的单元格。写上述内容的另一种方式是

with Worksheets("Data").Range("D20:F50")
    equity(i) = .Range("A1").Value    '◄ D20
    debt(i) = .Cells(1, 2).Value      '◄ E20
    riskFree(i) = .Range("C3").Value  '◄ F22
end with

谢谢你的回答。对不起,我不清楚-请查看编辑。谢谢回答。对不起,我不清楚-请查看编辑。谢谢回答。对不起,我不清楚-请查看编辑。