ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA入门之一《与代码亲密接触》

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-11 01:58 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:数据类型和基本语句

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 

因本帖图片链接失效,影响您的阅读,真是无奈。

有几位朋友曾将帖子汇集成电子书,对他们的辛勤工作,再次感谢。

下面是其中的两个:

http://club.excelhome.net/forum.php?mod=viewthread&tid=294212 (alzeng )

http://club.excelhome.net/forum.php?mod=viewthread&tid=382527 (wbs1974 )

 

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 

去除粗枝繁叶,留一根主干,作攀天之梯,目标是那金碧辉煌的VBA殿堂。

一路上,两旁都是漂亮的姑娘,不要三心二意,请跟我走。

闲话少说,言归正传。

打开Excel,新建一工作簿。

0如果你的工具栏中找不到“控件工具箱”,请打开它。控件工具箱可悬浮在工作表中,也可停靠在窗口的四周(如4楼图样)。


1点击命令按钮,在工作表中拖动鼠标至适合大小。


评分

6

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 01:59 | 显示全部楼层

与代码亲密接触2

2按钮出来了。通过右键菜单,可以编辑它的文字。


3点击控件工具箱中的“属性”按钮,或如上图所示的右键菜单中点击“属性”。按钮的前景色、背景色、字体等统称为“属性”。


TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

与代码亲密接触3

4设置属性虽然有趣,但总不过瘾,来点刺激的。双击按钮,眼前是另一片天地,它叫做VB编辑器(或称VBE),VBA的一切神奇将从这里诞生。


5依样画葫芦。在光标处输入下面一行代码:

QUOTE:

MsgBox "哈哈,我会 VBA 啦……"


msgbox 不拘大小写,后面有一个空格,引号是半角引号。

输入完毕后点击工具按钮返回Excel窗口。


TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:01 | 显示全部楼层

与代码亲密接触4

6点击控件工具箱中的“退出设计模式”按钮。“芝麻开门”按钮周围的小圈圈没了,转换成运行模式。

这一步经常要做的,注意。


7点击按钮“芝麻开门”,这就是代码运行的效果图,一个系统对话框。


重复练习一遍:点击“设计模式”按钮,再点击“芝麻开门”,这时按钮被选择。

点击“退出设计模式”,再点击“芝麻开门”,又进入运行状态。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:02 | 显示全部楼层

与代码亲密接触5

8现在,由工作表界面切换到VBE界面,下列方式可任选一种:

F按Alt+TAB选择VBE图标,松开复合键。


F工作表标签右键菜单-查看代码。


F菜单:工具-宏-VB编辑器。

FAlt+F11。

F双击控件。


 

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:03 | 显示全部楼层

与代码亲密接触6

9将代码修改为:

QUOTE:
Private Sub CommandButton1_Click()
    ctxt = "哈哈,我会 VBA 啦……"
    MsgBox ctxt, 64, "宣告"
    End Sub

实际修改的是中间的黑色字体部分。

代码中,蓝色处是一个空格,粉红色处是一个逗号。

命令后面、命令与命令之间,间隔一个以上的空格。

参数与参数之间,用逗号分开。

运行代码的办法,除了在工作表上点击按钮,还可以在VBE窗口中直接运行,把光标定位到代码首尾之间(从“Private Sub CommandButton1_Click()”到“End Sub”),如下图所示执行菜单命令或按F8,逐行执行代码。


如果执行“运行-运行子过程”命令(按F5),将连续执行过程首尾之间的全部代码。

 

10代码的解释:

ctxt叫做自定义变量,就像我们代数中常用的x、y、z一样。

ctxt = "……" 叫做赋值,跟代数中的赋值是一样的。

11MsgBox是什么东西?我们总是想知道。

请选择MsgBox(实际上,只需把光标定位到命令中的任意位置均可),按F1键,系统将弹出帮助窗口并显示该命令的帮助。


 


TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:04 | 显示全部楼层

与代码亲密接触7

12在B2:D4单元格输入一些数据备用。为工作表添加第二个按钮。


这个按钮的功能是:用鼠标点击这些单元格,然后点击按钮,像上例一样弹出一个对话框,显示的内容为这个单元格的名称和内容。

13双击按钮。在光标闪烁处,输入代码:

msgbox "你点击的单元格是:" & 

(蓝色位置表示空格),接下来要输入的代码是“ActiveCell.Address”,输入这些代码可以使用键盘输入,也可以从属性列表中选择。按Ctrl+J,在代码窗口中弹出一个下拉列表,就是属性/方法列表,将光标移动到ActiveCell,然后点击键盘上的小数点“.”,结果ActiveCell连同小数点被输入到代码窗口中。

