最新消息:20210917 已从crifan.com换到crifan.org

【整理】Excel VBA学习记录

VBA crifan 2894浏览 0评论

本帖内容已移至各种计算机语言简介和总结 – Excel VBA


【整理】Excel VBA学习记录

Version2011-10-27

Author: crifan

Mail: green-waste (at) 163.com

 

【看帖前必读】

1.此贴目的:只是为了记录最近在接触学习Excel VBA 的过程中的一些心得和体会。记录于此,以备后查或他人借鉴。

2.看此贴之前,最好先去了解一下关于VBA的基础知识,以及word VBA的相关知识,可参考这个:

【整理】Word VBA学习记录

http://againinput4.blog.163.com/blog/static/17279949120110484932962/

3. 此贴所写内容,多为本人整理或自己的理解,如果有误,欢迎指正:green-waste (at) 163.com

 

Excel VBA知识】

1. 学会利用已有资源去自学

此部分内容,其实在之前的word VBA中,已有提到,此处再次强调一下。

在学习VBA(和任何类似知识)的过程中,学会利用系统已有资源。

即,在VBA中,可以供我们利用的资源,至少有这些:

1VBA中的对象浏览器(Object Browser

可以通过在写VBA代码的过程中,对于任何你不太懂,想要了解更多细节的内容,选中该内容,比如我想要了解workbook,那就选中workbook,然后右键->Object Browser,即可在Object Browser中查找到你所要的内容,其中可以直观快速地看到对应目标所具有的变量成员和函数等,很是方便。

 

2)内置的Help

选中想要查询的内容,然后按F1VBA即可调用Help帮助系统,可以查询到更多的细节和实例用法。

 

例如,我知道了workbook是对应于当前Excel文件,想要了解workbook有哪些属性和方法,那么可以去F1Help中输入workbook,然后搜索到很多条目,其中第一条就是:

Workbook Object Members

 Article Represents a Microsoft Excel workbook. Methods Name Description AcceptAllChanges Accepts all changes in the specified shared workbook. Activate Activates the fi…

然后点击进入后,就可以看到“Workbook Object Members”的页面,其中有三部分。MethodsPropertiesEvents,里面有你想要的所有的成员和函数等。

比如,表示当前Excel的文件名的.Name的属性,文件全名(包括路径和文件名)的.FullName的属性等。

然后你也可以通过Msgbox去自己尝试打印出来看看,都是什么值:

MsgBox ActiveWorkbook.Name

MsgBox ActiveWorkbook.FullName

这样的话,你就可以可以通过自学的方式,去搞懂很多内容了。

 

3)通过录制宏去照葫芦画瓢

如果还是不会操作,那么可以去通过VBA提供的录制宏的功能,来实现搞懂VBA系统是如何将你对应的操作转化为对应的VBA代码的,然后你就可以照葫芦画瓢了。

 

比如,我打开两个Excel文件,将其中一个Excel中的某个单元格的内容,选中后复制,然后切换到另外一个Excel文件,选中某个单元格,按了Ctrl+V粘贴,然后按了Ctrl+S来保存,如此这段操作,通过录制宏,得到如下代码:

Sub Macro3()

‘ Macro3 Macro

 

    Range(“B3”).Select

    Selection.Copy

    Windows(“EWR_tracking_list_enabledMacro.xlsm”).Activate

    Range(“O152”).Select

    ActiveSheet.Paste

    Application.CutCopyMode = False

    ActiveWorkbook.Save

    Windows(“ROSH1.xlsx”).Activate

End Sub

 

所以,如果你想要实现类似的操作,至少是复制粘贴等动作,就可以参考上述代码了。

 

关于如何录制宏,其实很简单:

View->Macro->Record Macro… ,跳出对话框让你输入要录制的话宏的名称,随便起个名字,然后你就可以去随心所欲地操作了,操作完成后,再去View->Macro->Stop Macro,即可。

此时,再去View->Macro->View Macro去查看你刚录制的宏,即可看到对应的VBA代码。

 

【总结】

通过上述方法,基本上大部分内容,都可以自己自学而搞懂。

有人会问,那么我最开始使用VBA的话,连一些基本概念和其他一些常见操作都不会,连对应的关键字都不知道,那么又如何去查询对应关键字呢?

答案是,学会利用baidugoogle,可以查询你要实现的操作,往往都会找到相关内容的,即使没有找到直接的答案,但是也可以找到对应的相关的关键字,然后就可以通过上述Object BrowserF1Help,找到更多的细节的用法,如果足够细心和能够举一反三,相信很多的内容,都可以自己发掘并实现的。

如果还是没搞懂,普通的操作,也是可以通过录制宏的方式,然后去实际操作,最后查看所录制的宏的代码中,是如何操作的,你就可以照葫芦画瓢了。

 

2. 基本的名词和概念

此处介绍一些Excel中的最基本的概念,搞清楚这些概念,是继续深入学习Excel的基础。

Excel中,我们已经知道的是,从概念上来说,从大到小是:

Excel文件 -> Excel文件中页表sheet -> sheet中的行和列 -> 行列交叉点所对应的单元格

这些名词和概念,对应到Excel VBA中就是:

Workbook -> Worksheet -> Column, Row-> Cell

 

并且,每个概念,都对应着一个该单词的复数形式,表示的是对应的一组的该单位,

如:Workbooks表示一组,很多个当前已经打开的Excel文件等。

下面稍微详细地介绍一下各自的含义和用法。

 

1 Workbook

workbook属于workbooksworkbooks是当前打开的所有的workbook的集合(总称)。

对于想要获得单个的workbook,有这些方式:

Workbooks.Item(N)

Workbooks(N)

Workbooks(“excel_file_name.xlsx”)

 

