使用展开或折叠选项检查是否存在excel行

时间:2015-12-01 04:37:42

标签: excel-vba vbscript vba excel

在循环浏览VBA中的Excel文件中的行时,是否可以确定该行是否使用展开和折叠选项进行分组?

使用下面的图像作为示例,如果脚本循环使用下面的Excel工作表作为输入,我需要能够确定是否对第7,9,13和21行进行了分组(具有展开和折叠选项)。

关于如何实现这一目标的任何想法?

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用的是:

'r would be the row position
Rows(r).OutlineLevel

如果它将返回行轮廓级别的值,如图像左侧的1 2 3列中所示。

修改

在此comment中包含来自OP的要求,需要忽略具有Totals的行,可以包含以下脚本:

'r being the row and 1 refering to Column 1 which is Column A
SearchString = Cells(r, 1)

If InStr(1, SearchString, "Total") > 0 Then

  'Insert Script here to do what you need to do to skip the row

Else

  'Insert script here to execute on the rows which are not totals


End If

答案 1 :(得分:0)

每行都有.outlineLevel属性,告诉您应用的分组级别。在我的示例中,您可以看到sub循环指定的行数和打印在所选范围内的每一行上应用的分组数。 没有分组的行有outlineLevel 1

    Sub isGrouped()
    Dim targetSheet As Worksheet
    Set targetSheet = Sheets("nameYourSheet")

    Dim rowCounter As Long

    With targetSheet
        For rowCounter = 1 To 50
            Debug.Print .Rows(rowCounter).OutlineLevel

        Next rowCounter
    End With

End Sub