如何在一个工作表中列出所有excel当前区域

时间:2017-06-15 13:06:59

标签: excel excel-vba vba

为了浏览我要求分析的复杂电子表格,我需要一个工作表中所有当前区域的列表。 Excel帮助没有给我很多线索。到目前为止,我的解决方案是使用特殊单元格函数循环区域,但速度相当慢。

Function list_all_current_regions(work_sheet)
     Dim current_region_dic As New Dictionary
     Set r = work_sheet.Cells(1, 1)
     For Each x In Array(xlCellTypeConstants, xlCellTypeFormulas)
        Set c = work_sheet.Cells(1, 1).SpecialCells(x, 23)
        For Each a In c.Areas
           If Not current_region_dic.Exists(a.CurrentRegion.Address) Then
              current_region_dic.Add a.CurrentRegion.Address, ""                  
           End If
        Next
     Next
     Set list_all_current_regions = current_region_dic

End Function

是否有更智能的方法列出工作表中的所有当前区域?

1 个答案:

答案 0 :(得分:0)

多年来,我一直避免在工作表上出现多个范围,原因就在于您提出的问题,并且当客户端给我一个设计为单个"的模型时,我将断开连接的内容移到自己的工作表上。 ubersheet"

我发现的唯一方法是使用命名范围。可以使用附加到Workbook和Worksheet对象的Names集合访问它们。

我给出的另一个提示是只使用左上角单元格中的命名范围,然后才能使用CurrentRegion属性来获取整个范围。这有助于您在扩展区域时不想进入设置和重置整个范围。

https://msdn.microsoft.com/en-us/library/office/ff196678.aspx?f=255&MSPPError=-2147217396