找到符合条件的单元格对,然后做一些excel vba

时间:2015-09-03 17:42:34

标签: excel-vba vba excel

我有一个搜索特定列中粗体字符的函数。在我的案例列C中。我想要它做的是找到包含粗体字符的单元格对,然后在第一列中搜索以查看它们之间是否存在某些东西。我知道如何从那里开始处理。我只是坚持如何找到满足条件的细胞对。

这是功能:

Function FindBoldCharacters(ByVal aCell As Range) As Boolean
    FindBoldCharacters = IsNull(aCell.Font.Bold)
    If Not FindBoldCharacters Then FindBoldCharacters = aCell.Font.Bold
End Function

以下是在代码中调用函数的方法

    For Each i In Range("C11:C300")
            If FindBoldCharacters(i) = True Then
                'do some stuff here'
                Set s = i
                s.Interior.ColorIndex = 8 '''for testing purposes''' 


            Else

            End If
    Next i

我知道它当前被调用的方式会搜索满足条件的所有单元格。我只是不知道怎么写它来停止和do something当它满足条件两次时。此外,为了使其正常工作,它必须保留两个满足条件中的第二个,否则每对之间将存在间隙。

我想向正确的方向努力。我不一定要为我编写整段代码,但如果是这样,请解释它是如何工作的。我想了解vba,而不仅仅是实现它而忘记它。

更新

基本上这就是我想要发生的事情

Results example

1 个答案:

答案 0 :(得分:0)

这是你想要做的事情

Option Explicit

Sub findBoldCells()
    Dim cel As Range, fnd1 As Long, fnd2 As Long, i As Long, cl As Long

    cl = RGB(222, 255, 255)

    For Each cel In Range("C11:C300")

        If cel.Font.Bold = True Then
            If fnd1 = 0 Then fnd1 = cel.Row Else fnd2 = cel.Row
        End If

        If fnd1 > 0 And fnd2 > 0 Then   'we found 1st and 2nd cell with bold text

            Range(Range("C" & fnd1), Range("C" & fnd2)).Interior.Color = cl

            If fnd2 > fnd1 Then
                Range("C" & fnd1).Interior.Color = vbYellow
                Range("C" & fnd2).Interior.Color = vbYellow
            End If

            For i = fnd1 To fnd2
                With Range("I" & i)
                    .Interior.Color = vbCyan 'check values in col I...
                    .Value2 = i
                End With
            Next

            fnd1 = 0: fnd2 = 0    'prepare for next iteration

        End If
    Next
End Sub

enter image description here