Workbook所具有的一些常见函数有

Workbook.Open

Workbook.Add

Workbook.Save

Workbook.SaveAs

 

对于其更多的函数和属性,细心的人,自然会想到利用前面提到的自学方法,去更加详细的学习了解的。以后对此类提示,就不再多提醒了。

 

2 Worksheet

worksheet即我们常说的Excelsheet

worksheet属于worksheets

Excel软件,创建一个Excel文件的时候,默认会自动创建3sheet,对应的就是该workbookworksheets,包含了3worksheet

对应获得当前的worksheet的方式:

Workbooks.Item(1).Sheets.Item(N)

Workbooks.Item(1).Sheets.Item(“sheet_name”)

 

3Column

对应的概念很好理解,不多解释。

对应每个列,都有一个自己的名字,比如第三列,名字一般是”C”

 

获得第三列的方式有:

 

Columns(3)

Columns(“C”)

 

获得35列,可以:

Columns(“C:E”)

Range(“C:E”)

 

选中1, 5789列:

Range(“A:A, E:E, G:G, H:H,I:I”).Select

 

设置宽度:Columns(“C”).ColumnWidth = 4.5

大小自动适应:Selection.Columns.AutoFit

隐藏显示某列用对应的:Columns(“C”).hidden=true

 

4Row

行的操作,非常类似于列的操作:

选中26行:Rows(“2:6”).Select

选中第一行:Rows(1).Select

选中578行:Range(“5:5, 7:7,8:8”).Select

 

设置行高:Rows(6).RowHeight = 2.5

 

选中某6行,将其隐藏:

Rows(“6:6”).Select

Selection.EntireRow.Hidden = True

 

【提示】

另外,如果单独对于某列,比如第三列,默认名字,是”C”,可以同选中该列,鼠标移动到左上角那个输入框中,鼠标会自动显示“Name Box”,此时你可以在里面输入你想要的名字,比如“Col3”,然后接下来的所有的对第三列的操作和引用,之前是通过

Columns(“C”)来获得的,现在就可以通过Columns(“Col3”)来操作了。

Columns(“XXX”)中的XXX是对应的列的名字。

 

对于行的操作,也是同样适用的。

即可以先去对某行去命名,然后就可以通过对该名字来引用到该行了。

 

5Cell

行和列交叉点,对应的就是单元格cell

下面是各种操作:

第四列第六行:Range(“D6”)

 

设置单元格的一些属性:

Range(“B3”).Font.Name = “Cambria” ‘也可以设置为宋体,微软雅黑

Range(“B3”).Font.Bold = True

 

选中从D2H6的整块的单元格:Range(“B2:H6”)

用同样的方式去选中某个单个的单元格:Range(“D4:D4”)

 

选中两块单元格:Range(“B2:C5,EC4:G8”).Select

选中部分重叠的两块单元格:Range(“B2:C5, C4:G8”).Select

 

取消显示网格线:ActiveWindow.DisplayGridlines = False

 

3. 其他一些细节方面的知识

1)如何添加注释

VBA中的注释,是以单引号“”开头的,其后内容,都视为注释内容。

另外一种,也可以通过关键字REMRem加上个空格,之后的内容,也会被识别为注释。

比如:

REM this is a excel maro

‘ this is a excel maro

 

2)如何调试

简单的说,有两种方式。

一是直接调用Msgbox去弹出对话框打印信息。

比如:

MsgBox “Currently opening Excel file is: ” & ActiveWorkbook.Name

其中,字符串链接/拼接,用&符号。

 

二是新建一个log文件,将调试或打印信息输出到log文件中去。

关于如何创建文件,参考:

【整理】Word VBA学习记录

http://againinput4.blog.163.com/blog/static/17279949120110484932962/

 

3)获得当前的Excel文件所在路径

类似于Word VBA中的ActiveDocumentExcel中是ActiveWorkbook

所以获得当前打开的Excel的文件路径是:

ActiveWorkbook.Path

 

于此相关的是:

ActiveWorkbook.FullName = ActiveWorkbook.Path + ‘’ + ActiveWorkbook.Name

 

更多相关的内容,请自己尝试:

MsgBox ActiveWorkbook.Name

MsgBox ActiveWorkbook.FullName

MsgBox ActiveWorkbook.FullNameURLEncoded

MsgBox ActiveWorkbook.Path

 

4一些通用的属性和方法(函数)

对于选中当前的内容,比如workbooksheet等,可以通过.Select来选中,

比如,Sheets(“sheet_name”).Select

对于当前的内容的名字,对应的是.Name属性,比如, Sheets(“sheet_name”).Name

 

很多内容,都有move的功能,详细用法请自己探索。

 

新增一个新的内容,比如workbooksheet等,都可以用Add方法。

 

更多学习资源】

关于Excel VBA的一些基础知识,可以去看这里:

 VBA for Microsoft Office Excel 2007

http://www.functionx.com/vbaexcel/

 

另外,这本书介绍的很全:

Excel 2007 VBA参考大全》扫描版[PDF]

http://www.verycd.com/topics/2872866/

电驴地址:

ed2k://|file|%5BExcel.2007.VBA%E5%8F%82%E8%80%83%E5%A4%A7%E5%85%A8%5D.%EF%BC%88%E7%BE%8E%EF%BC%89%E6%A0%BC%E6%9E%97.%E6%89%AB%E6%8F%8F%E7%89%88.pdf|253406092|3cf57fc49d0fa875826ecc462cd9976c|h=eed6g2e25uuzc4c52obch2txlm7w65fx|/

转载请注明:在路上 » 【整理】Excel VBA学习记录

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

    97 queries in 0.197 seconds, using 23.49MB memory