 |
如何根据日期改变单元格的背景颜色? |
|
|
| 如何根据日期改变单元格的背景颜色? |
|
| 作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 10:57:15 |
|
问: 嗨,脚本专家!我有一个 Microsoft Excel 电子表格,定期用脚本进行分析。我如何在某单元格中存储的日期已经过去时将该单元格的颜色变为红色?
-- DM
答: 您好,DM。我们本打算用一些与红字日期有关且机智诙谐的话开始今天的专栏,但我们却一句也想不出来。因此,我们将装作没有时间做这些无聊的事,而是马上进入正题。
注意。编写本专栏的脚本专家不久前发现自己想不出以字母 K 开始的词。(是的,没错:kite(风筝)、kitten(小猫)、kid(小孩)、kindergarten(幼儿园);他现在清楚地知道成千上万的词都以字母 K 开始。)以他大脑退化的速度,此专栏不久就会由一个问题和接下来原本应给出答案的一大块空白组成。
嘿:谁说这是一大改进?!?
为使我们的解答切合当前主题,假定您有一个非常简单小巧的电子表格,一张由一系列日期(都在 A 列)组成的电子表格。
我们要做的是创建一个脚本,使之能够打开这个文件、检查每一单元格的日期,如果该特定日期已经过去,则将单元格的背景色变为红色。
那么,我们能做到吗?好的,尽管我们的脚本专家好像不能再使用英语,至少他还能不时的写个脚本:
Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objWorkbook = objExcel.Workbooks.Open("C:/Scripts/Test.xls")
x = 1
Do Until objExcel.Cells(x,1).Value = "" If CDate(objExcel.Cells(x,1).Value) < Date Then objExcel.Cells(x,1).Interior.ColorIndex = 3 End If x = x + 1 Loop
总的看来,这是个短小的脚本,不是吗?脚本首先创建一个 Excel.Application 对象的实例,接着将 Visible 属性设置为 True。然后,我们用 Open 方法打开文件 C:/Scripts/Test.xls。如此简单我们就打开了电子表格并使之显示在屏幕上。
电子表格出现后,我们将值 1 指定给计数器变量 x;继续处理电子表格时,将使用此变量跟踪当前行。接下来,我们继续处理电子表格,设置一个循环直至在 A 列遇到空值时停止。此目的由下行代码完成:
Do Until objExcel.Cells(x,1).Value = ""
注意。这么做的原因何在?因为,为简单起见,我们假定您在 A 列没有空单元格。这样,只要遇到空单元格,我们就知道没有数据了。
我们在 Do Loop 内检查当前单元格的值是否小于今天的日期。具体方式是获取当前单元格的值 objExcel.Cells.(x,1).Value,并使用 VBScript 的 CDate (字符转换为日期)函数确保将该值视为日期。然后将该值与当前日期(可以使用 Date 获得)函数比较。如果单元格的值小于当前日期,则用下行代码将单元格的内部(背景)颜色改为红色:
objExcel.Cells(x,1).Interior.ColorIndex = 3
注意。我们如何知道将 ColorIndex 设置为 3 会得到红色背景?我们不知道,至少在运行此处引述的脚本前不知道;其中列出了所有的背景颜色及其对应的值。
您都清楚了吗?如果您还不确定为什么检查 objExcel.Cells(x,1) 的值,请记住 x 是我们为跟踪当前行而创建的变量。因为 x 的值从 1 开始,通过循环第一次做的就是检查单元格 (1,1):第 1 行、第 1 列。完成第一次检查后,我们将 x 增加 1;这样,下次循环时将检查单元格 (2,1):第 2 行、第 1 列。依次类推。
就这么简单、快捷。我们猜您会说这样或者那样…,好了,此时我们想不起什么要说的。但您已经找到问题的答案了。
【转自世纪安全网 http://www.21safe.com】
|
|
| 文章录入:admin 责任编辑:admin |
|
|
上一篇文章: 如何向文本文件的顶部添加行? 下一篇文章: 如何列出 Active Directory 中 Computer 类使用的所有属性? |
|
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|
|