Excel VBA程序的编写
摘要:本文通过代码演示,介绍如何从Active Directory中检索信息并将信息显示在带格式的Excel工作表中。
〔注:本文摘自Microsoft Corporation 技术人员Greg Stemp的文章,稍作修改。在文章中,估且先不要管Active Directory,可看看文章所介绍的有关Excel程序编写的相关知识,肯定会有所帮助的。所有例如及图示均在工作簿Excel代码编写例如.xls中〕
使用Excel:快速回忆
我们可以仅仅使用下面两行代码就能创立Excel工作簿:
****************************************
Sub BuildWorkbook()
Dim objExcel as Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
End Sub
****************************************
在默认情况下,您在任何时候创立的Excel 工作簿都运行在不可见的窗口之中。要实际地看一看所创立的Excel 工作簿,需要将Visible 属性设置为TRUE,如下所示:
****************************************
Sub BuildWorkbook()
Dim objExcel as Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
objExcel.Visible = True
End Sub
****************************************
上面的三行代码将在屏幕上显示一个空白的电子表格。
将数据添加到电子表格中
当电子表格关闭时,您可以很容易地将数据添加到电子表格中。首先您简单地引用一个单元格,然后相应地设置值。例如,假设我们想要将文本“My Workbook〞输入第一行第一列。试一试下面的代码,看看会发生什么:
vba做excel窗体录入教程****************************************
Sub addData()
Dim objExcel as Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "My Workbook"
End Sub
****************************************
当您运行这个代码后,会看到类似如下面图1所示的输出:
图 1. 将数据写入Excel 电子表格
哈哈,很酷吧!如果您想要添加其他的数据,我们只需要多引用几个单元格并且设置适宜的值就可以了。例如,下面的脚本将四种动物的名称添加到我们的电子表格中:
****************************************
Sub addDatas()
Dim objExcel As Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "小猫"
objExcel.Cells(1, 2).Value = "小狗"
objExcel.Cells(1, 3).Value = "小兔"
objExcel.Cells(1, 4).Value = "小猪"
End Sub
****************************************
当您运行这段代码后,会看到类似如下列图2所示的输出:
图 2. 将数据写入Excel 电子表格中的多个单元格
现在,真的非常酷……!嗯,不错,您真行!但这还不够,是吗?可以将数据添加到电子表格是一件了不起的事哦,不过,让我们考虑一下这个问题。我们为什么愿意在Excel 中显示数据而不愿意在命令窗口中显示数据或将其保存到文本文件中呢?我们之所以愿意这么做,最可能的原因并不是选择这
两种方法会让您花大量的精力去安排数据的格式。至少我们可以说将数据输出到命令窗口或保存到文本文件会缺少某种美感。这就是我们愿意使用Excel的原因;Excel使您能够创立格式漂亮、易于阅读的输出。但是在这里我们还无法保证有格式漂亮的输出;毕竟,您可能连“小猫〞或“小狗〞这样的名字都读不到。因此,在进一步讨论之前,让我们先来谈一谈Excel中的格式设置。
Excel中的格式设置
如果您曾经使用过Excel,您就知道在Excel 中设置格式是多么的容易:您只需选择一两个单元格,然后就可以应用某种格式了(更改字体大小、更改单元格的背景颜、将文本设置为黑体等等,想做什么都可以)。在程序化地使用Excel时,您也可以做同样的事情。例如,仅仅通过使用一些设置格式的命令,您就可以设置活动单元格(即您正在输入的单元格)的格式。下面的代码将单词“My Workbook〞输入到第1行第1列的单元格中,然后进行如下操作:
1、将文本设为黑体(通过将Bold属性设置为TRUE)。
2、将字体大小设为24(通过将Size属性设置为24)。
3、将字体颜设为红(通过将ColorIndex属性设置为3)。
****************************************
Sub Setformat()
Dim objExcel As Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "My Workbook"
objExcel.Cells(1, 1).Font.Bold = TRUE
objExcel.Cells(1, 1).Font.Size = 24
objExcel.Cells(1, 1).Font.ColorIndex = 3
End Sub
****************************************
当您运行这个代码时,您会看到如下列图3所示的输出:
图 3. 将带格式的数据写入Excel 电子表格
屏住呼吸,怎么样?
最好的是除了ColorIndex 属性略显复杂之外〔等一会儿我们将讨论它〕,这段代码是非常简单的。如果想要将文本设为斜体该怎么办?可以使用下面这行代码:
****************************************
objExcel.Cells(1, 1).Font.Italic = TRUE
****************************************
如果想要使用Times New Roman 字体该怎么办?可以使用下面这行代码:
*************************************************
objExcel.Cells(1, 1).Font.Name = "Times New Roman"
*************************************************
注:遗憾的是,我们没有时间全面介绍您在处理时会使用的许多格式设置选项。不过,请您关注,我将在以后摘录一些很好的关于Excel 对象模型的信息。
好的,但ColorIndex 属性又怎么样呢?虽然在Excel 中有两种不同的方法更改颜,但ColorIndex 可能是最简单的〔它还可以告诉您一些关于其他方法的内容〕。在Excel 中,有56种内置的颜(索引号1–56)可供您使用;您必须做的事情就是将ColorIndex 属性的值设置为期望的索引号。唯一的问题就是:您如何知道索引号3是红,而索引号4是您真正感兴趣的绿阴影呢?
下面这些简单的程序代码会向您显示所有的56个索引号都代表什么颜:
*************************************************
Sub TestColor()
Dim objExcel As Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
Dim i As Integer
For i = 1 to 56
objExcel.Cells(i, 1).Value = i
objExcel.Cells(i, 1).Interior.ColorIndex = i
Next
End Sub
*************************************************
当您运行这段代码后,您会看到如下列图4所示的输出:
图 4. Excel ColorIndex 值
您可以看出,如果您想要将字体颜设置为清绿,那么只需将ColorIndex 设置为8 就行了。
顺便提一句,如果您仔细地看过了前面的代码,您现在就会知道如何设置单元格的背景颜:只需使用Interior.ColorIndex 属性就行了。例如,要将单元格的颜设置为红,可以使用下面的代码:
*************************************************
objExcel.Cells(1, 1).Interior.ColorIndex = 3
*************************************************
在继续讨论之前,先来为我们的格式设置代码做另外一件事。您可能会想得起来,我们的测试代码向我们显示以下列图5所示的输出:
图 5. 将带格式的数据写入Excel 电子表格
问题在哪里?嗯,首先单词“My Workbook〞并没有全部显示在第一列中。那好,如果我们在第一行第二列中输入一些内容会怎么样呢?我们会看到类似于图6这样的输出:
图 6. Excel 电子表格中大小设置不正确的列
没有正确地得到我们所希望的输出类型。显然,我们需要做的是将第一列加宽一点。但怎么做呢?
使用范围
到此为止,我们还只是设置了活动单元的格式,为其更改字体大小、单元格颜等等。然而,有时您
需要使用多个单元格。或许您想要更改特定行中所有单元格的字体大小。或许您想要对您收集的所有数据进行排序。或许,和下面的例子一样,您想要重新设置整个列的大小。如果这样,您就需要使用范围,即一组指定的单元格。
虽然有几种不同的方法指示范围中包含的单元格,但是它们有一点是共同的:它们都需要您创立Range 对象的实例,然后指定哪些单元格是该范围的一局部。例如,下面是一些创立范围的常用方法。
要创立包含单个单元格的范围:
*************************************************
Set objRange2 = objExcel.Range("A1")
*************************************************
要创立包含整个列的范围:
*************************************************
Set objRange = objExcel.ActiveCell.EntireColumn
*************************************************
正如您所期望的,有相似的命令来创立包含整个行的范围:
*************************************************
Set objRange = objExcel.ActiveCell.EntireRow
*************************************************
如果您想要选择的行或列不同于带有活动单元格的行或列怎么办?没问题。使用所需的行或列中的一个单元格来创立范围,然后使用Activate 方法来使其成为活动单元格。此时,设置代表整个行或列的范围。例如,下面这段代码使单元格E5 成为活动单元格,然后通过选择整个行来创立包含第 5 行中的所有单元格的范围:
*************************************************
Set objRange = objExcel.Range("E5")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireRow
*************************************************
要创立包含一组单元格的范围:
*************************************************
Set objRange = objExcel.Range("A1:C10")
*************************************************
注意,您在这里做的是指定起点(A1) 和终点(C10)。Excel 会自动选择这两个点之间的所有单元,并把它们放在范围之中。
要创立包含所有数据的范围:
*************************************************
Set objCell = objExcel.Range("A1").SpecialCells(11)
*************************************************
在这个例子中,11 是表示包含数据的电子表格中最后的单元格的参数。这个命令所创立的范围从单元格A1 开始一直延伸到所有包含数据的单元格。
为了进行演示,让我们再看一下前面的代码,看看我们是否能够使它变得更漂亮一点。在这个经过修改的代码中,我们将把动物的名称放在单列〔而不是单行〕中,并且我们将给该列加上粗体标签(Name)。然后,仅仅是为了使它变得更美观一些,我们将:
1、更改带标签的单元格(1,1) 的背景颜和字体颜。
2、创立包含我们正在使用的五个单元格的范围(A1:A5) 并更改字体大小。
3、创立包含带有四个动物名称的单元(A2:A5) 的范围并更改背景颜。
4、选择列A 并使用Autofit 方法来重新设置列的大小,以便所有的文本都适合。
代码如下:
*************************************************
Sub TestRange()
Dim objExcel As Application
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Name"
objExcel.Cells(1, 1).Font.Bold = TRUE
objExcel.Cells(1, 1).Interior.ColorIndex = 30
objExcel.Cells(1, 1).Font.ColorIndex = 2
objExcel.Cells(2, 1).Value = "小猫"
objExcel.Cells(3, 1).Value = "小狗"
objExcel.Cells(4, 1).Value = "小兔"
objExcel.Cells(5, 1).Value = "小猪"
Set objRange = objExcel.Range("A1","A5")
objRange.Font.Size = 14
Dim objRange As Range
Set objRange = objExcel.Range("A2","A5")
objRange.Interior.ColorIndex = 36
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.AutoFit
End Sub
*************************************************
下面图7是最终的输出结果:
图7. Excel 电子表格中美观的格式
数据排序
您可以对Excel中的输出进行排序。将下面这两行代码放在上面的程序的末尾(我们等会儿解释这两行代码的含义),然后再次运行程序:
*************************************************
Dim objRange2 As Range
Set objRange2 = objExcel.Range("A1")
objRange.Sort objRange2,,,,,,,1
*************************************************
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论