Excel VBA 入门学习总结

Excel VBA 入门学习总结

首页休闲益智倾斜堆栈更新时间:2024-10-20

工具栏

编辑工具栏:属性/方法列表、常数列表、快速信息、参数信息、自动完成关键字、缩进、凸出、切换断点、设置注释块、解除注释块、切换书签、上一个/下一个书签、清除书签。

调试工具栏:设计模式、运行子过程/用户窗体、中断、重新设置、切换断点、逐语句、逐过程、跳出、本地窗口、立即窗口、监视窗口、快速监视、调用堆栈。

MsgBox ("弹窗一个提升窗口")

需要查看代码帮助说明,可将光标定位至查看语句位置,点击【F1】键,在联网状态下可打开对应VBA帮助文档。

Dim 变量名 As 数据类型

Dim str1 As String 定义字符串变量str1

Dim str2 As String*10 定义字符串变量str2最大长度为10个字符

Dim str3$ 使用变量类型声明符定义字符串变量str3

Option Explicit 规定强制声明变量

勾选后强制声明变量

变量赋值

[Let]变量名=数据 []方括号表示可选可省略

引用对象

Set 变量 = 对象 Set不能省略

创建过程:在过程中插入要运行的代码

Sub 过程名()

代码...

End Sub

引用工作表对象

Dim sheet1 As Worksheet '定义一个工作表变量

Set sheet1 = Worksheets("aaa") '引用一个名称为aaa的工作表

Set sheet1 = Worksheets(1) '引用当前工作簿中的第一个工作表

定义常量

Const 常量名 As 数据类型 = 值

定义数组

Public|Dim 数组名 ([数组下界 to ]数组上界) As 数据类型 '默认下界值时0,可省略

Dim 商品 (1 to 10) As String '定义商品数组,包含10个文本元素

商品(1)="电视机"' 第1个元素文本值是电脑

商品(5)="电脑" '第5个元素文本值是电脑

定义二维数组

Dim 位置(1 to 4,1 to 5) As String '定义一个存储地理位置的二维数组

位置(2,2) = "地点A"

同理可定义更多维数的数组

使用Array函数创建数组

Dim 水果 As Variant '要使用Array函数定义时必须是变体类型

水果=Array("香蕉","苹果","菠萝","西瓜")

使用Split函数创建数组

Dim 数码产品 As Variant '要使用Split函数定义时必须是变体类型

数码产品=Array("手机|显示器|相机|耳机|平板|电脑","|") '第一个参数为需要分割的字符串,第二个参数为分隔符

将数组写入单元格区域

Range("A1:D1") = Array(1,2,3,4) '一维数组写入单元格区域,单元格区域必须位于同一行

Dim arr As Variant

arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

Range("B2:B10") = Application.WorksheetFunction.Transpose(arr)

使用Join函数链接字符串

数组ar1使用Join函数使用"--"符号连接所有数组元素

二维数组赋值到单元格区域时,第一维对应相同数量的单元格区域行数量,第二维对应相同区域的列数量。

使用Like语句判断字符串文本

通配符:

* 代表任意多个字符 "张三" Like "张*" = True,"张婷婷" Like "张*" = True

? 代表任意一个字符 "张三" Like "张?" = True,"张婷婷" Like "张?" = False,"张婷婷" Like "张??" = True

# 代表任意一个数字 "678" Like "#78" = True, "商品1" Like "商品#" = True

[字符范围] 查找该字符范围内的任意一个字符 “B” Like "[A-C]" =True ,“B” Like "[D-E]" =False

[!字符范围] 查找不在该字符范围内的任意一个字符 “B” Like "[!A-C]" =False ,“B” Like "[!D-E]" =True,“6” Like "[!1-5]" =True

通配符必须在英文/半角符号下输入

循环单行/单列区域内所有单元格方式:

Dim i As Integer

i = 起始位置行号

'以循环一列单元格数据为例,单元格不为空时循环执行

Do While Cells(i,列号) <> ""

处理代码

i=i 1 '每次增加一行,执行下一行的处理程序

Loop

'以循环一行单元格数据为例,当单元格为空时停止执行

Dim j As Integer

j = 起始位置列号

Do

处理代码

j=j 1 '每次增加一列,执行下一列的处理程序

Loop Until Cells(行号,j) = ""

For Each...Next 语句

工作表循环(同一工作簿)

Dim sht As WorkSheet

For Each sht In WorkSheets

处理代码

Next sht

循环单元格区域

Dim r1 As Range

For Each r1 In Range("A1:D5")

处理代码

Next r1

With……End With 语句

With Range("A1").Font

.Bold = True '字体格式为加粗。 读/写 variant 类型的值 。

.Color = RGB(0, 255, 0) '设置对象颜色

.ColorIndex = 3 '设置字体颜色(红色)

.FontStyle = "Bold Italic" '返回或设置字型(单元格的字体样式设置为加粗和倾斜)

.Italic = True '设置为斜体

.Name="宋体" 返回或设置字体格式

.Size=12 '返回或设置字号

