ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zhoujibin1

[原创]Excel VBA 快速上手之宝典

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-20 17:59 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程

楼主,你太厚道了!谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 17:59 | 显示全部楼层

五.时间函数

Now                  返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。

Date             返回包含系统日期的 Variant (Date)

Time           返回一个指明当前系统时间的 Variant (Date)

Timer                 返回一个 Single,代表从午夜开始到现在经过的秒数。

TimeSerial(hour, minute, second) 返回一个 Variant (Date),包含具有具体时、分、秒的时间。

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目

Second(time) 返回一个 Variant (Integer),其值为 0 59 之间的整数,表示一分钟之中的某个秒

Minute(time) 返回一个 Variant (Integer),其值为 0 59 之间的整数,表示一小时中的某分钟

Hour(time)         返回一个 Variant (Integer),其值为 0 23 之间的整数,表示一天之中的某一钟点

Day(date)        返回一个 Variant (Integer),其值为 1 31 之间的整数,表示一个月中的某一日

Month(date)        返回一个 Variant (Integer),其值为 1 12 之间的整数,表示一年中的某月

Year(date)        返回 Variant (Integer),包含表示年份的整数。

Weekday(date, [firstdayofweek]) 返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 18:00 | 显示全部楼层

第二章 Excel VBA常用对象之使用

第一节
  
文件的操作

1) Excel文件


一.新建
Workbooks.Add

二.打开
Workbooks.Open "路径\" & "文件名.xls"

三.文件打开对话框的使用
Application.GetOpenFilename(fileFilter:="Excel files(*.xls),*.xls,All files (*.*),*.*")

示例:

flag = False
Do While Not flag                                  '对话框打开已有Excel文件
  fm = Application.GetOpenFilename(fileFilter:="Excel files(*.xls),*.xls, All files (*.*),*.*")
  If fm <> False Then
    Workbooks.Open fm
    Set bb = ActiveWorkbook
    '把bb变量设为当前活动工作簿对象,打开一工作簿时,该工作簿自动为当前活动工作簿
    flag = True
  End If
Loop

