专栏/Excel VBA 入门学习总结

Excel VBA 入门学习总结

2019年04月02日 09:43--浏览 · --点赞 · --评论
凌霄百科
粉丝:2.3万文章:144

Excel VBA 入门学习总结

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

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

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的问题,可私信联系,互相交流讨论,共同进步,谢谢。


投诉或建议

聚圣源花丛练心芭比娃娃起名字家庭图片五行缺土起名养鸡场起名名字起名猪年宝宝起名常用字虞书欣工作室再发文建筑安装工程施工图集20年后的家乡射手座女生凯盈book.qq.com花店起什么名子相字取名起名大全昊字开头的公司起名任长霞电视剧全集西安到榆林的火车吴楚东南坼海南在线分类信息亦 字起名建筑工程公司起名四个字占卜起名大全康熙儿子如何查看企业起名清真八大碗雷电网三国起名字小孩子起名字免费网站武家栋梁淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化