|
楼主 |
发表于 2008-11-18 15:42
|
显示全部楼层
2、高亮显示当前行
用条件格式设置高亮显示当前行,难的是如何确定当前行。用VBA就很简单,鼠标右击工作表标签,选择“查看代码”,将下面的代码粘贴到VBE窗口中:- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- ThisWorkbook.Names.Add "XM", Target
- End Sub
复制代码 这几行代码的作用是,当选择新的单元格时,将这个单元格(或者区域)定义为名称“XM”,在条件格式设置中可以引用这个名称。
如下面的附件,将代码粘贴完成后,返回工作表中,选择A4:I15,点击菜单“格式—条件格式”,设置:
公式1:=(A4<>"")*(A4=XM)
(如果A4不为空,并且A4等于XM)
公式2:=ROW()=ROW(XM)
(如果当前的行号等于XM的行号)
考场安排.zip
(8.93 KB, 下载次数: 3646)
练习:
试为附件中的考勤表设置条件格式,高亮显示当前行和列。
考勤表.zip
(10.86 KB, 下载次数: 2613)
原帖由 xpm130 于 2008-11-19 21:02 发表 (23楼)
山版好,请您讲讲2楼高亮显示单元行中利用下面代码
ThisWorkbook.Names.Add "XM", Target定义名称的方法与结果与在工作表单元区域进行定义有什么不同之处好吗.我查看起来有点迷糊.
还有,当选中B6时出现如下情形,好像 ...
用代码定义名称,我们需要它的即时更新,鼠标点到什么,这个名称“XM”就更新什么。
例如,当鼠标点击F7单元格,XM便等于F7,ROW(XM)=7,设置条件格式的区域中,凡是Row()等于7(说白了就是第7行)的单元格便显示背景色。
用手工定义也可得到相同的效果,可以试试。然后比较一下,用代码的好处是什么。
当选中B6单元格时有不一样的情况出现,是因为区域中设置了两个条件格式,它符合第一个条件便显示第一种格式,符合第二个条件便显示第二个格式。
点击菜单“格式—条件格式”可看清楚。
原帖由 pxjxdsj 于 2008-12-1 14:53 发表 (98楼)
初学有一个问题?能否把 高亮显示单元格 做成 自动起动的宏,让用户的鼠标单击工作表的某一个单元格后,相应的行和列都显示一种 或者 两种背景色!
直接用VBA设置背景色,做法如下:
鼠标右键点击工作表标签,选择“查看代码”,将下面代码粘贴到光标处:- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- Dim Rng As Range
- Set Rng = Target.Range("a1")
- Cells.Interior.ColorIndex = 0 '清除所有背景色
- Rng.EntireColumn.Interior.ColorIndex = 40 '设置当前列颜色
- Rng.EntireRow.Interior.ColorIndex = 36 '设置当前行颜色
- End Sub
复制代码 其中40、36为颜色索引号,不同的数值代表不同的颜色,对应索引如下:
示例:
高亮显示当前行列.zip
(8.29 KB, 下载次数: 1929)
原帖由 zjyhljx 于 2009-2-16 17:39 发表 (259楼)
如果工作簿中的每张工作表都有相同效果,应该怎么做?
按Alt+F11打开VBE编辑器,在工程管理器中双击模块“ThisWorkbook”,将下面的代码粘贴到光标处:- Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
- Dim Rng As Range
- Set Rng = Target.Range("a1")
- Cells.Interior.ColorIndex = 0 '清除所有背景色
- Rng.EntireColumn.Interior.ColorIndex = 40 '设置当前列颜色
- Rng.EntireRow.Interior.ColorIndex = 36 '设置当前行颜色
- End Sub
-
复制代码 如下图所示:
为所有工作表设置高亮背景色.zip
(6.64 KB, 下载次数: 1092)
原帖由 Magic_sh 于 2009-2-20 12:58 发表 (274楼)
山菊花楼主,你好!
关于之前有人问到的关于高亮显示行和列的问题,你提供的VBA代码如下,但我现在碰到点问题,发现使用了这个代码后,表中的“复制”和“拷贝”功能就被禁止了,不知有无办法可以解决?谢谢!
可在代码第二行(清除颜色之前就行)插入一行代码:
If Application.CutCopyMode Then Exit Sub ’如果处于选取状态则退出程序- Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
- If Application.CutCopyMode Then Exit Sub '如果处于选取状态则退出程序
- Dim Rng As Range
- Set Rng = Target.Range("a1")
- Cells.Interior.ColorIndex = 0 '清除所有背景色
- Rng.EntireColumn.Interior.ColorIndex = 40 '设置当前列颜色
- Rng.EntireRow.Interior.ColorIndex = 36 '设置当前行颜色
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|