周一至周五 : 08:30 - 17:30 客服专员电话/微信:17301649370 QQ:2902102332
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
明细表高亮聚光灯
显示全部楼层 倒序浏览 发表日期 2020-03-05 09:46:17 4033次阅读 7次回复
本帖最后由 hessen 于 2020-3-6 08:20 编辑

明细表聚光灯

功能说明:

点击明细表单元格时,高亮显示当前单元格所在的明细表区域内的行列。


支持版本:

企业版7.0以上


效果:

20200305093520.png

VBA:

  1. <font color="rgb(68,68,68)">Imports SpreadsheetGear
  2. Imports C1.Silverlight
  3. Imports C1.Silverlight.C1MessageBoxButton
  4. Imports C1.Silverlight.C1MessageBoxIcon
  5. Imports Newtonsoft.Json
  6. Imports Newtonsoft.Json.Linq
  7. Imports System.Windows.forms
  8. Namespace ExcelViewVBDotnet
  9.    Public Class StandardInterface
  10.        '预留位置1
  11.        '预留位置2
  12.        Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
  13.            Dim TN As String = "T_44"'设置明细表名
  14.            Dim srbc As String = "",srbd As String = ""'记录选择行列的地址及颜色值便于还原
  15.        Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
  16.            EV = Excel
  17.            Excel.GetLock()
  18.            AW = Excel.ActiveWorkbook
  19.            Range = AW.ActiveWorksheet.Range
  20.            Excel.ReleaseLock()
  21.        End Sub'打开时执行事件

  22.        Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)
  23.                         ev.GetLock()
  24.                         '分隔记录的地址及颜色
  25.                         Dim srbcs() As String = srbc.Split(",".ToCharArray())
  26.                         Dim srbds() As String = srbd.Split(",".ToCharArray())
  27.                         Dim i As Integer = 0
  28.                         '遍历还原单元格颜色
  29.                         For i = 0 To srbcs.Length - 1
  30.                                 Dim ra As String = srbcs(i)
  31.                                 Dim rc As String = srbds(i)
  32.                                 If String.Equals(ra,"") = False Then
  33.                                         Dim rgb() As String = rc.Split(".".ToCharArray())
  34.                                         range(ra).Interior.Color = Color.FromArgb(Integer.Parse(rgb(0)),Integer.Parse(rgb(1)),Integer.Parse(rgb(2)))
  35.                                 End If
  36.                         Next
  37.                         '判断选择的是明细表
  38.                         If Range(TN).Intersect(e.RangeSelection) IsNot Nothing Then
  39.                                 Dim SR As Integer = range(TN).row
  40.                                 Dim CR As Integer = range(TN).column
  41.                                 Dim SI As Integer = e.RangeSelection.Row - SR
  42.                                 Dim CI As Integer = e.RangeSelection.Column - CR
  43.                                 Dim RC As Integer = range(TN).RowCount - 1
  44.                                 Dim CC As Integer = range(TN).ColumnCount - 1
  45.                                 Dim SA As String = Range(TN).Cells(SI,0).Address + ":" + Range(TN).Cells(SI,CC).Address
  46.                                 Dim CA As String = Range(TN).Cells(0,CI).Address + ":" + Range(TN).Cells(RC,CI).Address
  47.                                 srbc = ""
  48.                                 srbd = ""
  49.                                 '设置聚光灯前先记录原行列所有单元格的颜色
  50.                                 For Each cell As IRange In Range(SA)
  51.                                         srbc += cell.Address+","
  52.                                         srbd += cell.Interior.Color.R.ToString() + "." + cell.Interior.Color.g.ToString() + "." +cell.Interior.Color.b .ToString + ","
  53.                                 Next
  54.                                 For Each cell As IRange In Range(CA)
  55.                                         srbc += cell.Address+","
  56.                                         srbd += cell.Interior.Color.R.ToString() + "." + cell.Interior.Color.g.ToString() + "." +cell.Interior.Color.b.ToString +","
  57.                                 Next                                
  58.                                 '设置聚光灯行颜色
  59.                                 range(SA).Interior.Color = Color.FromArgb(255,255,204)
  60.                                 '设置聚光灯列颜色
  61.                                 range(CA).Interior.Color = Color.FromArgb(255,255,204)
  62.                         End If
  63.                         ev.ReleaseLock()
  64.        End Sub'单元格选择后执行的事件

  65.        Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs)

  66.        End Sub'单元格编辑完成后执行事件

  67.        Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)

  68.        End Sub'按钮/标签点击事件

  69.        Public Sub FollowHyperlink(sender As Object)

  70.        End Sub '暂不支持

  71.    End Class
  72. '  注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
  73. End Namespace
  74. </font>
复制代码



电话/微信:18049989370 QQ:857188287
这个真心不错,很实用,否则太容易串行了,条件格式的颜色太深了不好用
这种高亮聚光灯,可以做成随鼠标移动的效果吗?
kane_yao 发表于 2021-7-9 09:13
这种高亮聚光灯,可以做成随鼠标移动的效果吗?

RangeSelection事件中写的,活动单元格变动时显示。
电话/微信:18049989370 QQ:857188287
kane_yao

2021-7-9 15:27:42

hessen 发表于 2021-7-9 13:35
RangeSelection事件中写的,活动单元格变动时显示。

你这个例子本来就是单元格选择事件吧?
如果要做到我说的种样子,要用到鼠标移动事件+计时器吧?
hessen

2021-7-9 17:00:59

不支持此事件
电话/微信:18049989370 QQ:857188287
kane_yao

2022-4-19 10:38:33

用快表VBA做这个,在选行列时,会多次触发单元格编辑事件,能在执行的开头写入禁止编辑单元格事件吗?
就如命令树中的这个功能!

精彩评论7

这个真心不错,很实用,否则太容易串行了,条件格式的颜色太深了不好用
这种高亮聚光灯,可以做成随鼠标移动的效果吗?
kane_yao 发表于 2021-7-9 09:13
这种高亮聚光灯,可以做成随鼠标移动的效果吗?

RangeSelection事件中写的,活动单元格变动时显示。
电话/微信:18049989370 QQ:857188287
kane_yao

2021-7-9 15:27:42

hessen 发表于 2021-7-9 13:35
RangeSelection事件中写的,活动单元格变动时显示。

你这个例子本来就是单元格选择事件吧?
如果要做到我说的种样子,要用到鼠标移动事件+计时器吧?
hessen

2021-7-9 17:00:59

不支持此事件
电话/微信:18049989370 QQ:857188287
kane_yao

2022-4-19 10:38:33

用快表VBA做这个,在选行列时,会多次触发单元格编辑事件,能在执行的开头写入禁止编辑单元格事件吗?
就如命令树中的这个功能!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |