ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] EXCEL\PPT中同玩VBA——VBA编程基础及简单程序实例(从头开始)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-10-3 08:50 | 显示全部楼层 |阅读模式
1.你会在EXCEL中生成如图所示的结果吗?
Excel操作示范http://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3206732

2009-10-03_101517.png
2.你相信下图(PPT)可以执行VBA程序吗?
幻灯片:http://club.excelhome.net/viewthread.php?tid=488588&page=3#pid3206144
3.SQL语言能在VBA里用吗?ADO\API你能精通吗?
4.VBA能绘图吗?(Excel中画的美丽的几何图案,下右)

2009-10-03_095251.png 艺术图案.jpg
————————————————————————
看完后也许你就有答案了

-------------------------------------------------------------------------------
目录
-------------------------------------------------------------------------------
对象及属性http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205794
VBA数据类型概述
http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205797
http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205798
http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205799
数据类型的转换http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205800
常量/变量和数组http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205802
变量及其作用域http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205805
数组与数组函数
http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205806
http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205807
运算符和表达式http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205812
___________________________________________________________
代码示例开始
___________________________________________________________
在PPT中演示程序实例http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205856
自定义类型知多少http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205877
逻辑演算懂几多http://club.excelhome.net/viewthread.php?tid=488588&page=1#pid3205885
Excel中逻辑与算符演算程序(代码提示)
http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3205930
参考答案http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3205983
模块级变量http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3205987
文本内容控制函数http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3205989
清空文本框http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3205991
最大值比较函数
http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3205994
http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3205996
文本框取值 http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3206011
判断语句:
1.P判断语句http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3206014
2.If多条件判断http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3206016
3.select多条件判断http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3206020
循环语句:
1.Do循环
http://club.excelhome.net/viewthread.php?tid=488588&page=2#pid3206060
http://club.excelhome.net/viewthread.php?tid=488588&page=3#pid3206163
2.For循环
http://club.excelhome.net/viewthread.php?tid=488588&page=3#pid3206169
http://club.excelhome.net/viewthread.php?tid=488588&page=3#pid3206196
3. while循环http://club.excelhome.net/viewthread.php?tid=488588&page=3#pid3206245
4. If goto  循环http://club.excelhome.net/viewthread.php?tid=488588&page=3#pid3206305
了解数组http://club.excelhome.net/viewthread.php?tid=488588&page=3#pid3206580
排序报时http://club.excelhome.net/viewthread.php?tid=488588&page=5#pid3210470
从题海里随机出题的加载宏http://club.excelhome.net/viewthread.php?tid=488588&page=5#pid3210636
-----------------------------------------------------------------------------------------------
VBA进阶

-----------------------------------------------------------------------------------------------
API_新人进阶必读(ldy)http://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3206846
-----------------------------------------------------------------------------------------------
SQL部分
-----------------------------------------------------------------------------------------------
SQl入门教程http://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3206766(By jonah702)
ADO对象模型http://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3206796(By geteng)
ADO应用之万里挑一http://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3206818(by LDY
我们来学SQLhttp://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3206812Scarlett_88
傻瓜也会SQL(彭希仁)http://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3207155
-----------------------------------------------------------------------------------------------
VBA绘图篇

-----------------------------------------------------------------------------------------------
Excel中画的美丽的几何图案
http://club.excelhome.net/viewthread.php?tid=488588&page=4#pid3206782
待续……

[ 本帖最后由 zhaozyuan 于 2009-10-7 09:43 编辑 ]

点评

为什么下面的几个链接和红色字对不上?  发表于 2013-10-11 18:32

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 08:51 | 显示全部楼层
在论坛上,大部分VBA程序都是EXCEL中编的,其实PPT也能玩。不过基础知识是一样的,那么咱们先看一下(或者复习一下)VBA编程基础


VBA简介及进入VBE编程环境

VBAVisual Basic for Application)是MicrosoftOffice组件开发设计的程序语言。VBA实际上是Visual Basic的子集,其语法与Visual Basic完全兼容。
VBA
以灵活、功能更强等优点,受到广大高级用户的青睐。

按快捷键Alt+F11,或者点击菜单栏

“工具(T)→“宏(M)”→“Visual Basic 编辑器(V)
进入VBE(VBA编辑器)

MSOffice Application中的对象及其属性
无标题.JPG

[ 本帖最后由 zhaozyuan 于 2009-10-4 09:49 编辑 ]

TA的精华主题

TA的得分主题

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

VBA数据类型概述

VBA数据类型概述
类型
存储空间
范围
1
Byte
1字节
0 255
1
1
1
1
1
1
1
1
128
64
32
16
8
4
2
1
255
2
Boolean
2字节
True
False

3
Integer
2字节
-32,768 32,767
4
Long(长整型)
4字节
-2,147,483,648 2,147,483,647
5
Single
(
单精度浮点型)

4字节
负数时从 -3.402823E38 -1.401298E-45;正数时从 1.401298E-45 3.402823E38
6
Double
(
双精度浮点型)

8字节
负数时从 -1.79769313486232E308
-4.94065645841247E-324;正数时从4.94065645841247E-324 1.79769313486232E308
7
Currency
(
变比整型)

8字节
-922,337,203,685,477.5808 922,337,203,685,477.5807




