Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 14566|回复: 8

[分享] 跟一个从零开始学excel vba的新手的对话过程(简单程序实例)

[复制链接]
发表于 2012-4-14 20:02 | 显示全部楼层 |阅读模式
请教编写vba程序要用到函数吗?
函数和程序是姐妹关系,在程序中经常用到函数来实现某些功能
能举个例子说明吗?
比如:if [a1].value="编程太难"  then msgbox "a1单元格是“编程太难”"
上面程序中的 if 就是个最基本函数,用于条件判断
看不懂,好像是天书,是什么意思啊?
上面代码意思是:如果a1单元格中输入的是编程太难 ,那么就会弹出一个消息框,显示
a1单元格是“编程太难“  这句话
如果不是“编程太难“,就不会弹出这个框框
请问上面的代码如何实现功能?
你可以在工作表里面添加一个按钮,用菜单的的控件工具箱的一个 按钮 形状的东东,单击一下然后画出一个 命令按钮
然后双击按钮,进入代码编辑 界面,把那句代码复制过来,放在中间位置,如下:
Private Sub CommandButton1_Click()
if [a1].value="编程太难"  then msgbox "a1单元格是“编程太难”"
End Sub
下面进行测试:
在a1单元格输入”编程太难“,然后点击按钮,看一下出现了什么。
请问,我删除了单元格汉字,怎么没有 消息框 呢?
我开始讲过,if函数本身就是条件判断,如果条件为真,即成立,就会执行后面的代码
你删除变成空格,条件就不成立了呀,当然没框 了
我终于做出了第一个程序。。。。。。。。。。。。。
接着你可以把按钮改名,办法是 控件工具箱上第一个按钮(绿色的),点击一下进入可编辑状态
看到了,按钮周围出现了一些小圆圈。。。。
然后 按钮上点击右键,选择  属性
找到caption 的这个属性,双击CommandButton1改为”编程不难,不会炒鱿鱼的“
请教如果a1单元格是1,就跳出“是1”如果a1单元格是2,就跳出“是2”  ,怎么办?
你按照上面的方法,再做第二个按钮,输入复制下面代码:

aa = [a1].Value
If [a1] = 1 Then MsgBox "是:" & aa
If [a1] = 2 Then MsgBox "是:" & aa

把按钮改名为”单元格值的判断“
麻烦您解释一下,aa=[a1].value 是什么意思?
aa=[a1].value 是什么意思:
这里的aa是个变量,表示你在a1单元格中输入的值,接着下面就能引用变量的值了
msgbox "是:aa", 这样写可以吗?
不可以的
MsgBox "是:aa"   结果只能显示      是:aa
变量如果包括在双引号之内,就不再是变量,只是普通字符aa
"是:" & aa
这里的&起到了连接作用,左边是字符,右边是变量
而变量aa的值就是你在单元格输入的值,而不是aa字符
请问:比如单元格a1 ,这里的行次1我想让它成为可变, 怎么办?
这里你先知道单元格的几种表示方法:
同样是a1单元格,有下面 几种常用的表示方法:
cells(1,1)
range("a1")
[a1]
我先介绍这三种,它们都表示a1单元格,只是形式不同
太好了,我过去就是不知道怎么引用单元格,只知道a1 、 b1等。。。。。。
cells(行,列),如
cells(2,3)
表示第2行,第3列,即C2单元格
现在讲怎么用变量表示其中的行或列
先看:认识一下for循环赋值:
for aa=1 to 10
cells(aa,1).value=aa
next
老师,这个代码什么作用?
你先另外做个按钮,把代码复制过去,看一下达到什么效果。
单元格自动出现了10个数,太灵验了,这是我经常碰到但束手无策的。。。。。。
这就是今后常用到的循环赋值在A列前10个单元格自动产生数字1-10
那请老师介绍一下代码的意思?
for aa=1 to 10            '1是初值,10是终值
cells(aa,1).value=aa
next
其中for循环结构是  for 变量=初始值 to 终值 step 步长
这里的步长没写,默认为1
步长是什么意思?
如果我改为 for aa=1 to 10 step 2
加上步长2,则单元格产生数字就不连续了,这里的aa值就不是1,2,3,4,...10
而是1,3,5,7,9
你在学校里肯定会跳远吧,如果步长值 是2,则是二级跳,如果是3,则是三步一跳
补充一下 for aa=1 to 10 step 2  只会在a1,a3,a5,a7,a9这几个单元格自动产生值,即隔行赋值
for aa=1 to 10
cells(aa,1).value=aa
next
这里的红色代码是赋值语句,cells(aa,1)表示行是变量aa,列是1,即第1列
其中的aa变量值、个数已经由for aa=1 to 10限定,共有10个变量值
注意for循环后面应该有next ,即通俗讲,next是执行下一个变量值的意思,比如第一次循环时,aa是1,next以后aa变量是2,依次类推
老师,对了,我不用cells表示,用range?
用range表示方法是  range("a" & aa)
例如:
Private Sub CommandButton5_Click()
For aa = 1 To 10 Step 2
Range("a" & aa) = aa
Next
End Sub

评分

参与人数 1 +3 收起 理由
jds + 3 赞一个

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-4-14 20:59 | 显示全部楼层
回复

使用道具 举报

发表于 2012-4-14 20:59 | 显示全部楼层
回复

使用道具 举报

发表于 2012-4-15 22:33 | 显示全部楼层
                 
回复

使用道具 举报

发表于 2012-4-18 07:53 | 显示全部楼层
学习一下,谢谢!
回复

使用道具 举报

发表于 2012-4-18 08:07 | 显示全部楼层
学习一下,谢谢!
回复

使用道具 举报

发表于 2014-4-17 13:52 | 显示全部楼层
学习一下,谢谢!
回复

使用道具 举报

发表于 2016-4-8 22:05 | 显示全部楼层
本帖最后由 王庆友 于 2016-4-8 22:06 编辑

Private Sub CommandButton1_Click()
if [a1].value="编程太难"  then msgbox "a1单元格是“编程太难”"
End Sub


在End Sub前,好像少了end if

正确的可能是
Private Sub CommandButton1_Click()
if [a1].value="编程太难"  then msgbox "a1单元格是“编程太难”"
End If
End Sub

回复

使用道具 举报

发表于 2016-4-8 22:29 | 显示全部楼层
学习了。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 00:34 , Processed in 0.315563 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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