我正在尝试通过VBA根据Excel中的格式对行进行分组,并且在谷歌搜索时,发现了一个2005年的论坛帖子,其中提出了类似的问题。
用户发布的代码非常适合选择行,但我无法获得实际分组行的代码。
代码:
Sub GetSameFormattedRange()
Dim c As Range, r As Range, e As Range
Set e = Intersect(ActiveSheet.UsedRange, Columns(1))
SetFormatData
Set c = e.Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
Set r = c
firstAddress = c.Address
Do
Set r = Union(r, c)
Set c = e.FindNext(After:=c)
If Not c Is Nothing Then
If c.Address = firstAddress Then Exit Do
End If
Loop While Not c Is Nothing
End If
If Not r Is Nothing Then
MsgBox r.Address
End If
Application.FindFormat.Clear
End Sub
Sub SetFormatData()
Application.FindFormat.Clear
Application.FindFormat.Interior.Color = vbRed
Application.FindFormat.Locked = True
Application.FindFormat.FormulaHidden = False
End Sub
在我的情况下,Application.FindFormat.Interior.Color = vbRed
将为Application.FindFormat.IndentLevel = 1
谢谢!
答案 0 :(得分:0)
这可能不适合你,但我实际上今天早些时候做了类似的事情,我根据.Interior.Pattern对项目进行了分组,这也适用于.Interior.Color:
Dim i as Integer
For i = 2 to 10
If Cells(i,1).Interior.Pattern=xlSolid Then
Rows(i).EntireRow.Group
Else
End If
Next i
需要注意的是,每一行都会被分组,如果后续行也分组,那么它们就会配对,从而增加了分组行的总长度。如果有休息,它会开始一个新的分组。