一、问题导入
1、有一张模板日报表,希望基于模板自动生成以每天日期命名的31张日报表,并在每张表的特定单元格内写入该表代表的日期;
2、统计完日报表数据后,自动将31张日报表的数据汇总到汇总表中(涉及到每张表若干字段的复制)。
二、worksheet(s):工作表对象的表达:观察“1操作工作表”的vba中的表名;不同用法适合不同的场景
VBA属性中的"名称" | vba属性中的"name"(工作界面的名称) | 按排列顺序的名称(易用于循环) |
sheet1,sheet2,sheet3······ | sheets(“1月”),sheets(“2月”)······ | sheets(1),sheets(2)·····sheets(i) |
注:worksheet(s)和sheet(s)均可表示表,但前者特指工作表,后者还包括图表、宏表等。一般情况下二者可混用。
注意单复数形式的区别
三、工作表对象的主要方法与属性
熟悉手动方式插入表、删除表、复制表的操作,用宏录制方法了解关键方法及可能语法。
方法 | 语法 | 示例 | 备注 |
select | |||
add | sheets.Add(Before或After, Count, Type) | sheets.Add before:=sheets(2) | (1)count是插入的数量,type是插入的类型,均可不指定(2)常用插入到最后一张之后 |
delete | sheet名.delete | (1)删除表时会激活警告框,解决方法参见四、application (2)删表易入坑,如for i=1 to 100 shees(i).delete易报错 | |
copy | sheet名.Copy(Before或 After) | sheet1.Copy after:=Sheet3 | 若没加after或before参数,则将失去目标,因此新开一个文件 |
注:(1)若未指定表,则对单元格的操作在当前active表中进行,而当前active表受文件使用者影响,有不确定性;
(2)理解方法与属性,句点表达方式“对象.方法(属性)”,如“狗.颜色”,“狗.嘴”,“狗.咬”,“狗.跑”······注意一句完整的语句要有动作,因此“狗.颜色”,“狗.嘴“
不能单独成句,但可对其赋值以构成完整语句;
属性 | 示例 | 备注 |
count | sheets.count | 只读属性,不能对其赋值 |
name | sheet1.name | vba中可用字符串对其修改赋值 |
三、练习题:
(1)新建12张表,命名分别为1-12月
(2)把所有表的表名取出,放在某张表中
(3)完成问题导入1、2
(4)作业:成绩表,文件中有多个表格,数目不确定,每张表个是一个地区的考生成绩,每个地区的考生数量<100。
请填充每张表的称呼和专业代号,删除成绩表中名字为空的数据.
(注:sheet1.range("a1").select的写法不允许,不能在一行代码中连续选择表及其中的单元格,需拆分成sheet1.select和sheet1.range("a1").select两行)
四、application:主程序对象
(1)警告框关闭与重启: excel.application.displayAlerts = fasle sheet.delete excel.application.displayAlerts = true 配对使用
(2)屏幕自动刷新关闭与重启: Application.ScreenUpdating = fasle Application.ScreenUpdating = True 配对使用