如何将excel的范围存储到Range变量中?

Pri*_*kar 8 excel vba excel-vba

我正在使用VBA阅读一些excel单元格.

Function getData(currentWorksheet as Worksheet, dataStartRow as Integer, _
dataEndRow as Integer, DataStartCol as Integer, dataEndCol as Integer)

    Dim dataTable as Range
    dataTable = currentWorksheet.Range(currentWorksheet.Cells(dataStartRow, _
    dataStartCol), currentWorksheet.Cells(dataEndRow, dataEndCol))

    getData = dataTable

EndFunction
Run Code Online (Sandbox Code Playgroud)

它抛出错误,对象变量或未设置块变量.如何在变量中取这个范围?请指导我.

end*_*and 23

使用Range对象时,不能简单地使用以下语法:

Dim myRange as Range
myRange = Range("A1")  
Run Code Online (Sandbox Code Playgroud)

您必须使用set关键字来分配Range对象:

Function getData(currentWorksheet As Worksheet, dataStartRow As Integer, dataEndRow As Integer, DataStartCol As Integer, dataEndCol As Integer)

    Dim dataTable As Range
    Set dataTable = currentWorksheet.Range(currentWorksheet.Cells(dataStartRow, DataStartCol), currentWorksheet.Cells(dataEndRow, dataEndCol))

    Set getData = dataTable

End Function

Sub main()
    Dim test As Range

    Set test = getData(ActiveSheet, 1, 3, 2, 5)
    test.select

End Sub
Run Code Online (Sandbox Code Playgroud)

请注意,每次声明范围时,我都会使用Set关键字.


您也可以允许getData函数返回一个Range对象而不是一个对象,Variant尽管这与您遇到的问题无关.