当前位置:首页 > 2007VBA教程
Excel 2007 VBA 教程
Sheets(i).Select Sheets(i).Activate
ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:= _ \ Range(\ Next i '下一个i End Sub Sub 清空()
Dim Sp As Shape, sh As Worksheet
Worksheets(\目录\ For Each sh In Worksheets sh.Activate
For Each Sp In ActiveSheet.Shapes Sp.Delete Next Sp Next sh End Sub
第八讲 工作簿对象
一. 工作簿的引用方式
1. 以名称引用
(1). 实例
Sub test2() ' 把“汇总”工作簿打开
MsgBox Workbooks(\汇总.xlsm\End Sub
2. 以索号引用
(1). 实例
Sub test1()
MsgBox Workbooks(1).Name End Sub
3. Thiswokbook 表示代码所在的的工作簿
(1). 实例
Sub test3()
MsgBox ThisWorkbook.Name End Sub (2). 11
4. Activeworkbook 表示当前活动工作簿
(1). 实例
Sub test4()
MsgBox ActiveWorkbook.Name End Sub
二. 保存工作簿
1. 另存为的方法
(1). 实例 在桌面上新建一个工作簿,取名为“汇总”,且工作簿密码是1234
Sub test1()
第 26 页 共 52 页
Excel 2007 VBA 教程
Dim wb As Workbook '定义wb工作簿型对象变量 Set wb = Workbooks.Add '把新建的工作簿赋给wb With wb '处理工作簿wb
.SaveAs Filename:=\我的文档\\桌面\\汇总.xlsx\另存为桌面,取名为“汇总” .Password = \给工作簿 wb设置密码为1234 End With '结束处理 End Sub
三. 打开工作簿
1. 用Open方法,它的参数有许多,我现在只用了第一个参数:要打开的工作簿所在的路径,其它参数没有,
可以自己去看帮助。 (1). 实例 打开“F第八讲VBA对象”文件中的“汇总”工作簿
Sub test1()
Workbooks.Open Filename:=ThisWorkbook.Path & \汇总.xlsm\End Sub
四. 从不打开的工作簿里提取数据
1. 实例
Sub Test1()
Dim Wb As Workbook '定义Wb为工作簿对象型变量 Dim MyPth As String '定义MyPth为文本型变量
Application.ScreenUpdating = False '关闭屏幕刷新
MyPth = ThisWorkbook.Path & \数据源.xlsx\把数据源工作簿路径赋给MyPth Set Wb = GetObject(MyPth) '把返回路径上的文件引用且赋值给Wb
With Wb.Sheets(1).Range(\工作簿里工作表1和A1单元格相连的区域
Range(\把Wb工作簿里的工作表1数据写于活动工作表里以A1单元格为区域
'Rows.Count是2^20行,Columns.Count2^14列,它们的对象是 Wb.Sheets(1).Range(\,也就是起到复制整个工作表的作用 Wb.Close False '关才Wb工作簿,且不保存更改 End With '
Set Wb = Nothing '释放内存
Application.ScreenUpdating = True '打开屏幕刷新 End Sub
第九讲 事件
一. 事件分类
(1). 应用程序事件 经常在类模块中定义这种事件 (2). 工作簿事件 如工作簿的Open事件,一打开工作簿就就执行过程
Private Sub Workbook_Open() ?? End Sub
实例 一开工作作簿就问好 Private Sub Workbook_Open() MsgBox \佛山小老鼠你好!\End Sub (3). 工作表事件 如工作表里的Change事件,一改变工作表单元里的内容就触发,工作表事件用的用比
第 27 页 共 52 页
Excel 2007 VBA 教程
较多
a. Private Sub Worksheet_Change(ByVal Target As Range),一改变单元格内容就触发 ?? End Sub
b. Private Sub Worksheet_SelectionChange(ByVal Target As Range)一选择别的单元格就触发
?? End Sub
实例一 防止看错行
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Myrow As Integer '定义变量Integer为整型数据类型 Myrow = Target.Row 'Target当前活动单元格,取得其行号
Cells.Interior.ColorIndex = xlNone '把整个工作表的底纹设置为无,目的是为了删除上一次的
Rows(Myrow).EntireRow.Interior.ColorIndex = 8 '给Myrow这一整行添加底纹 End Sub
实例二 自动补齐卡号,由于卡号前面的是一样,只是后面的不一样,便不能用单元格格式设置 Private Sub Worksheet_Change(ByVal Target As Range) '工作表事件,一改变内容就发生 If Target.Column = 1 Then '如果活动单元格的列号是等于1,那么
If Target.Count <> 1 Then Exit Sub '又如果选中的不只是一个单元格,那么就退出运行
MyTart = Target.Value '把活动单元格的值赋给MyTarg Application.EnableEvents = False '关闭联动事件
Target = \& \& MyTart '在原来数据前面加6210260500059330 MyTart = \把变量MyTart清空
Application.EnableEvents = True '打开联动事件 End If
Columns(\列自动适合列宽 End Sub
实例三 在B列任意单元格输入任何文本后,A列与其所对应的单元格 自动显示出当天的日期 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then '如果当前单元格的列号2
If Target.Offset(0, -1) = \又如果A列对应的单元不为空且B列活动单元也不为空,那么
Target.Offset(0, -1) = Date '在A列对应的单元格输入当前日期 End If End If
Columns(1).AutoFit 'A列自动适合列宽 End Sub
(4). 其它事件
a. OnTime事件
表达式 Application.OnTime 开始时间, 过程名 结束时间 布尔值
解释如果省略第三参数,开始时间就是过程运行时间,如果没有省略,那第三参数就是过程运行时间,第四参数如果是False就是停止OnTime事件 实例 在A1单元格显示当前的时间且带有秒数的格式 Sub Mystar()
Range(\在A1单元格写于时间,用了Format函数,格
第 28 页 共 52 页
Excel 2007 VBA 教程
式用时分秒
Application.OnTime Now + TimeValue(\在原有的时间加一秒执行 End Sub
Sub MyStop()
On Error Resume Next '为什么要加一句防错语句,因为先前当没有执行Mystar过程,就会报错
Application.OnTime Now + TimeValue(\记得是第四个参数用了False,所以它前面还有二个逗号 End Sub b. OnKey事件
1. 表达式 Application.OnKey 快捷键, 过程名
a. 一些常用控制键的代码 Ctrl ^ Shift + Alt % ,其它的键要加{},而26个字母不
要加,如Ctrl+D这样表示\;再加Shift+F1这样表示\b. 实例 按快键Ctrl+F9,输入当天的星期 在普通模块里输入 Sub 输入星期()
Selection = Format(Now, \End Sub
Sub 打开快捷键()
Application.OnKey \输入星期\End Sub
Sub 关闭快捷键()
Application.OnKey \End Sub
在工作簿模块里输入
Private Sub Workbook_BeforeClose(Cancel As Boolean) Call 关闭快捷键 End Sub
Private Sub Workbook_Open() Call 打开快捷键 End Sub 2. 11
第十讲 窗体与控件
如果要编辑稍大一点的程序,大家就要用到窗体和控件了,其实也就是我们平常所说的对话框,达到人机对接,下面我们来一一讲解它们 一、窗体
1、 新建窗体
A、 Alt+F11——>>打开VBE编辑器——>>插入菜单——>>窗体
B、 把光标定位到“资源管理器”处——>>右击——>>插入——>>用户窗体 2、 删除窗体
A、 把光标定位到资源管理器上——>>右击——>>移除窗体 3、 窗体的Caption属性,是显示在窗体的标题
A、 实例 加载时修改窗体的标题为“身份证”,把光标定位到窗体上——>>右击——>>查看代码——>>对象列表选择窗体名称UserForm1——>>过程列表中选择Initialize如图 18,输入以下代码 Private Sub UserForm_Initialize()
第 29 页 共 52 页
共分享92篇相关文档