编辑工具栏:属性/方法列表、常数列表、快速信息、参数信息、自动完成关键字、缩进、凸出、切换断点、设置注释块、解除注释块、切换书签、上一个/下一个书签、清除书签。
调试工具栏:设计模式、运行子过程/用户窗体、中断、重新设置、切换断点、逐语句、逐过程、跳出、本地窗口、立即窗口、监视窗口、快速监视、调用堆栈。
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