excel 我如何使一个宏理解一行是突出显示在不同的选项卡

6pp0gazn  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(98)

我想知道这是否可行--基本上,我有一个Excel工作簿,里面有几个选项卡,每个选项卡都有一个已收付款的分期偿还计划。当一笔付款进来时,我转到选项卡,选择当月付款的行,并将其高亮显示为绿色,以表示已收。一旦我们有超过25笔左右的不同付款进来,手动地一个一个标签地浏览工作簿,突出显示该月的付款,这将是很乏味的。我想知道如何创建一个按钮,基本上只是说“每个人都支付了这个月”,例如,点击它会运行一个宏,突出显示每个工作表上最低突出显示行下面的一行。
我试过创建宏,但由于付款是在不同的时间点在生活中的还款,它不是那么简单,只是有它总是突出显示“行10”,例如,然后“行11”下个月-我需要它找到最低突出显示行,然后突出显示下一行。

x0fgdtte

x0fgdtte1#

  • 找到最后一个彩色行并在下一行设置highlight
Option Explicit

Sub HightlightRow()
    Dim c As Range, Sht As Worksheet, iRow As Long
    With Application.FindFormat.Interior
        .PatternColorIndex = xlAutomatic
        .Color = vbGreen ' modify as needed
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    For Each Sht In Worksheets
        Set c = Sht.Cells.Find(What:="", After:=Sht.Range("A1"), _
            LookIn:=xlFormulas2, LookAt:=xlPart, SearchOrder:=xlByRows, _
            SearchDirection:=xlPrevious, MatchCase:=False, MatchByte:=False, _
            SearchFormat:=True)
        If c Is Nothing Then
            iRow = 2  ' the first data row, skip header
        Else
            iRow = c.Row + 1 ' next row
        End If
        Set c = Application.Intersect(Sht.Rows(iRow), Sht.UsedRange)
        If Not c Is Nothing Then
            c.Interior.Color = vbGreen
        End If
    Next
End Sub

字符串


的数据

4jb9z9bj

4jb9z9bj2#

例如,您在第一行中有一个状态=颜色的图例:单元格A1 -付款完成,B1-付款未完成等。然后您通过宏选择范围并检查范围内的所有单元格是否以您需要的颜色突出显示,如下所示:

Sub Check_Payments()
Dim StatusColour as Variant, count1 as Long, sRange as Range, count as Long
StatusColour=Cells(1,1).Interior.Color'pick the status color from the legend 
Set sRange=ActiveSheet.Range(<range need to check, for example"A2:A10">) 
count1=0
count=0
For Each x in sRange
count=count+1
If x.Interior.Color=StatusColour Then count1=count1+1'check if the highlight of the cell is the status color
Next x
If count1=count1 Then MsgBox "All paid" Else MsgBox "Some assholes didn't pay"
End Sub

字符串

相关问题