如何使用CurrentRegion属性(vba)扩展范围变量?

时间:2017-05-19 21:40:30

标签: vba range

范围变量使用以下代码扩展:

Option Explicit
Function ESTENDISELEZIONE(Area As Range) As Range
    Set ESTENDISELEZIONE = Range(Area, Area.End(xlDown))
End Function

但它没有延伸:

Option Explicit
Function ESTENDISELEZIONE(Area As Range) As Range
    Set ESTENDISELEZIONE = Range(Area, Area.CurrentRegion)
End Function

并且:

Option Explicit
Function ESTENDISELEZIONE(Area As Range) As Range
    Set ESTENDISELEZIONE = Area.CurrentRegion
End Function

该程序扩展了范围!

Sub EXTENDSELECTION()
    Selection.CurrentRegion.Select
End Sub

有人可以帮助我吗?

我在这个问题上添加了一个例子。

在单元格中:

=CONTA.SE(ESTENDISELEZIONE(B2);"Orange")

在公式中:

Option Explicit
Function ESTENDISELEZIONE(Area As Range) As 
Range
    MsgBox(Area.Address)
    Set ESTENDISELEZIONE = Area.CurrentRegion
    MsgBox(ESTENDISELEZIONE.Address)
End Function

1 个答案:

答案 0 :(得分:2)

CurrentRegion对象的Range属性无法在 UDF 中使用。

尝试没有多大意义,因为它会导致无法解决的问题。想象一下,您在电子表格中更改了单元格C6 - 包含=CONTA.SE(ESTENDISELEZIONE(B2);"Orange")的单元格将不会重新计算(因为它不依赖于单元格C6),这意味着您开始在工作表中获取不一致的数据。

注意:如果仅用作普通Function,您的代码就可以正常工作。只有在用作UDF时才会出现问题。