以文本方式查看主题 - 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 -- 相同值的行的颜色表示 老师您好, 想要做到把如附件表中,地址相同的行用同一个颜色表示出来, 需要操作的表 需要达到的目标操作状态 未必需要有很多种颜色,单至少希望能有两种,能够把事例中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 效果如下图:
[此贴子已经被作者于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 \'--------------------------------------------------------- 效果如下:
[此贴子已经被作者于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楼的完善,使之更具通用性! |