.Strikethrough = True '添加水平删除线

.Subscript = False '设置字体格式为下标(默认情况下为False)

​.Superscript = False ​'设置字体格式为上标(默认情况下为False)

​.Underline = xlUnderlineStyleSingle ​'设置字体下划线类型(单下划线)

Rem 以上设置的是单元格Font对象的常用属性

End With

调用过程的方式

直接输入过程名和参数:过程名

Call语句调用过程:Call 过程名[(参数1,参数2……)[

Application.Run ​过程名[参数1,参数2……]

私有过程

Private Sub 私有过程名([参数……])

​代码……

End Sub

私有过程不会在宏对话框中显示

设置底纹颜色

Range("A1").Interior.Color=RGB(255,255,0) ​'设置A1单元格底纹颜色为黄色

若应用到 If 语句中,则 '判断A1单元格底纹颜色是否为黄色,是返回真

If Range("A1").Interior.Color=RGB(255,255,0) ​Then

​代码……

End If

易失性函数

Application.Volatile = True ​将自定义函数设置成易失性函数后,每次工作表重算时,函数进行重新计算。

不显示警告框

Application.DisplayAlerts = False '不显示警告信息

在函数运行完成后,应将Application.DisplayAlerts设置恢复为True,显示警告信息

关闭屏幕更新

Application.ScreenUpdating = False '关闭屏幕更新可以提高代码运行速度

在函数运行完成后,应将Application.ScreenUpdating设置恢复为True,打开屏幕更新

清除表中所有数据

Cells.ClearContents

单元格区域赋值

Range("A1:A10")=1 ​'A1至A10区域中的每个单元格都赋值为数字1

禁止事件执行

Application.EnableEvents = False ​'禁止所在的过程事件执行

使用Excel中的内置函数

Application.WorksheetFunction.Sum(Range("A1:A10")) ​'使用Sum函数求A1至A10单元格区域数值的和。

当前活动对象

ActiveCell ​当前活动单元格

ActiveChart ​当前活动图表

ActiveSheet ​当前活动工作表

ActiveWindow ​当前活动窗口

ActiveWorkbook ​当前活动工作簿

引用工作簿

Workbooks.Itme(索引号) ​效果等同于Workbooks(索引号) ​

Workbooks("工作簿名称")

获取当前工作簿(ThisWorkbook)地址和名称

Sub 工作簿地址名称()

Dim wbName As String

Dim wbPath As String

Dim wbFullName As String

wbName = ThisWorkbook.Name '当前工作簿名称

wbPath = ThisWorkbook.Path '当前工作簿路径

wbFullName = ThisWorkbook.FullName '当前工作簿路径和名称

MsgBox "当前工作簿名称:" & wbName & Chr(13) & "当前工作簿路径:" & wbPath & Chr(13) & "当前工作簿路径和名称:" & wbFullName

End Sub

创建当前工作表

Workboos.add(Template)方法:新建一个工作簿。 新工作表将成为活动工作簿。

参数:Template,可选 Variant,确定如何创建新工作簿。 如果此参数为指定现有 Microsoft Excel 文件名的字符串,那么创建新工作簿将以该指定的文件作为模板。 如果此参数为常量,新工作簿将包含一个指定类型的工作表。 可为以下 XlWBATemplate 常量之一:xlWBATChart、xlWBATExcel4IntlMacroSheet、xlWBATExcel4MacroSheet 或 xlWBATWorksheet。 如果省略此参数, Microsoft Excel 将创建一个新的工作簿, 其中包含许多空白工作表 (工作表数由**SheetsInNewWorkbook** 属性设置)。

工作表类型

Workbooks.Add("C:\Excel 学习.xls") ​'以C盘的Excel 学习.xls文件为模板创建一个工作簿

Workbooks.Add(xlWBATChart) ​新建一个包含图表工作表的工作簿

打开工作簿:Workbooks.Open(参数列表)

Workbooks.Open("C:\Excel 学习.xls") ​'打开C盘的Excel 学习.xls工作簿

保存工作簿

ThisWorkbook.Save ​'保存当前工作簿

工作簿对象.Save ​'保存工作簿

另存工作簿

ThisWorkbook.SaveAs filename:=保存的路径和文件名 ​'省略路径则保存到当前文件夹中

关闭工作簿

Workbooks.Close ​'关闭所有工作簿

工作簿对象.Close ​'关闭指定工作簿如:Workbook("Excel 学习").Close

SaveChanges参数:为True时关闭工作簿时保存更改,False不保存对工作簿所做更改。

ThisWorkbook是对程序所在工作簿的引用,ActiveWorkbook是对活动工作簿的引用

引用工作表

Worksheets.Item(3) ​'引用工作簿中的第3个工作簿,等同于Worksheets(3)

Worksheets("Excel学习') ​'引用工作簿中名称为“Excel学习”的工作表 ​

工作表属性标签名称Name,代码名称CodeName

新建工作表

WorkSheets.Add方法:创建新的工作表、图表或宏工作表。 新工作表成为活动工作表。

Worksheets.Add befor:=Worksheets(1) ​'在第一张工作表前插入一张新工作表

在最后一个工作表后插入一个新工作表并修改标签名

在第一张工作表后插入3张工作表(若省略After参数则再活动工作表前插入)

Worksheets.Add After:=Worksheets(1), Count:=3

删除工作表

Worksheet(1).Delete ​'删除第一个工作表

激活工作表

Worksheet(1).Activeate ​'激活第一张工作表,等效于Worksheet(1).Select

复制工作表

Worksheets("Excel学习").Copy befor:=Worksheets(1) ​'将Excel学习工作表复制到第一张工作表之前

若不使用参数,默认将复制的工作表粘贴到新工作簿中

FillAcrossSheets 方法:将单元格区域复制到集合中所有其他工作表的同一位置。

'将单元格区域复制到集合中所有其他工作表的同一位置。

x = Array("Sheet1", "Sheet5", "Sheet7")

Sheets(x).FillAcrossSheets _

Worksheets("Sheet1").Range("A1:C5")

移动工作表

Worksheets.Move 方法:将工作表移到工作簿中的其他位置。

Worksheets("Sheet1").Move after:=Worksheets("Sheet3") ​'此示例将当前活动工作簿的 Sheet1 移到 Sheet3 之后。

PrintOut 方法:打印对象。

PrintPreview 方法:按对象打印后的外观效果显示对象的预览。

Select 方法:选择工作表对象

隐藏工作表

Visible 属性 :返回或设置一个**xlSheetVisibility** 值, 该值确定对象是否可见。

xlSheetHidden 0 隐藏工作表,用户可以通过菜单取消隐藏。

xlSheetVeryHidden 2 隐藏对象,以便使对象重新可见的唯一方法是将此属性设置为 True(用户无法使该对象可见)。

xlSheetVisible -1 显示工作表。

Worksheets("Sheet1").Visible = False ​'示例隐藏 Sheet1。

单元格区域Range对象和单元格Cells对象

Range("B5:H12").Cells(1,1) ​'引用单元格区域B5:H12中第1行,第1列单元格

Range("A1:C9").Cells(5) ​'引用单元格区域A1:C9中第5个单元格

若单元格所有号大于区域中所有单元格,则按区域的行向下拓展,列数不变

Range("A1:C9").Cells '引用单元格区域A1:C9中所有单元格

ActiveSheet.Cells ​ ​'引用活动工作表中所有单元格

行Rows列Columns对象

ActiveSheet.Rows("2:5") ​'引用活动工作表的第2至第5行

Worksheets(1).Rows ​'引用第1张工作表中的所有行

Range("B2:C5").Rows("1:1") ​'引用单元格区域B2:C5中的第1行,即引用工作表中的第2行

ActiveSheet.Columns("E:F") ​'引用活动工作表中的E至F列

Worksheets(1).Columns(2) ​ ​‘引用第1张工作表中的第2列

Columns("B:E").Columns(2) ​'引用B至E列中的第2列,即C列

Union方法

Application.Union(Range("区域1"),Range("区域2")) ​连接多个不连续区域

Offset属性

Range("B2").Offset(1,2) ​'引用B2单元格向下1行,向右2列移动的单元格,即D4单元格

Range("C2:D3").Offset(2,-1) ​'单元格区域C2:D3向下移动2行,向左移动1列,即B4:C5

Resize属性

放大或缩小单元格区域,

Range("B2:C3').Resize(3,5) ​'扩大后的区域为B2:D6,即缩放是以所选区域左上角第一个单元格为基准。

Range("B2:D6").Resize(2,2) ​'缩小至B2:C3区域

UsedRange属性返回工作表中以使用的所有单元格围成的矩形区域,忽略其中的空单元格,空行,空列,空值等。

CurrentRegion属性返回当前区域以空行,空列为边界围成的区域,对于同一工作簿,其小于或等于UsedRange属性返回的区域。

End属性

Range("A65536").End(xlUp).Offset(1,0) ​'返回A列中最后一个非空单元格下移一行,常用语填写新一行数据

Value属性

Range("A1:B2").Value="aaa" ​在A1:B2区域每个单元格中都输入文本aaa

Count属性

Range("A1:B2").Count ​'返回A1:B2区域单元格的数量

Range("A1:B2").Rows.Count '返回A1:B2区域行的数量

Range("A1:B2").Columns.Count '返回A1:B2区域列的数量

Address属性

返回单元格区域的地址

MsgBox Range("A1:B2").Offset(15,21).Address

PasteSpecial 方法

'本示例用单元格 Sheet1 上单元格区域 C1:C5 和单元格区域 D1:D5 原有内容相加之和来替换单元格区域 D1:D5 中的数据。

With Worksheets("Sheet1") ​

.Range("C1:C5").Copy

.Range("D1:D5").PasteSpecial _

Operation:=xlPasteSpecialOperationAdd

End With

以上内容是本人自学笔记总结,欢迎指正,有关Excel的问题,可私信联系,互相交流讨论,共同进步,谢谢。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved