vba

  • Post author:
  • Post category:其他


1.注释

以 ‘ 开头的语句会被视为注释

以关键字  REM 开头的句子

2.MsgBox

函数显示一个消息框,并等待用户点击一个按钮,然后根据用户点击的按钮执行相应的操作

MsgBox(prompt[,buttons][,title][,helpfile,context])
' prompt - 在对话框中显示的字符串,换行可用Chr(13)或者Chr(10)表示
' buttons - 显示的按钮的类型,默认为0
' title - 对话框的标题,默认为应用程序名称
' helpfile - 为对话框提供的帮助文件
' context - 对helpfile进行编号,helpfile为context的基础

buttons参数值

  • 0 – “确定”
  • 1 – “确定” + “取消”
  • 2 – “中止” + “重试” + “忽略”
  • 3 – “是” + “否” + “取消”
  • 4 – “是” + “否”
  • 5 – “重试” + “取消”
  • 16 – 显示严重消息图标
  • 32 – 显示警告查询图标
  • 48 – 显示警告消息图标
  • 64 – 显示信息消息图标
  • 0 – 第一个按钮是默认的
  • 256 – 第二个按钮是默认的
  • 512 – 第三个按钮是默认的
  • 768 – 第四个按钮是默认的
  • 0 – 应用程序模式 – 当前的应用程序将不会工作,直到用户响应消息框
  • 4096 – 系统模式 – 所有的应用程序将不会工作,直到用户响应消息框

buttons返回值

  • 0 – “确定”被点击
  • 1 – “取消”被点击
  • 2 – “中止”被点击
  • 3 – “忽略”被点击
  • 4 – “是”被点击
  • 5 –  “否”被点击

3.InputBox

函数提示用户输入值。当输入值后,如果点击确定,则返回输入的文本。如果点击取消,则返回一个空字符串。

InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
' prompt - 在对话框中显示为消息对的字符串
' title - 标题名称
' default - 用户希望显示的文本框中的默认文本
' xpos - x轴的位置表示离屏幕左侧的距离
' ypos - y轴的位置表示离屏幕上方的距离
' helpfile - 帮助信息
' context - 帮助信息的编号

4.变量

Dim <<variable_name>> As <<variable_type>>
' 声明变量

数字数据类型

  • Byte – 0~255
  • Integer – 2个字节
  • Long – 4个字节
  • Single –
  • Double –
  • Currency – 8个字节
  • Decimal –

非数字数据类型

  • String – 字符串
  • Date – 日期
  • Boolean – true/false
  • Oblect – 对象
  • Variant(numeric)  – 比double大的数字
  • Variant(text) – 和string一样

5.常量

Const <<constant_name>> As <<constant_type>> = <<constant_value>>
' 为一个常量赋值 

6.运算符

算术操作符

  • “+” – 加
  • “-” – 减
  • “*” – 乘
  • “/” – 除
  • “%” – 取模
  • “^” – 指数运算

比较运算符

  • “=” – 判断是否相等
  • “<>” – 判断是否不想等
  • “>” – 判断是否大于
  • “<” – 判断是否小于
  • “>=” – 判断是否不小于
  • “<=” – 判断是否不大于

逻辑运算符

  • “AND” – 与
  • “OR” – 或
  • “NOT” – 非
  • “XOR ” – 异或

连接操作符

“+” – 数字则为加,字符串为连接

“&” – 连接两个值

7.判断

if (a>b) then
    xxx;
elseif (a>c) then
    xxxx;
else
    xxxxx;
end if
select case a
    case 1
        xxx
    case 2
        xxxx
    case 3
        xxxxx
    case else
        xxxxxx
end select

8.循环

for i = 0 to 10 step 2
    MsgBox("i = " & i)
next i
fruit = Array("apple", "banana", "watermelon")
Dim Fruitnames AS Variant
for each item in fruit
    Fruitnames = Fruitnames & item & Chr(10)
next
while count < 15
    count = count + 1
wend
do while count < 5
    count = count + 1
loop
do
    count = count + 1
loop while count < 3

9.字符串

InStr – 返回指定子字符串的第一个匹配项,从左到右搜索

InStr([start,]string1,string2[,compare])
' start - 从左侧开始,起始位置,默认为0
' string1 - 被搜索的字符串
' string2 - 去搜索的字符串
' compare - 进行二进制比较还是文本比较

InstrRev – 返回指定字符串的第一个匹配项,从右到左搜索

InstrRev(string1,string2[,start][,compare])
' start - 从右侧开始,起始位置,默认为0
' string1 - 被搜索的字符串
' string2 - 去搜索的字符串
' compare - 进行二进制比较还是文本比较

Lcase – 返回指定字符串为小写字母

Lcase(string)

Ucase – 返回指定字符串为大写字母

Ucase(string)

Left – 返回在左侧指定数量的字符串

Left(string,length)
' string - 字符串
' length - 从左侧,需要返回的字符数

