目录
(1)用输入界面的表格或者汇总形式的表格直接代替数据库存储。
示例
如图所示,该表为某公司供应商信息录入表以及供应商数据表。现希望在“数据输入”表中输入各个数据,然后添加至“数据表”中,如何用VBA完成?
实现代码
将单元格区域转换为ListObject对象,然后利用该对象进行输入。
激活表“数据”并选中数据表中数据区域的任意单元格,按组合键【CtrI+L]创建列表(ListObject),如图所示。
Option Explicit
Dim rngFind As Range '存放查找的起始单元格
Sub 跨表录入数据()
Dim lastRow As Long '数据表中的数据行
Dim lstData As ListObject '数据表中的ListObject对象
Dim rngTitle As Range '单元格对象,用于遍历输入表中的标题
'设置ListObject对象变量
Set lstData = Sheets("数据").ListObjects(1)
'获取当前数据的最后一行(数据表中除标题行外,至少要有一行数据,否则出错)
lastRow = lstData.DataBodyRange.Rows.Count
'遍历数据录入表中的各个标题
For Each rngTitle In Union(Sheets("sheet1").Range("A4:A10"), Sheets("sheet1").Range("C7:C10"))
'将数据录入表中标题之右的单元格(即录入数据单元格)的值赋值给数据表中相应的列
lstData.ListColumns(rngTitle.Value).DataBodyRange(lastRow).Offset(1, 0).Value _
= rngTitle.Offset(0, 1).Value
Next
End Sub
ListObject对象
ListObject是存放于工作表中的一个列表对象,它是Excel在工作表中开辟出的一个特殊的区域,用以存放结构化的数据。这个区域由标题行和数据区域组成,数据的每一行称为一条记录,其每一列称为字段,用以存放相同属性的数据。使用ListObject对象存储数据可以方便地被其他软件调用,也可以使用ListObject对象引用其他数据库的数据,因而在Office编程中,开发者常常使用ListObject对象存储数据。
ListObject对象的表示方法
ListObject对象是一个特殊的单元格区域,因而其必须依赖于工作表(Worksheet)而存在。换言之,ListObject对象和Worksheet对象是子对象和父对象的关系。在Worksheet对象中,以ListObjects属性表示所有的ListObject集合对象(ListObjects)。ListObject
对象可以采用以下表示方式。
1.序号表示法
序号表示法是以ListObject在工作表中创建的先后顺序来表示的,其语法如下:
Worksheet.ListObjects(indexNo)
该表达式将返回一个ListObject对象。其中,Worksheet为指定的工作表对象。参数indexNo表示ListObject的序号,该序号从1开始,最大值为工作表中ListObject的数量。
2.名称表示法
本方法以ListObject的名称来表示ListObject对象,其语法如下:
Worksheet.ListObjects(name)
该表达式将返回一个ListObject对象。其中,参数name为ListObject对象的名称。该对象常用的属性如表所示。
ListObject对象常用的基本属性
属 性 |
说 明 |
Name |
ListObject的名称 |
Querytable |
当ListObject为外部查询时,与查询相关的QueryTable对象 |
HeaderRowRange |