[ 本帖最后由 zhaozyuan 于 2009-10-3 09:19 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 08:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

VBA数据类型概述

8
Decimal
14字节
没有小数点时为 +/-79,228,162,514,264,337,593,543,950,335,而小数点右边有 28 位数时为 +/-7.9228162514264337593543950335;最小的非零值为 +/-0.0000000000000000000000000001
9
Date
8字节
100 11日到 9999 12 31 '#1/1/1993#
10
Object
4字节
任何
Object 引用(Set语句声明)
11
String
(
变长)

10字节加字符串长度
0 到大约 20 亿
12
String(定长)
字符串长度
1 到大约 65,400
13
Variant
(数字)
16字节
任何数字值,最大可达 Double 的范围
14
Variant
(字符)
22字节加字符串长度
与变长 String 有相同的范围
15
用户自定义(利用 Type
所有元素所需数目
每个元素的范围与它本身的数据类型的范围相同
Private Type Students '定义学生

StuName As String
'
定义学生名为字符串类型

StuBirthday As Date '定义学生生日为日期型

StuSex As Integer '定义性别整型(0,1男)
End Type
16
枚举类型
Public Enum Sex
=0
=1
End Enum




[ 本帖最后由 zhaozyuan 于 2009-10-3 09:20 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 08:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
注意 任何数据类型的数组都需要 20 个字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 字节之 Integer 数据元所组成的一维数组中的数据,占 8 个字节。这 8 个字节加上额外的 24 个字节,使得这个数组所需总内存空间为 32 个字节。
包含一数组的 Variant
比单独的一个数组需要多 12 个字节

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 08:59 | 显示全部楼层

数据类型的转换

数据类型的转换
VBA编程中,常常需要将数据的某种类型转换成另一种特定的数据类型。以便于统一两种数据类型,进行数据运算。
例如,在 Cstr(2008) & "奥运会" 表达式中,"奥运会" 是字符类型,而2008是整型类型,所以不能进行合并字符。因此,通过Cstr() 函数将整型数据转换为字符。
Debug.Print
2 + "pop"
提示类型不匹配
转换数据类型常用函数:
转换函数
目标类型
转换函数
目标类型
转换函数
目标类型
Cbyte
字节
Cint
整型
Ccur
货币
Cstr
字符
Csng
单精度
Cvar
变体
Clng
长整型
Cdbl
双精度
Cdate
日期


[ 本帖最后由 zhaozyuan 于 2009-10-3 09:18 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 08:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

常量/变量和数组

常量/变量和数组
常量 常量是不随时间变化的某些量和信息,也可以表示某一数值的字符或者字符串。
直接常量
Area=r*r*3.14
符号常量 定义符号常量的形式如下:

Const name [As

type] =Value

Public Const PI as Single=3.1415926

  • 系统常量 VBA系统内部提供的一系列各种不同用途的符号常量
    如色彩常量“vbBlack”表示黑色,比用数值“0X0”更直观易懂


[ 本帖最后由 zhaozyuan 于 2009-10-3 09:21 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 09:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

变量及其作用域

变量变量分为内存变量和字段变量两种,其名称均可用字母、汉字、数字和下划线组成。但不能与命令和函数名相同。
定义变量的形式如下:
Dim name [As type]
Dim n As Integer

强制声明变量:
如果在程序中引用未声明变量,此时系统会自动分配为Variant数据类型。即所谓的隐式声明,虽然这看起来很方便,但不利于错误调试,且Vairant数据类型占内存空间大,影响速度
Option Explicit
·
变量的作用域:
1.过程级变量
Sub test()

Dim Strname As String

……
End
sub

2.模块级
Option Explicit
Dim Strname As String
3.工程级
工程级变量也称全局变量,可在工程中的各个模块中访问射中变量的内容。在模块的声明部分用Public关键字声明的变量就为工程级变量。
Option Explicit
Public
Strname As String

[ 本帖最后由 zhaozyuan 于 2009-10-3 12:56 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 09:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

数组与数组函数

数组数组的声明方式和其他变量是一样的,可以使用Dim、Static、Private或Public语句声明。数组变量与标量变量(非数组)的不同在于通常必须指定数组的大小。
若数组的大小被指定的话,则它是个固定大小的数组。若程序运行时数组的大小可以被改变,则它是个动态数组。

1.一维数组
Dim 数组名(上界) As 数据类型
Dim 数组名(下界 To 上界) As 数据类型

2.二维数组
Dim 数组名(第1维上界, 2维上界) As 数据类型
Dim 数组名(第1维下界 To 上界, 2维下界 To 上界) As 数据类型

3.动态数组
Dim Darray()
As Integer, I
As Integer

i=Val(InputBox("请输入数组上界","定义动态数组",5))
ReDim
Darray(i)


[ 本帖最后由 zhaozyuan 于 2009-10-3 09:30 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 09:02 | 显示全部楼层

数组与数组函数(2)

4.数组函数
Array(变量或常量,……,变量或常量)
'生成数组

Marr=Array(1,2,3)
Dim A( 1 To 100, 0 To 3, -3 To 4)

IsArray(Marr)
'判断变量是否为数组,对Marr,返回True
LBound(数组名 [,维数])
'返回指定维数组的下界
UBound(数组名 [,维数])
'返回指定维数组的上界
Lbound(A,1)
'返回值为1
Lbound(A,2)
'返回值为0
Lbound(A,3)
'返回值为-3



[ 本帖最后由 zhaozyuan 于 2009-10-3 09:31 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 22:44 , Processed in 0.048108 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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