窗口中继续显示属性列表中,选择属性“Address”,按空格键输入该属性。


接着,输入“& Chr(13) _”,回车换行,继续输入:

& "该单元格的值等于:" & ActiveCell.Value, 64, "神算子"

完整的代码是:

QUOTE:
Private Sub CommandButton2_Click()
     MsgBox "你点击的单元格是:" & ActiveCell.Address & Chr(13) _
     & "该单元格的值等于:" & ActiveCell.Value, 64, "神算子"
     End Sub

 

辛苦了。返回Excel,退出设计模式,先看一下运行的效果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:04 | 显示全部楼层

与代码亲密接触8

14切换到Excel,退出设计模式,测试代码:

用鼠标点击单元格D4,然后点击按钮。效果如下所示:


点击确定按钮。

点击其它单元格,再点击按钮,多试几遍。

 

15代码解释:

ActiveCell表示活动单元格,即光标所在的单元格,Address表示地址,中间的“.”是连接符。

ActiveCell.Address 即是:当前单元格地址

ActiveCell.Value 即是:当前单元格

点击D2单元格,因为当前单元格的地址是“$D$2”,即:

ActiveCell.Address = "$D$2"

D2单元格的值是“2006-8-10”,即:

ActiveCell.Value = "2006-8-10"

所以,点击按钮后,对话框中显示的信息为:

QUOTE:

你点击的单元格是:$D$2
该单元格的值等于:2006-8-10

Chr(13)代表一个回车符(信息分两行显示)。

后面的下划线“_”与显示无关,写代码的时候,如果一行太长,不方便阅读,可使用一个下划线把代码分两行或多行书写,不影响运行。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:05 | 显示全部楼层

与代码亲密接触9

建议中间休息一下再继续,这一节任务不轻。

16添加第三个按钮,编辑文字为:“点石成金”。

这里插一下,这些按钮上的文字称为“标签”(标签总是贴在上面的)。

不同的按钮可以使用相同的标签,但每一个按钮有一个独立的名字,看属性框的第一行。

与代码挂钩的正是这些名称。代码Private Sub后面的就是控件的名称。


17“神算子”功能实际是读取单元格属性。我们也可以设置单元格属性:用代码给单元格输入内容,改变单元格的字体、字号、颜色等,把单元格修饰得漂亮一点。

双击按钮,在光标处输入代码:

QUOTE:

Range("b8").Value = Range("b2").Value

退出设计模式,点击按钮运行它,先看看效果如何。

单元格B8被输入了与单元格B2相同的文字。

原来这Range("b8")即表示单元格B8。

代码解释:单元格B8的值=单元格B2的值。

 

18除了用Range(),单元格还可用以下形式表示:

QUOTE:

[b8].Value = [b2].Value

效果与Range()形式完全相同,可把这一行代码代替原来代码试试。

还可以这样:

 

QUOTE:
Cells(8, 2).Value = Cells(2, 2).Value

 

19属性Value可以省略
上面代码一一可以省略为以下形式:

Range("b8") = Range("b2")
[b8] = [b2]
Cells(8, 2) = Cells(2, 2)

 

在VBE窗口中,绿色(默认)文字表示是注释文字,不被运行的。

前面加一半角的单引号即设置后面的文字为注释文字。删除前面的单引号即是取消注释功能。

20单元格除了“地址”、“值”两个属性以外,还有许多属性,如:宽度、高度、字体、字号等等。

一一把下面代码复制到过程中,运行它,观察单元格的变化。

ActiveCell.ColumnWidth = 20 '设置活动单元格的宽度为20
ActiveCell.RowHeight = 40 '设置活动单元格的高度为40
ActiveCell.Font.Name = "黑体" '设置活动单元格的字体的名称为“黑体”
ActiveCell.Font.Size = 20 '设置活动单元格的字体的尺寸为20

也可用指定的单元格代替活动单元格(ActiveCell),如:Range("d3").Font.Size=30。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-11 02:06 | 显示全部楼层

与代码亲密接触10

21如何读写其它工作表的单元格呢?

把工作表sheet2重命名为VBA2,添加第四个按钮“暗渡陈仓”,事件代码为:

QUOTE:

Sheets("VBA2").Range("D5").Value = "明修栈道,暗渡陈仓。"


评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-20 19:27 , Processed in 0.035787 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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