本文于2023年6月5日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!
☆本期内容概要☆
- VBA按条件设置单元格格式
- 两种方法设置条件格式
大家好,我是冷水泡茶,今天在EXCELHOME论坛上看到一个网友求助的贴子:
附件需求是这样的:
我一看,这样的功能我们不是分享过吗?(Excel 基础功能【条件格式】,你会多少?)、(更正:Excel 基础功能【条件格式】,你会多少?)没有必要用VBA吧?于是,我这样回复:
不过,既然楼主要求用VBA,那么,这到底应该怎么做呢?方法可能有多种,我们介绍两种:
1、使用代码添加条件格式:
Sub ConditionFormat()
Dim iRow As Integer
iRow = ActiveSheet.UsedRange.Rows.Count
ActiveSheet.Range("A2:O" & iRow).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=AND($A2<>"""",$A2<>$A1)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Borders(xlTop)
.LineStyle = xlContinuous
.TintAndShade = 0
.Weight = xlThin
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
代码解析:这段代码是通过录制宏得来的,我们把设置条件格式的过程录制宏,把代码修改修改就成了。
(1)我们在录制宏的时候,选择区域是固定的,我们把它修改为动态的。
(2)先删除所有条件格式,再重新设置条件格式。
(3)在我们表格中,如果数据区域没有扩大,条件格式都是有效的,如果我们增加了数据行,我们可以执行一下这段代码重新设置条件格式。
2、通过判断条件,给符合条件的单元格画线:
Sub DrawLine()
Dim lastRow As Integer
Dim rng As Range
Dim cell As Range
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set rng = ActiveSheet.Range("A2:O" & lastRow)
For Each cell In rng
With cell.Borders
'设置所有边框为无框线
.LineStyle = xlNone
End With
Next
'循环遍历A列每个单元格,并根据条件设置顶部边框样式
For Each cell In Range("A2:A" & lastRow)
If cell.Value <> cell.Offset(-1, 0).Value And cell <> "" Then
'设置顶部边框样式为连续线条
Set rng = Range(cell.Offset(0, 0), cell.Offset(0, 14))
rng.Borders(xlEdgeTop).LineStyle = xlContinuous
End If
Next
End Sub
代码解析:这段代码参考了AI。
(1)先把A列到O列数据区域取消画线。
(2)循环A列单元格,判断单元格的值不为空,不等于上一个单元格的值,则把这个单元格所在行的A列到O列的单元格顶端画线。
我们可以在表格页面添加命令按钮执行上面两种代码,在需要的时候执行一下。
也可以在Worksheet_Activate事件中执行,即工作表激活时执行代码。
好,今天就分享到这,欢迎点赞、留言、分享,谢谢大家,我们下期再会。
☆猜你喜欢☆
Excel VBA 电子发票管理助手 | Excel VBA 凭证打印 |
Excel VBA 中医诊所收费系统 | Excel VBA 动态添加控件 |
Excel VBA 酷炫的日期控件 | Excel 固定资产折旧计提表 |
Excel VBA 数组字段定位排序 | Excel 处理重复值 |
Excel VBA 最简单的收发存登记系统 | Excel 公式函数/查找函数之LOOKUP |
Excel VBA 文件批量改名 | Excel 公式函数/动态下拉列表 |
Excel VBA 输入逐步提示 | Excel 基础功能【数据验证】 |
本文于2023年6月5日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!
本文暂时没有评论,来添加一个吧(●'◡'●)