Excel VBA 使用函数返回的范围

Excel VBA using Range returned from Function

我有这个函数,它 return 是一个范围:

Private Function getInvestorsCompanyRange()
    Dim companyStart As range
    Dim lastRow As range
    If Len(Trim(investorsCompanyRange.value)) = 0 Then
             getInvestorsCompanyRange = range("A1")
    Else
            Set lastRow = investorsCompanyRange.End(xlDown)
             getInvestorsCompanyRange = range(investorsCompanyRange, lastRow)
    End If
End Function

以及根据我在表单中的组合框从该范围获取正确值的函数:

Private Sub cmbNoteName_Change()
    Dim investorsRange As range
    Set investorsRange = getInvestorsCompanyRange

    lblNoteCompany.Caption = investorsNameRange.Rows.Offset(cmbNoteName.ListIndex).value
End Sub

我一直需要获取对象。我知道 getInvestorsCompanyRange return 是正确的范围,因为当我尝试将它分配给组合框列表时 - 它显示了正确的值。

您没有使用 Set 从函数中分配 return 值:如果没有 Set(并且因为您没有指定函数的 return 类型),您将改为 return 范围的 而不是范围本身。

Private Function getInvestorsCompanyRange() As Range
    Dim companyStart As range
    Dim lastRow As range
    If Len(Trim(investorsCompanyRange.value)) = 0 Then
            Set getInvestorsCompanyRange = Range("A1")
    Else
            Set lastRow = investorsCompanyRange.End(xlDown)
            Set getInvestorsCompanyRange = Range(investorsCompanyRange, lastRow)
    End If
End Function