Excel 2010 VBA 入门 035 利用VBA程序定义条件格式 | 您所在的位置:网站首页 › excel中设置是与否条件选择 › Excel 2010 VBA 入门 035 利用VBA程序定义条件格式 |
VBA条件格式的原理
利用VBA实现条件格式设置的过程并不像在Excel工作表中设置单元格条件格式那样方便。在VBA中,对于批量操作,通常需要用循环结构逐个进行。 此处,初学者一般能够掌握为满足条件的数据设置颜色的语句,但是比较容易忽略未满足条件时的设置语句。在设置条件格式时,实质上包含了两个不同的操作步骤,满足条件设置一种格式,而不满足条件则设置另一种格式,两者缺一不可,反之会造成运行结果的不正确。 表示整行数据的方法本例中,需要为整行数据设置单元格格式。通常,可以有几种方法表示某个区域,比较容易想到的是以下形式: Range("A5:C5")行号RowN需要用变量表示,则为 Range("A" & RowN & ":C" & RowN)该表示方法是可行的,但是在众多的文本连接的过程中比较容易出错,而且代码阅读也会造成一些困扰。可以采用Columns结合Rows的方法进行表示,首先用Columns("A:C”)表示A:C列,然后用Rows (RowN)表示该区域的第RowN行。也可以用以下方式表示: Rows(RowN).Columns(¨A:C") 日期函数DateSerial要以变量表示日期201 3年5月1日,可以采用日期数据的标准写法: #2013-5-1#当使用者的系统设置与开发者的系统设置一致时,该方法是正确的。然而,每个人的系统设置不尽相同。在开发者的系统中表示日期“年月日”的格式,可能在使用者的系统中变成了“年日月”,即5月1日可能就成了1月5日,从而造成程序运行的错误。对于比较通用的程序,处理日期就要格外谨慎。因而本例中以函数DateSerial来生成日期表达式,其语法为 DateSerial(year,month,day)其中,year、month和day为整数,分别表示年、月、日。利用该函数不会产生由于系统设置的不同而造成日期的歧义。 利用工作表事件实时设置格式一般地,条件格式的设置程序是需要手动触发的。在日常工作中,条件格式需要根据数据的变化实时计算。开发者通常可以通过工作表的Change事件来实时触发格式设置程序的运行。 示例:条件格式是Excel中常用的用于提醒或突出某组数据的重要手段。如图所示,该表为某公司客户付款状况,现需要快速标识超过期限未付款的客户(当前日期为2013年5月1日),该如何用VBA实现? 姓名账款到期日付款状况客户141634未付款客户241319已付款客户341447未付款客户441302未付款客户541400未付款客户641368未付款客户741490未付款客户841506已付款客户941333未付款客户1041523未付款客户1141459未付款客户1241433已付款客户1341568未付款客户1441367未付款客户1541275已付款客户1641455已付款客户1741625已付款客户1841381未付款客户1941507已付款客户2041446未付款客户2141591未付款客户2241373未付款客户2341445已付款客户2441445已付款客户2541598已付款客户2641283未付款客户2741382未付款客户2841607未付款客户2941496未付款客户3041342已付款客户3141471已付款客户3241504已付款客户3341394未付款客户3441526未付款客户3541295已付款实现代码 Option Explicit Sub VBA条件格式() Dim RowN As Integer Dim dDate As Date dDate = DateSerial(2013, 5, 1) For RowN = 2 To 36 If Cells(RowN, "B").Value < dDate And Cells(RowN, "C") = "未付款" Then '超期未付款,设置填充色 Columns("A:C").Rows(RowN).Interior.Color = RGB(230, 184, 183) Else '未超期或已付款,设置无填充色 Columns("A:C").Rows(RowN).Interior.Pattern = xlNone End If Next End Sub
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |