Kingdee 二次开发平台
二次开发平台 VBA 参考参考参考参考
二次开发平台
二次开发平台
目录目录目录目录
二次开发平台的对象
......................................................
二次开发平台的对象................................
...................... 2222
二次开发平台的对象
......................
................................
二次开发平台的对象
................................
......................
............................. 2222
.............................................................
编程的概念 ................................
编程的概念
.............................
................................
编程的概念
编程的概念
.............................
................................
工作薄和工作表................................
工作薄和工作表
......................................................
...................... 2222
工作薄和工作表
工作薄和工作表
................................
................................
......................
......................
........................ 3333
单元格和区域
........................................................
单元格和区域................................
........................
单元格和区域
................................
单元格和区域
........................
................................
.........................................
使用对象和对象事件进行编程 ................................
使用对象和对象事件进行编程
......... 11111111
................................
使用对象和对象事件进行编程
使用对象和对象事件进行编程
.........
................................
.........
..............................................................
对象列表 ................................
对象列表
.............................. 12121212
..............................
................................
对象列表对象列表
................................
..............................
.......................................................
Application
Application ................................
....................... 12121212
Application
.......................
................................
Application
................................
.......................
Dialog
............................................................
Dialog ................................
............................ 13131313
............................
............................
................................
Dialog
Dialog
................................
Dialogs
Dialogs ................................
...........................................................
........................... 14141414
Dialogs
Dialogs
................................
...........................
...........................
................................
Name ................................
Name
..............................................................
.............................. 14141414
NameName
..............................
..............................
................................
................................
Names
.............................................................
Names ................................
............................. 14141414
.............................
................................
Names
Names
.............................
................................
Range
Range ................................
.............................................................
............................. 15151515
................................
Range
Range
................................
.............................
.............................
Window ................................
Window
............................................................
............................ 15151515
Window
Window
................................
............................
............................
................................
Windowssss ................................
Window
...........................................................
........................... 16161616
...........................
...........................
................................
Window
................................
Window
WorkBook
WorkBook ................................
..........................................................
.......................... 17171717
..........................
..........................
................................
WorkBook
WorkBook
................................
WorkBooks ................................
WorkBooks
.........................................................
......................... 18181818
WorkBooks
WorkBooks
................................
.........................
.........................
................................
WorkSheet
.........................................................
WorkSheet ................................
......................... 18181818
.........................
.........................
................................
WorkSheet
................................
WorkSheet
WorkSheets
WorkSheets ................................
........................................................
........................ 19191919
WorkSheets
WorkSheets
................................
........................
........................
................................
................................................................
属性属性属性属性 ................................
........................................ 20202020
................................
................................
................................
................................
方法方法方法方法 ................................
................................................................
........................................ 77777777
................................
................................
................................
................................
.................................... 117117117117
事件事件事件事件 ................................
................................................................
................................
................................
................................
................................
二次开发平台的对象
二次开发平台的对象
二次开发平台的对象
二次开发平台的对象
编程的概念
编程的概念
编程的概念
编程的概念
工作薄和工作表
工作薄和工作表
工作薄和工作表
工作薄和工作表
新建工作簿
新建工作簿
新建工作簿
新建工作簿
若要在 Kingdee 二次开发平台 中创建新的工作簿,请使用 Add 方法。下述过程创建了新
的工作簿。Kingdee 二次开发平台 自动将该工作簿命名为“报表 N”,其中“N”是下一个可用
的数字。新工作簿将成为活动工作簿。
Sub AddOne()
Workbooks.Add
End Sub
创建新工作簿更好的方法是将其分配给一个对象变量。下例中,由 Add 方法返回的
Workbook 对象分配给了对象变量 newBook。然后,又设置了 newBook 的若干属性。使用
对象变量可以很容易地控制新工作簿。
Sub AddNew()
Set NewBook = Workbooks.Add
With NewBook
.Title = "All Sales"
.SaveAs Filename:="销售报表"
End With
End Sub
打开工作簿
打开工作簿
打开工作簿
打开工作簿
用 Open 方法打开一个工作簿时,该工作簿将成为 Workbooks 集合的成员。下述过程打开
一个已经保存的报表
Sub OpenUp()
Workbooks.Open_
End Sub
按索引编号引用工作表
按索引编号引用工作表
按索引编号引用工作表
按索引编号引用工作表
编号是分配给工作表的连续数字,基于其工作表标签在同一类型的工作表之间的位置(按从
Worksheets 属性激活活动工作簿上的第一张工作表。
左到右计数)。下述过程使用 Worksheets
Worksheets
Worksheets
Sub FirstOne()
Worksheets(1).Active
End Sub
Sheets 属
如果要处理所有类型的工作表(工作表、图表、模块和对话框编辑表),可使用 Sheets
Sheets
Sheets
性。下述过程激活工作簿中的第四张工作表。
Sub FourthOne()
Sheets(4).Active
End Sub
注意注意注意注意 如果移动、添加或删除工作表,则编号顺序将会更改。
按名称引用工作表
按名称引用工作表
按名称引用工作表
按名称引用工作表
使用 Worksheets
Worksheets 属性可通过名称来标识工作表。下述语句激活活动工作簿中的名称为
Worksheets
Worksheets
"Sheet1"的工作表。
Worksheets("Sheet1").Active
Sheets 属性返回工作表;Sheets
Sheets 集合包含了所有这些表。
可用 Sheets
Sheets
Sheets
Sheets
Sheets
单元格和区域
单元格和区域
单元格和区域
单元格和区域
如何引用单元格和区域
如何引用单元格和区域
如何引用单元格和区域
如何引用单元格和区域
使用 Visual Basic 的普通任务是指定单元格或单元格区域,然后对该单元格或单元格区域进
行一些操作,如输入公式或更改格式。通常用一条语句就能完成操作,该语句可标识单元格,
还可更改某个属性或应用某个方法。
在 Visual Basic 中,Range 对象既可表示单个单元格,也可表示单元格区域。下列主题说
明了标识和处理 Range 对象最常用的方法。
请选择:
请选择:
请选择:
请选择:
用 A1 样式记号引用单元格和单元格区域
用编号引用单元格
引用行和列
用快捷记号引用单元格
引用命名单元格区域
相对于其他单元格来引用单元格
用 Range 对象引用单元格
引用工作表上的所有单元格
引用多个单元格区域
用用用用 A1 样式记号引用单元格和单元格区域
样式记号引用单元格和单元格区域
样式记号引用单元格和单元格区域
样式记号引用单元格和单元格区域
可使用 Range
Range 属性来引用 A1 引用样式中的单元格或单元格区域。下述子程序将单元格区
Range
Range
域 A1:D5 的字体设置为加粗。
Sub FormatRange()
Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _
.Font.Bold = True
End Sub
Range 属性的一些 A1 样式引用。
下表演示了使用 Range
Range
Range
含义
引用
Range("A1")
单元格 A1
Range("A1:B5")
从单元格 A1 到单元格 B5 的区域
Range("C5:D9,G9:H16")
多块选定区域
Range("A:A")
A 列
Range("1:1")
第一行
Range("A:C")
从 A 列到 C 列的区域
Range("1:5")
从第一行到第五行的区域
Range("1:1,3:3,8:8")
第 1、3 和 8 行
Range("A:A,C:C,F:F")
A 、C 和 F 列
用编号引用单元格
用编号引用单元格
用编号引用单元格
用编号引用单元格
通过使用行列编号,可用 Cells
Cells 属性来引用单个单元格。该属性返回代表单个单元格的
Cells
Cells
Range
Range 对象。下例中,Cells(6,1) 返回 Sheet1 上的单元格 A6,然后将 Value
Value 属性设置
Value
Range
Range
Value
为 10。
Sub EnterValue()
Worksheets("Sheet1").Cells(6, 1).Value = 10
End Sub
因为可用变量替代编号,所以 Cells 属性非常适合于在单元格区域中循环,如下例所示。
Sub CycleThrough()
Dim Counter As Integer
For Counter = 1 To 20
Worksheets("Sheet1").Cells(Counter, 3).Value = Counter
Next Counter
End Sub
注意注意注意注意 如果要同时更改某一单元格区域中所有单元格的属性或对其应用方法,可使用
Range 属性。有关详细信息,请参阅用 A1 样式记号引用单元格。
Range
Range
Range
引用行和列
引用行和列
引用行和列
引用行和列
Rows 属性或 Columns
可用 Rows
Columns 属性来处理整行或整列。这两个属性返回代表单元格区域的
Columns
RowsRows
Columns
Range
Range 对象。下例中,用 Rows(1) 返回 Sheet1 上的第一行,然后将单元格区域的 Font
Font 对
FontFont
Range
Range
象的 Bold
Bold 属性设置为 True
True。
True
Bold
Bold
True
Sub RowBold()
Worksheets("Sheet1").Rows(1).Font.Bold = True
End Sub
Rows 和 CCCColumns
下表举例说明了使用 Rows
olumns 属性的一些行和列的引用。
olumns
Rows
Rows
olumns
引用
Rows(1)
Rows
Columns(1)
Columns("A")
Columns
含义
第一行
工作表上所有的行
第一列
第一列
工作表上所有的列
若要同时处理若干行或列,请创建一个对象变量并使用 Union
Union 方法,将对 Rows
Rows 属性或
RowsRows
Union
Union
Columns
Columns 属性的多个调用组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行
Columns
Columns
和第五行的字体设置为加粗。
Sub SeveralRows()
Worksheets("Sheet1").Activate
Dim myUnion As Range
Set myUnion = Union(Rows(1), Rows(3), Rows(5))
myUnion.Font.Bold = True
End Sub
用快捷记号引用单元格
用快捷记号引用单元格
用快捷记号引用单元格
用快捷记号引用单元格
可用方括号将 A1 引用样式或命名区域括起来,作为 Range 属性的快捷方式。这样就不必
键入单词“Range”或使用引号,如下例所示。
Sub ClearRange()
Worksheets("Sheet1").[A1:B5].ClearContents
End Sub
Sub SetValue()
[MyRange].Value = 30
End Sub
引用命名区域
引用命名区域
引用命名区域
引用命名区域
用名称比用 A1 样式记号更容易标识单元格区域。若要命名选定的单元格区域,请单击编
辑栏左端的名称框,键入名称,再按 Enter。
引用命名区域
引用命名区域
引用命名区域
引用命名区域
下例引用了名为“MyBook.xls”的工作簿中的名为“MyRange”的单元格区域。
Sub FormatRange()
Range("MyBook.xls!MyRange").Font.Italic = True
End Sub
下例引用名为“Report.xls”的工作簿中的特定工作表单元格区域“Sheet1!Sales”。
Sub FormatSales()
Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin
End Sub
若要选定命名区域,请用 GoTo 方法,该方法将激活工作簿和工作表,然后选定该区域。
Sub ClearRange()
Application.Goto Reference:="MyBook.xls!MyRange"
Selection.ClearContents
End Sub
下例显示对于活动工作簿将如何编写相同的过程。
Sub ClearRange()
Application.Goto Reference:="MyRange"
Selection.ClearContents
End Sub
在命名区域中的单元格上循环
在命名区域中的单元格上循环
在命名区域中的单元格上循环
在命名区域中的单元格上循环
下例用 For Each...Next 循环语句在命名区域中的每一个单元格上循环。如果该区域中的任
一单元格的值超过 limit 的值,就将该单元格的颜色更改为黄色。
Sub ApplyColor()
Const Limit As Integer = 25
For Each c In Range("MyRange")
If c.Value > Limit Then
c.Interior.ColorIndex = 27
End If
Next c
End Sub
相对于其他单元格来引用单元格
相对于其他单元格来引用单元格
相对于其他单元格来引用单元格
相对于其他单元格来引用单元格
处理相对于另一个单元格的某一单元格的常用方法是使用 Offset
Offset 属性。下例中,将位于活
Offset
Offset
动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线格式。
Sub Underline()
ActiveCell.Offset(1, 3).Font.Underline = xlDouble
End Sub
注意注意注意注意 可录制使用 Offset
Offset 属性(而不是绝对引用)的宏。在“工具”菜单上,指向“宏”,
Offset
Offset
再单击“录制新宏”,然后单击“确定”,再单击录制宏工具栏上的“相对引用”按钮。
Cells 属性一起使用。下例以 5 为步长,
若要在单元格区域中循环,请在循环中将变量与 Cells
Cells
Cells
用 5 到 100 之间的值填充第三列的前 20 个单元格。变量 counter 用作 Cells
Cells 属性的行
Cells
Cells
号。
Sub CycleThrough()
Dim counter As Integer
For counter = 1 To 20
Worksheets("Sheet1").Cells(counter, 3).Value = counter * 5
Next counter
End Sub
用用用用 Range 对象引用单元格
对象引用单元格
对象引用单元格
对象引用单元格
如果将对象变量设置为 Range
Range 对象,即可用变量名方便地操作单元格区域。
Range
Range
下述过程创建了对象变量 myRange,然后将活动工作簿中 Sheet1 上的单元格区域 A1:D5
赋予该变量。随后的语句用该变量代替该区域对象,以修改该区域的属性。
Sub Random()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:D5")
myRange.Formula = "=RAND()"
myRange.Font.Bold = True
End Sub
引用工作表上的所有单元格
引用工作表上的所有单元格
引用工作表上的所有单元格
引用工作表上的所有单元格
如果对工作表应用 Cells
Cells 属性时不指定编号,该属性将返回代表工作表上所有单元格的
Cells
Cells
Range
Range 对象。下述 SubSubSubSub 过程清除活动工作簿中 Sheet1 上的所有单元格的内容。
Range
Range
Sub ClearSheet()
Worksheets("Sheet1").Cells.ClearContents
End Sub
引用多个单元格区域
引用多个单元格区域
引用多个单元格区域
引用多个单元格区域
使用适当的方法可以很容易地同时引用多个单元格区域。可用 Range
Range 和 Union
Union 方法引用任
Union
Range
Range
Union
意组合的单元格区域;用 Areas
Areas 属性可引用工作表上选定的一组单元格区域。
Areas
Areas
使用使用使用使用 Range
Range 属性属性属性属性
Range
Range
通过在两个或多个引用之间放置逗号,可使用 Range
Range 属性来引用多个单元格区域。下例清
Range
Range
除了 Sheet1 上三个单元格区域的内容。
Sub ClearRanges()
Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _
ClearContents
End Sub
命名区域使得用 Range
Range 属性处理多个单元格区域更为容易。下例可在三个命名区域处于同
Range
Range
一工作表时运行。
Sub ClearNamed()
Range("MyRange, YourRange, HisRange").ClearContents
End Sub
使用使用使用使用 Union
Union 方法方法方法方法
Union
Union
Union 方 法 可 将 多 个 单 元 格 区 域 组 合 到 一 个 Range
用 Union
Range 对 象 中 。 下 例 创 建 了 名 为
Range
Union
Union
Range
myMultipleRange 的 Range
Range 对象,并将其定义为单元格区域 A1:B2 和 C3:D4 的组合,然
Range
Range
后将该组合区域的字体设置为加粗。
Sub MultipleRange()
Dim r1, r2, myMultipleRange As Range
Set r1 = Sheets("Sheet1").Range("A1:B2")
Set r2 = Sheets("Sheet1").Range("C3:D4")
Set myMultipleRange = Union(r1, r2)
myMultipleRange.Font.Bold = True
End Sub
使用使用使用使用 Areas
Areas 属性属性属性属性
Areas
Areas
可用 Areas
Areas 属性引用选定的单元格区域或多块选定区域中的区域集合。下述过程计算选定
Areas
Areas
区域中的块数目,如果有多个块,就显示一则警告消息。
Sub FindMultiple()
If Selection.Areas.Count > 1 Then
MsgBox "Cannot do this to a multiple selection."
End If
End Sub
在单元格区域中循环
在单元格区域中循环
在单元格区域中循环
在单元格区域中循环
使用 Visual Basic 时,经常需要对某一单元格区域内的每个单元格运行同一段语句。为达
到这一目的,可组合循环语句和一个或多个方法来标识每个单元格,一次针对一个单元格,
并执行该操作。
在单元格区域中循环的一种方法是将 For...Next
For...Next 循环语句与 Cells
Cells 属性配合使用。使用
Cells
For...Next
For...Next
Cells
Cells
Cells 属性时,可用循环计数器(或其他变量或表达式)来替代单元格索引编号。下例中,
Cells
Cells
变量 counter 代替了行号。此过程将在单元格区域 C1:C20 中循环,将所有绝对值小于
0.01 的数字都设置为 0(零)。
Sub RoundToZero1()
For Counter = 1 To 20
Set curCell = Worksheets("Sheet1").Cells(Counter, 3)
If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next Counter
End Sub
在单元格区域中循环的另一种简便方法是使用 For Each...Next
For Each...Next 循环语句和由 Range
Range 属
Range
For Each...Next
For Each...Next
Range
性指定的单元格集合。在每一次循环过程中,Visual Basic 都为下一个单元格自动设置一
个对象变量。下述过程在单元格区域 A1:D10 中循环,将所有绝对值小于 0.01 的数字都设
置为 0(零)。