[此贴子已经被作者于2006-7-20 18:04:08编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 18:01 | 显示全部楼层

一.保存
Workbooks("文件.xls").Save

二.另存对话框的使用
Application.GetSaveAsFilename(fileFilter:="Excel files (*.xls),*.xls,All files (*.*),*.*")

示例:
flag = False
Do While Not flag                 '循环要求必须输入文件名或选择文件名
  fm = Application.GetSaveAsFilename(fileFilter:="Excel files (*.xls),*.xls,All files (*.*),*.*")
  If fm <> False Then
     activeworkbook.SaveAs fm     '当前活动工作簿另存
     flag = True
  End If
Loop

三.关闭
1.单个文件关闭
Workbooks("filename.xls").Close
2.所有该Excel程序打开的文件都关闭
Workbooks.Close

如果文件使用中改动过内容, 那么该命令使用时会弹出提示对话框, 询问是否保存.
如果要想不弹出提示对话框,可以使用第三或第四种文件关闭方法, 或者如下示例.

示例:
关闭工作簿“Book1.xls”,但不提示用户保存所作修订。“Book1.xls”中的所有修订都不
会保存。
Application.DisplayAlerts = False   '信息警告关闭
Workbooks("BOOK1.XLS").Close
Application.DisplayAlerts = True    '信息警告开启

四.关闭同时保存
Workbooks("filename.xls").Close savechanges:=True

五.关闭同时不保存
Workbooks("filename.xls").Close savechanges:=False

六.Excel程序的关闭
Application.Quit

说明:
使用本方法时,如果有未保存的工作簿处于打开状态,则 Microsoft Excel 将弹出一个对话
框,询问是否要保存所作修改。

为防止这一情况出现,可在使用 Quit 方法前保存所有的工作簿或将 DisplayAlerts 属性设
置为 False。如果该属性为 False,则 Microsoft Excel 退出时,即使存在未保存的工作簿
退出,也不会显示对话框,而且不保存就退出。如果将一个工作簿的 Saved 属性设置为 Tr
ue,但是并没有将其保存到磁盘上,则 Microsoft Excel 在退出时不会提示保存该工作簿。

七.工作簿的密码保护与撤销
保护工作簿使其不至被修改。
Workbooks(“工作簿名”).Protect (Password, Structure, Windows)
Password   Variant 类型,可选。为一个字符串,该字符串为工作表或工作簿指定区分大小写的密码。如果省略本参数,不用密码就可以取消对该工作表或工作簿的保护。否则,必须指定密码,通过密码来取消对该工作表或工作簿的保护。如果忘记了密码,就无法取消对该工作表或工作簿的保护。最好在安全的地方保存一份密码及其对应文档名的列表。
Structure   Variant 类型,可选。如果为 True,则保护工作簿结构(工作表的相对位置)。默认值为 False。
Windows   Variant 类型,可选。如果为 True,则保护工作簿窗口。如果省略本参数,则窗口不受保护
如:Workbooks(“学生档案”).protect ”1234”

Workbooks(“学生档案”).Unprotect (Password)
Password   Variant 类型,可选。指定用于解除工作表或工作簿的保护的密码,此密码是区分大小写的。如果工作表或工作簿不设密码保护则忽略本参数。如果对工作表省略此参数,而该工作表又设有密码保护,Microsoft Excel 将提示您要输入密码。如果对工作簿省略此参数,而该工作簿又设有密码保护,本方法将失败。

[此贴子已经被作者于2006-7-22 14:00:14编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 18:01 | 显示全部楼层


示例:(使用了4个文件,宏程序文件操作了另外三个文件,还涉及到文件打开另存对话框)

一. 在test.xls文件中编写一个宏程序test,完成以下内容.打开当前目录下test1.xls
文件,计算sheet1工作表上单元格a1到a10的数据剩上(0-1)的随机数,计算结果保存在一个新
建工作簿的sheet1的a1到a10上,且结果还要保存在一个任意打开的Excel文件下,示例中打开
test2.xls文件, 完成后关闭Excel程序.

test.xls 模块中
Sub test()
    Dim i As Integer, flag As Boolean, fm
    Dim aa, bb, cc, temp
   
    Application.ScreenUpdating = False  '屏幕刷新关闭
    Application.DisplayAlerts = False   '信息警告关闭
   
    Workbooks.Open ThisWorkbook.Path & "\test1.xls"  '打开文件test1.xls
    Set aa = ActiveWorkbook.Sheets("Sheet1")
   
    flag = False
    Do While Not flag                                  '对话框打开已有Excel文件
        fm = Application.GetOpenFilename(fileFilter:="Excel files (*.xls),*.xls, _
All files (*.*),*.*")
        If fm <> False Then
            Workbooks.Open fm
            Set bb = ActiveWorkbook
            flag = True
        End If
    Loop
       
    Workbooks.Add
    Set cc = ActiveWorkbook

    With cc.Sheets("Sheet1")
        For i = 1 To 10
            temp = aa.Cells(i, 1) * Int((10 * Rnd) + 1) ' 生成 1 到 10 之间的随机数值
            .Cells(i, 1) = temp
            bb.Sheets(1).Cells(i, 1) = temp
        Next
    End With
   
    flag = False
    Do While Not flag                 '循环要求必须输入文件名或选择文件名
        fm = Application.GetSaveAsFilename(fileFilter:="Excel files (*.xls),*.xl _
s,All files (*.*),*.*")
        If fm <> False Then
            cc.SaveAs fm
            flag = True
        End If
    Loop
   
    bb.Save   '保存
   
    Set aa = Nothing: Set bb = Nothing: Set cc = Nothing   '设置对象变量为空
   
    Application.Quit   '关闭Excel
   
    Application.ScreenUpdating = True   '屏幕刷新关闭
    Application.DisplayAlerts = True    '信息警告开启

End Sub

TA的精华主题

TA的得分主题

发表于 2006-7-20 18:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主真是好人,谢谢分享,有机会我请客哈!

TA的精华主题

TA的得分主题

发表于 2006-7-20 18:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,为啥子我的签名显示不出来呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 18:54 | 显示全部楼层
QUOTE:
以下是引用shmilywjg在2006-7-20 18:06:55的发言:
楼主,为啥子我的签名显示不出来呢?

是不是你的级别不到呀

TA的精华主题

TA的得分主题

发表于 2006-7-20 18:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-7-20 18:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 05:26 , Processed in 0.044802 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表