找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 11942|回复: 63

[教学]:EXCEL VBA 入门

[复制链接]
发表于 2005-4-12 13:16:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
新建一个EXCEL文件,用绘图插入一个矩形,点击右键,在菜单中点击指定宏,再点击新建。

会出现

Sub 矩形1_单击()


End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2005-4-12 13:16:40 | 显示全部楼层
在两句中间加入Sheets("sheet1").Range("a1") = 100

Sub 矩形1_单击()
Sheets("sheet1").Range("a1") = 100
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 13:17:21 | 显示全部楼层
再加一句:

Sub 矩形1_单击()
Sheets("sheet1").Range("a1") = 100
Sheets("sheet1").Cells(2, 1) = 200
End Sub


这是两种单元格的基本录入方法,都懂吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 13:18:45 | 显示全部楼层
再输入下面的循环程序

Sub 矩形1_单击()
Dim i As Integer
For i = 1 To 20
Sheets("sheet1").Cells(i, 1) = i
Next
End Sub

这个程序的结果A1至A20 的值分别为1到20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 13:20:23 | 显示全部楼层
下面解释一下

DIM  变量名称  AS   变量类型  



是声名变量用的    就象是平时别人给你介绍客人:他是干什么的,只是介绍了我们才能针对性的谈话。变量也一样,我们给程序介绍:这个是整数型,你没必要把他当作其他类型对待,这样系统对你声明的变量作整数型对待了,如果不介绍系统还要花费一定的内存去判断新出现的变量是什么?结果是多占用内存影响运算速度




Dim i  As  Integer          中间没有逗号
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 13:21:00 | 显示全部楼层
补充一点



单元格在VBA的表示方法:



1、Range("单元格地址")   如Range("a1")   即为A1单元格



2、CELLS(行,列)   如CELLS(1,1)也为A1单元格,CELLS(2,1)为 A2单元格



工作表在VBA中表示方法:sheets("工作表名")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 13:22:30 | 显示全部楼层
如果上面的明白,再加一句,是如何在A21计算出A1:A20的和

Sub 矩形1_单击()
Dim i As Integer
For i = 1 To 20
Sheets("sheet1").Cells(i, 1) = i
Next
Range("a21").Value = Application.WorksheetFunction.Sum(Range("a1:a20"))
End Sub

在VBA不直接支持在EXCEL工作表中的一些函数,如果要调用就必须加上Application.WorksheetFunction

SUM求和语法和工作表中的一样,但表示不能直接SUM(A1:A20),要用VBA的表示方法

SUM(Range("a1:a20"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 13:28:16 | 显示全部楼层
问题:就是每个函数前都要加Application.WorksheetFunction.吗?
回答:不是每一个函数的前面都要加Application.WorksheetFunction,有些函数不用加,在编辑器中输入VBA后再输入一个点会弹出一个列表,列表中函数在使用的时候不用加Application.WorksheetFunction,可以直接使用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 13:29:21 | 显示全部楼层
习题

请在工作表SHEET1的D4:D36单元格中填充4-36的数值,并在D37单元格中求和
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 18:33:02 | 显示全部楼层
习题答案:
Sub 矩形1_单击()
Dim i As Integer
For i = 4 To 36
Sheets("sheet1").Cells(i, 4) = i
Next
Range("d37").Value = Application.WorksheetFunction.Sum(Range("d4:d36"))
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 18:34:23 | 显示全部楼层
思考题:

在原来的基上 求A列的非空单元格个数,把结果输入到B1中
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 18:37:04 | 显示全部楼层
问题:

在VBA中A列怎么表示?

Columns(1)                       或
Range("A:A")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 18:40:02 | 显示全部楼层
思考题答案:

Sub 矩形1_单击()

Range("B1").Value = Application.WorksheetFunction.CountA(Range("a:a"))

End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 18:42:37 | 显示全部楼层
问题与解答:

可是再在A列加个数字,B1不会自动更新,怎么回事??

这个需要执行程序后才能计算的,不象在EXCEL工作表中的公式
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 18:46:24 | 显示全部楼层
做了这么多,我想将工作表上的内容清除掉,所以我录制了一段宏。主要内容如下:

Range("A1:A22").Select
    Selection.ClearContents
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-22 15:56 , Processed in 0.477203 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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