Right – 返回在右侧指定数量的字符串

Right(string,length)
' string - 字符串
' length - 从右侧,需要返回的字符数

Mid – 根据指定的参数从字符串中返回特定数量的字符

Mid(string,start[,length])
' string - 字符串
' start - 指定字符串的起始位置
' length - 需要返回的字符数

Ltrim – 删除指定字符串最左侧的空格后返回一个字符串

LTrim(string)
' string - 字符串

Rtrim – 删除指定字符串最右侧的空格后返回一个字符串

RTrim(string)
' string - 字符串

Trim – 删除开头和结尾空格后返回字符串

Trim(string)
' string - 字符串

Len – 返回给定字符串的长度

Len(string)
' string - 字符串

Replace – 用另一个字符串替换字符串后返回字符串

Space – 用指定数量的空格填充字符串

Space(number)

StrComp – 比较两个字符串返回一个判断值

StrComp(string1,string2[,compare])
' string1 - 第一个比较的字符串
' string2 - 第二个比较的字符串
' compare - 执行二进制比较还是文本比较

String – 返回一个字符串

String(number, character)
' number - 重复的次数
' character - 重复的字符

StrReverse – 翻转一个字符串

StrReverse(string)
' string - 需要翻转的字符串

10.日期函数&时间函数

日期函数

Date – 返回当前的系统日期 – 待验证

date()

CDate – 将指定的输入转换为日期

cdate(date)
' date - 无规则的日期形式

DateAdd – 返回一个时间加上某一时间间隔后的时间

DateAdd(interval,number,date)
' interval - 那个时间,年或日或秒。。。。
'     d - 几号
'     m - 月份
'     y - 一年中的日子
'     yyyy - 年份
'     w - 星期
'     ww - 周
'     q - 季度
'     h - 小时
'     mi - 分钟
'     s - 秒数
' number - 时间间隔
' date - 日期时间

DateDiff – 返回两个时间之差

DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])
' interval - 表示求那个时间的差
' date1 - 第一个时间
' date2 - 第二个时间
' firstdayofweek - 指定一周的第一天
' firstweekofyear - 指定一年的第一天

DatePart – 返回给定输入日期值的指定部分

DateSerial – 返回给定年份,月份,日期的有效日期

FormatDateTime – 根据提供的参数格式化日期

IsDate – 判断是否为一个日期

Day – 表示某一天

Month – 表示某一月

Year – 表示某一年

MonthName – 返回指定日期的特定月份的名称

WeekDay – 返回星期几

WeekDayName – 返回星期几的名称


时间函数

Now – 返回当前系统的日期和时间

Hour – 返回当前的小时数

Minute – 返回当前的分钟数

Second – 返回当前的秒数

Time – 返回当前的系统时间

Timer – 返回自上午12:00点以来的秒数和毫秒数

TimeSerial – 返回小时,分钟和秒的特定输入的时间

TimeValue – 将输入字符串转换为时间格式的函数

11.数组

声明数组

' 声明一维数组
dim arr()
dim arr(5)
dim arr as array(11,22,33)
' 声明二维数组
dim arr(2,3) as variant
' 重新为array分配存储空间
redim [preserve] varname(subscripts)
    ' preserve - 表示是否要保留以前的数据

数组方法

LBound – 返回一个整数,对应于给定数组的最小下标

UBound – 返回一个整数,对应于给定数组的最大下标

Split – 将字符串拆分成数组。根据分隔符

Join – 将数组组合成字符串

Filter – 根据条件筛选字符串

IsArray – 判断是否是数组

Erase – 为数组变量恢复分配的内存

12.函数

语法

function fun_name(para)
    xxx
    xxx
    fun_name = aaa    ' 此句为返回值
end function

13.子过程

子过程没有返回值

子过程通过call来调用

因为子过程没有返回值,所以不能用来调用需要返回值的事情

14.事件

工作表事件

事件名称 事件说明
Activate 激活工作表时发生
BeforeDoubleClick 双击工作表之后,默认的双击操作之前发生
BeforeRightClick 右击工作表之后,默认的右击操作之前发生
Calculate 重新计算工作表之后发生
Change 工作表中的单元格发生更改时发生
Deactivate 工作表由活动工作表变为不活动工作表时发生
FollowHyperlink 单击工作表中的任意超链接时发生
PivotTableUpdate 在工作表中更新数据透视表之后发生
SelectionChange 工作表中所选内容发生更改时发生

工作簿事件

事件名称 事件说明
NewWorkbook 新建工作簿时发生
SheetActivate 激活工作表时发生
SheetChange 工作表内容发生改变时发生
WorkbookBeforeClose 关闭应用程序前发生
WorkbookBeforePrint 执行打印动作前发生

15.对象

Application – 应用程序对象


常用属性

ActiveCell – 当前激活的一个单元格,range对象

Selection – 被选中的多个单元格,range对象

