以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  相同值的行的颜色表示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116838)

--  作者:jackchan120925
--  发布时间:2018/4/1 10:46:00
--  相同值的行的颜色表示
老师您好,
想要做到把如附件表中,地址相同的行用同一个颜色表示出来,

需要操作的表

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180401104207gggggg.png
图片点击可在新窗口打开查看

需要达到的目标操作状态

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180401104115zzzzzz.png
图片点击可在新窗口打开查看

未必需要有很多种颜色,单至少希望能有两种,能够把事例中C和E这样相邻的用不同的颜色来区分开来

谢谢


[此贴子已经被作者于2018/4/1 10:46:23编辑过]

--  作者:wyz20130512
--  发布时间:2018/4/1 11:28:00
--  
Dim paint As Boolean
With Tables("进项税")
    .Sort = "销售方"
    For i As Integer = 1 To .Rows.Count -1
        If .Rows(i)("销售方") <> .Rows(i-1)("销售方") Then
            paint = Not paint
        End If
        If paint Then
            .SetHeaderCellBackColor("销售方",Color.Cyan,i+1)
        Else
            .SetHeaderCellBackColor("销售方",Color.Orchid,1)
            .SetHeaderCellBackColor("销售方",Color.Orchid,i+1)
        End If
    Next
End With

效果如下图:

图片点击可在新窗口打开查看此主题相关图片如下:交替染色.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/4/1 11:59:13编辑过]

--  作者:shenyl0211
--  发布时间:2018/4/1 12:41:00
--  
顶2楼,很实用,更易区分内容,建议列入帮助。
按2楼修改的通用代码:
Dim paint As Boolean
Dim cname As String =CurrentTable.Cols(CurrentTable.ColSel).name
With CurrentTable
    .Sort = cname ’ 或降序:.Sort = cname & " desc"
    For i As Integer = 1 To .Rows.Count -1
        If .Rows(i)(cname) <> .Rows(i-1)(cname) Then
            paint = Not paint
        End If
        If paint Then
            .SetHeaderCellBackColor(cname,Color.Cyan,i+1)
        Else
            .SetHeaderCellBackColor(cname,Color.Gold,1) ‘换一种底色
            .SetHeaderCellBackColor(cname,Color.Gold,i+1)
        End If
    Next
End With
[此贴子已经被作者于2018/4/1 12:43:16编辑过]

--  作者:WELOVEFOX
--  发布时间:2018/4/1 12:57:00
--  
如果列名有带有 "_" ,即带有换行显示的列名,显示效果出错
--  作者:wyz20130512
--  发布时间:2018/4/1 13:12:00
--  回复:(WELOVEFOX)如果列名有带有 "_" ,即带有换行显...
修改i的初始值即可! 

[此贴子已经被作者于2018/4/1 13:45:51编辑过]

--  作者:jackchan120925
--  发布时间:2018/4/1 13:15:00
--  
非常感谢,测试了一下,指定的列可以实现颜色分配。但如果希望能把颜色扩展到整个一行,该如何呢?
--  作者:wyz20130512
--  发布时间:2018/4/1 13:45:00
--  回复:(jackchan120925)非常感谢,测试了一下,指定...
\'--------------------交替染色------------------------------
Dim paint As Boolean
With Tables("进项税")
    .Sort = "销售方"
    For i As Integer = 1 To .Rows.Count -1
        If .Rows(i)("销售方") <> .Rows(i-1)("销售方") Then
            paint = Not paint
        End If
        If paint Then
            For Each c As Col In .Cols
                .SetHeaderCellBackColor(c.Name,Color.Cyan,i+1)
            Next
        Else
            For Each c As Col In .Cols
                .SetHeaderCellBackColor(c.Name,Color.Orchid,1)
                .SetHeaderCellBackColor(c.Name,Color.Orchid,i+1)
            Next
        End If
    Next
End With
\'---------------------------------------------------------

效果如下:

图片点击可在新窗口打开查看此主题相关图片如下:交替染色02.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/4/1 13:50:17编辑过]

--  作者:jackchan120925
--  发布时间:2018/4/1 13:54:00
--  
非常感谢,我研究下。我看截图,你是自己做了个财务系统么?
--  作者:wyz20130512
--  发布时间:2018/4/1 14:17:00
--  回复:(jackchan120925)非常感谢,我研究下。我看截...
在2楼的基础上,遍历所有列即可!
截图是我的测试数据。自己做的一个辅助报税的小东东。
[此贴子已经被作者于2018/4/1 14:18:46编辑过]

--  作者:wyz20130512
--  发布时间:2018/4/1 14:20:00
--  回复:(shenyl0211)顶2楼,很实用,更易区分内容,建...
感谢3楼的完善,使之更具通用性!