VBA:Excel选中单元格后,相同值高亮显示

VBA:Excel选中单元格后,相同值高亮显示

场景

在Excel数据核对中,要检查同样的数据在表格里是否重复出现,可以利用重复值筛选的方式,但是重复值筛选这个相对来说是比较静态的,如果想要动态地显示重复值,就可以借助VBA里的SelectionChange 函数,动态高亮显示重复值。

代码释义

首先是完整的函数代码

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim rng As Range
If Target.Count = 1 And Target <> "" Then
   Cells.Interior.ColorIndex = -4142
   For Each rng In UsedRange
       If rng = Target.Value Then
          rng.Interior.ColorIndex = 44
       End If
   Next
End If
End Sub

接着来看每一条代码的具体含义:
1.首先函数定义

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
...
End Sub

Byval 的意思是 定义的形式参数“ 按值传递”,若为Byref,则是形式参数“按地址传递”

2.定义触发函数的条件

If Target.Count > 1 Then Exit Sub
...
End Sub

这句意思是当选中的单元格超过1个,就是退出这个函数,即Exit Sub

3.定义执行参数

Dim rng As Range

Dim用于变量声明。定义rng为一个Range,Range可表示一个单元格、一行、一列或者包含一个或多个连续单元格块的选择

4.定义条件

If Target.Count = 1 And Target <> "" Then

当选中的单元格为1个,且(AND代表条件“与”)选中单元格值不为空(“<>”表示不等于),执行下列语句

Cells.Interior.ColorIndex = -4142

Interior是对象的内部属性,“.”类似于C++中的访问,这句的意思是赋予选中的单元格的ColoerIndex属性值-4142
那**-4142**是什么呢?
这里要做一个展开。

这张图中的右边的特殊数字是在一定场景中代表左边的属性的。比如上面代码中的“-4142”,在此处代表的是xlNone,意思是没有,xl就是excel,none就是无。
在这里插入图片描述
所以这句代码的意思就是选中这个单元格颜色属性为无。

5.编写循环体
循环部分的代码是

   For Each rng In UsedRange
       If rng = Target.Value Then
          rng.Interior.ColorIndex = 3
       End If
   Next

UsedRange属性是工作表的属性,它指的是工作表中已经使用过、编辑过的单元格区域。
所以第一句的意思是定义的rng是循环的变量,每次循环后增加1,使用过、编辑过的单元格区域遍历循环。

下面两句就是,如果循环到当前单元格,与目标单元格的内容一致,就将当前的单元格的颜色参数置为44,即橙色。

       If rng = Target.Value Then
          rng.Interior.ColorIndex = 44

然后就是,有If 就要有 End If,我自己把它理解成C++的结束花括号。
Next就代表下次循环执行,再跳到For语句处

扩展一下,Excel常用颜色代码
在这里插入图片描述

Excel中实际执行效果

在开发工具中打开Visual Basic
在这里插入图片描述
在这里插入图片描述
在下拉框中选中worksheet 以及SelectionChange函数。
在这里插入图片描述
然后把代码贴进去,CV大法。然后最后重要的是要保存 Ctrl+S在这里插入图片描述
然后就可以用了。执行效果就像下面这个动图:
在这里插入图片描述
以上。

  • 12
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VBA Excel中,可以使用Range对象的Value属性来获取单元格。例如,要获取A1单元格,可以使用以下代码: ```vba Dim cellValue As Variant cellValue = Range("A1").Value ``` 在这个例子中,将A1单元格存储在变量cellValue中。你可以根据需要将其用于其他操作或输出。 引用\[3\]中提到,单元格对象的Value属性为单元格实际存储的。当单元格中存有公式时,Value属性为公式运行后的结果。因此,如果A1单元格中包含公式,那么获取的将是公式运行后的结果。 请注意,这只是获取单个单元格的方法。如果你需要获取多个单元格,可以使用循环结构来遍历单元格范围并逐个获取,就像引用\[1\]和引用\[2\]中的示例代码一样。 #### 引用[.reference_title] - *1* *2* [excelVBA获取指定单元格内容](https://blog.csdn.net/u010719791/article/details/121526472)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Excel 2010 VBA 入门 026 读取单元格和显示的](https://blog.csdn.net/ngbshzhn/article/details/115398153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值