ActiveWorkbook – 当前激活的一个工作簿,workbook对象

workbooks – 用于获取当前打开的多个工作簿

sheets – 用于获取当前被激活的工作簿下的所有工作表,包括图标

worksheets – 用于获取当前被激活的工作簿下的说有sheet表

caption – 标题

range – 指定的(一个或多个)单元格

ScreenUpdating – 屏幕更新


常用方法

Application.WorkBooks.Open("c:\test.xlsx")    ' 打开工作簿
Application.WorkBooks.Add                     ' 添加工作簿
Application.WorkBooks.Close                   ' 关闭所有工作簿,但不关闭excel
Application.Quit                              ' 退出excel
Application.OnTime                            ' 定时执行

Workbook – 工作簿对象


常用属性

ActiveSheets – 当前激活的工作表,worksheet对象

EnableAutoRecovery – 自动恢复功能

HasPassword – 工作簿是否加密

Password – 密码

name – 文件名

Fullname – 全路径

Path – 路径

Readnoly – 是否只读


常用方法

dim wb as workbook
set wb = Application.workBooks.add
wb.worksheets(1) = "xxx"
wb.SaveAs
wb.xlMinimized
wb.WindowState
wb.Width
wb.Height

工作表对象


常用属性

cells – 表示当前激活工作表的所有单元格

columns – 表示所有列

next – 表示下一个,具体是下一个什么,得看具体情况

previous – 表示上一个,和next相反

range – 表示单个或多个单元格区域

rows – 表示行。无参的话,表示所有行


常用方法

Activate – 激活某一工作表

copy – 复制一个工作表

Paste – 将剪贴板的内容粘贴到工作表

访问工作表 – worksheets(1)或者worksheets(“sheets”)

新建工作表 – workshhets.add

删除工作表 – workshhet.delete


范围对象

16.文本文件

文件系统对象

创建一个文本文件

dim fso as new scripting.filesystemobject
dim wfsm as scripting.textstream
set wfsm = fso.createFile("d:\test.txt", true)
wfsm.writeline(now)
wfsm.close

打开一个文本文件

object.OpenText(filename[,iomode[,create[,format]]])
' filename - 全路径
' iomode - ForReading,ForWriting,ForAppending
' create - 如果文件不存在,是否创建。默认不创建
' format - 编码格式

17.编程图表

18.控件

  • 标签 – 用于表现静态文件
  • 分组框 – 用于将其他控件进行组合
  • 按钮- 用于执行宏命令
  • 复选框 – 选择控件
  • 选项按钮 – 将几个选项按钮组合在一起使用,在一组中只能选择一个选项按钮
  • 列表框 – 用于显示多个选项并从中选择,只能单选
  • 组合框 – 用于显示多个选项并从中选择,可以选择其中的项目或者输入一个其他的值
  • 滚动条 – 比如调节颜色的深度
  • 微调控件 – 数值选择机制,通过单机控件的箭头来选择数值

19.with

可以减少重复的输入

with aaa
    .bbb = xxx;        ' 表示aaa.bbb
    .ccc = xxx;        ' 表示aaa.ccc
    .ddd = xxx;        ' 表示aaa.ddd
end with

20.range


引用单元格和区域

Range("A1") - 单元格A1
Range("A1:B5") - 从单元格A1到单元格B5的区域
Range("C5:D9,G9:H16") - 多区域
Range("A:A") - A列
Cells(1,1) - 单元格A1
Cells - 表示所有单元格
[A1:B5] - 与Range("A1:B5"等价)
' Range可以表示多个单元格,而Cells只能表示一个单元格。
' Range中是用字母表示列,而Cells用数字表示列,所以用Cells可以被用来做循环
Rows(1) - 第一行
Rows - 所有的行
Columns - 所有的列
Columns(1) - 第一列
Columns("A") - 第一列
Union(Rows(1),Rows(3)) - 第一行和第三行的集合,Range类型
' 因为一个单元格的集合可以命名
' 可以将Range("A1:B5")命名为myRange
Range("MyBook.xls!myRange") - 表示我们自定义的单元格区域
' 相对于其他单元格的位置来确定单元格
ActiveCell.Offset(1,3) - 表示下一行和右边三列


选定和激活单元格

Range("A1").Formula = "=SUM(A2:A4)"
' 必须先选中工作表,再选中单元格区域,否则会失效
WorkSheets(1).select
Range("A1").select - 选中单元格区域
Selection.Font.Bold = True - 表示被选中的区域应该做的操作
' 或者
ActiveCell.Font.Bold = True
ActiveCell.Offset(0,1).Active - 移动活动单元格
' 选定多张工作表上相同区域的单元格
Sheets(Array("Sheet1","Sheet2","Sheet3")).Select
Range("A1:B5").Select
Selection.Font.color = RGB(0,0,0)

20.属性方法导图



版权声明:本文为qq_34759481原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。