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
我有这个函数,它 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