海南省BIM中心

 找回密码
 注册请加微信xycost

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 450|回复: 9

VBA入门

[复制链接]

0

主题

2780

帖子

2556

积分

论坛游侠

Rank: 1

积分
2556
发表于 2014-6-22 19:33:05 | 显示全部楼层 |阅读模式
新建一个EXCEL文件,用绘图插入一个矩形,点击右键,在菜单中点击指定宏,再点击新建。
会出现
Sub 矩形1_单击()
End Sub

回复

使用道具 举报

0

主题

2780

帖子

2556

积分

论坛游侠

Rank: 1

积分
2556
发表于 2014-6-22 19:33:05 | 显示全部楼层
在两句中间加入Sheets("sheet1").Range("a1") = 100
Sub 矩形1_单击()
Sheets("sheet1").Range("a1") = 100
End Sub

回复 支持 反对

使用道具 举报

0

主题

2780

帖子

2556

积分

论坛游侠

Rank: 1

积分
2556
发表于 2014-6-22 19:33:05 | 显示全部楼层
Sub 矩形1_单击() Sheets("sheet1").Range("a1") = 100 Sheets("sheet1").Cells(2, 1) = 200 End Sub
这是两种单元格的基本录入方法,

回复 支持 反对

使用道具 举报

0

主题

2900

帖子

2735

积分

论坛游侠

Rank: 1

积分
2735
发表于 2014-6-22 19:33:05 | 显示全部楼层
输入下面的循环程序
Sub 矩形1_单击() Dim X As Integer 声明 X为整数型变量
For X= 1 To 20 X的值为从1到20循环
Sheets("sheet1").Cells(x, 1) = x 单元CELLS(X,1)的值班等于X值
Next
End Sub

回复 支持 反对

使用道具 举报

0

主题

2916

帖子

2713

积分

论坛游侠

Rank: 1

积分
2713
发表于 2014-6-22 19:33:06 | 显示全部楼层
刚才粘贴错了
Sub 矩形1_单击()
Dim i As Integer
For i = 1 To 20
Sheets("sheet1").Cells(i, 1) = i
Next
End Sub

回复 支持 反对

使用道具 举报

0

主题

2916

帖子

2713

积分

论坛游侠

Rank: 1

积分
2713
发表于 2014-6-22 19:33:06 | 显示全部楼层
补充一点
单元格在VBA的表示方法:
1、Range("单元格地址") 如Range("a1") 即为A1单元格
2、CELLS(行,列) 如CELLS(1,1)也为A1单元格,CELLS(2,1)为 A2单元格
工作表在VBA中表示方法:sheets("工作表名")

回复 支持 反对

使用道具 举报

0

主题

2916

帖子

2713

积分

论坛游侠

Rank: 1

积分
2713
发表于 2014-6-22 19:33:06 | 显示全部楼层
再加一句,是如何在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"))

回复 支持 反对

使用道具 举报

0

主题

2801

帖子

3430

积分

论坛游侠

Rank: 1

积分
3430
发表于 2014-6-22 19:33:06 | 显示全部楼层
每个函数前都要加Application.WorksheetFunction.吗?
如果是单个调用必须加
如果是多个调用就可以用WITH语句省去后面的
如Sub 矩形1_单击()
Dim i As Integer
For i = 1 To 20
Sheets("sheet1").Cells(i, 1) = i
Next
With Application.WorksheetFunction
Range("a21").Value = .Sum(Range("a1:a20")) 注意SUM前面要有个点才行
Range("a22").Value = .Average(Range("a1:a20"))
End With
End Sub

回复 支持 反对

使用道具 举报

0

主题

2801

帖子

3430

积分

论坛游侠

Rank: 1

积分
3430
发表于 2014-6-22 19:33:06 | 显示全部楼层
如果只是求前20行的和放在最后一行:
Sub 矩形1_单击()
Dim i As Integer
Dim YYY As Integer
For i = 1 To 20
Sheets("sheet1").Cells(i, 1) = i
Next
YYY = Application.WorksheetFunction.CountA(Columns("A"))
Cells(YYY + 1, 1) = Application.WorksheetFunction.Sum(Range("A1:A20"))
End Sub
如果是对A列所有的都求和:
Sub 矩形2_单击()
Dim i As Integer
Dim YYY As Integer
For i = 1 To 20
Sheets("sheet1").Cells(i, 1) = i
Next
YYY = Application.WorksheetFunction.CountA(Columns("A"))
Cells(YYY + 1, 1) = Application.WorksheetFunction.Sum(Range(Cells(1, 1), Cells(YYY, 1)))
End Sub
在本例中是增加了个整数变量YYY,为什么要命名它为整数,是因为单元格个数是以整数表示的,没有听说过第1.2个单元格吧
把A列的非空单元格个数赋给YYY,然后在后面的程序就是以调用它了
Sum(Range(Cells(1, 1), Cells(YYY, 1))) 是变动的单元格求和
RANGE(CELLS(),CELLS())是表示一个区域
比如Range(cells(1,1),cells(20,1))和Range("a1:a20")是一样的,为什么要这样表示是因为CELLS表示单元格时可以加入变量

回复 支持 反对

使用道具 举报

0

主题

2801

帖子

3430

积分

论坛游侠

Rank: 1

积分
3430
发表于 2014-6-22 19:33:06 | 显示全部楼层
Dim i As Integer 这之间的空格只是为了区别这是两个独立的词,当然是必须的,这也和正常的英语语法一致
单词之间或前后多余的空格会被系统自动多去少补,但是在APPLICATION 中间加空格 APP LICATION就不行了,因为系统会把它当作两个词对待
用控件制作的步骤一般是:
“视图―>工具栏―>控件工具箱”,在制作的控件按钮点右键选“查看代码”进入编辑代码模式,编辑完退出后,按钮还是不能使用,我这样操作有问题吗。请问退出设计模式是怎样操作的?还有窗体中的按钮是怎么做的?

回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条


QQ|小黑屋|手机版|Archiver|ChinaBIM ( 琼ICP备14001050号-1 )

GMT+8, 2024-10-5 15:30 , Processed in 0.026976 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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