看此部分内容之前,关于VBA的基础知识,以及word VBA的相关知识,可参考第 2.3 节 “Word VBA”
此处介绍一些Excel中的最基本的概念,搞清楚这些概念,是继续深入学习Excel的基础。
Excel中,我们已经知道的是,从概念上来说,从大到小是:
Excel文件 ⇒ Excel文件中页表sheet ⇒ sheet中的行和列 ⇒ 行列交叉点所对应的单元格
这些名词和概念,对应到Excel VBA中就是:
Workbook ⇒ Worksheet ⇒ Column, Row ⇒ Cell
并且,每个概念,都对应着一个该单词的复数形式,表示的是对应的一组的该单位,
如:Workbooks表示一组,很多个当前已经打开的Excel文件等。
下面稍微详细地介绍一下各自的含义和用法。
workbook属于workbooks,workbooks是当前打开的所有的workbook的集合(总称)。
对于想要获得单个的workbook,有这些方式:
Workbooks.Item(N)
Workbooks(N)
Workbooks("excel_file_name.xlsx")
Workbook所具有的一些常见函数有:
对于其更多的函数和属性,细心的人,自然会想到利用前面提到的自学方法,去更加详细的学习了解的。以后对此类提示,就不再多提醒了。
worksheet即我们常说的Excel中sheet。
worksheet属于worksheets。
Excel软件,创建一个Excel文件的时候,默认会自动创建3个sheet,对应的就是该workbook的worksheets,包含了3个worksheet。
对应获得当前的worksheet的方式:
Workbooks.Item(1).Sheets.Item(N)
Workbooks.Item(1).Sheets.Item("sheet_name")
对应的概念很好理解,不多解释。
对应每个列,都有一个自己的名字,比如第三列,名字一般是"C"。
获得第三列的方式有:
Columns(3)
Columns("C")
获得3到5列,可以:
Columns("C:E")
Range("C:E")
选中1, 5,7,8,9列:
Range("A:A, E:E, G:G, H:H,I:I").Select
设置宽度:
Columns("C").ColumnWidth = 4.5
大小自动适应:
Selection.Columns.AutoFit
隐藏显示某列用对应的:
Columns("C").hidden=True
行的操作,非常类似于列的操作:
选中2到6行:
Rows("2:6").Select
选中第一行:
Rows(1).Select
选中5,7,8行:
Range("5:5, 7:7,8:8").Select
设置行高:
Rows(6).RowHeight = 2.5
选中某6行,将其隐藏:
Rows("6:6").Select Selection.EntireRow.Hidden = True
可以通过行Row或列Column的名称来操作行或列 | |
---|---|
另外,如果单独对于某列,比如第三列,默认名字,是"C",可以同选中该列,鼠标移动到左上角那个输入框中,鼠标会自动显示"Name Box",此时你可以在里面输入你想要的名字,比如"Col3",然后接下来的所有的对第三列的操作和引用,之前是通过Columns("C")来获得的,现在就可以通过 Columns("Col3") 来操作了。 即Columns("XXX")中的XXX是对应的列的名字。 对于行的操作,也是同样适用的。 即可以先去对某行去命名,然后就可以通过对该名字来引用到该行了。 |
行和列交叉点,对应的就是单元格cell。
下面是各种操作:
第四列第六行:
Range("D6")
设置单元格的一些属性:
Range("B3″).Font.Name = "Cambria" ‘也可以设置为宋体,微软雅黑 Range("B3″).Font.Bold = True
选中从D2到H6的整块的单元格:
Range("B2:H6")
用同样的方式去选中某个单个的单元格:
Range("D4:D4")
选中两块单元格:
Range("B2:C5,EC4:G8").Select
选中部分重叠的两块单元格:
Range("B2:C5, C4:G8").Select
取消显示网格线:
ActiveWindow.DisplayGridlines = False
VBA中的注释,是以单引号"'"开头的,其后内容,都视为注释内容。
另外一种,也可以通过关键字REM或Rem加上个空格,之后的内容,也会被识别为注释。
比如:
REM this is a excel maro ' this is a excel maro
简单的说,有两种方式:
一是直接调用Msgbox去弹出对话框打印信息。
比如:
MsgBox "Currently opening Excel file is: " & ActiveWorkbook.Name
其中,字符串链接/拼接,用&符号。
二是新建一个log文件,将调试或打印信息输出到log文件中去。
关于如何创建文件,可参考:在VBA中创建(log)文件的两种方法
类似于Word VBA中的ActiveDocument,Excel中是ActiveWorkbook
所以获得当前打开的Excel的文件路径是:
ActiveWorkbook.Path
与此相关的是:
ActiveWorkbook.FullName = ActiveWorkbook.Path + '' + ActiveWorkbook.Name
更多相关的内容,请自己尝试:
MsgBox ActiveWorkbook.Name
MsgBox ActiveWorkbook.FullName
MsgBox ActiveWorkbook.FullNameURLEncoded
MsgBox ActiveWorkbook.Path
对于选中当前的内容,比如workbook,sheet等,可以通过.Select来选中,
比如:
Sheets("sheet_name").Select
对于当前的内容的名字,对应的是.Name属性,比如:
Sheets("sheet_name").Name
很多内容,都有move的功能,详细用法请自己探索。
新增一个新的内容,比如workbook,sheet等,都可以用Add方法。
关于Excel VBA的一些基础知识,可以去看这里:
VBA for Microsoft Office Excel 2007关于Excel VBA,这本书介绍的很全:
《Excel 2007 VBA参考大全》扫描版 [PDF]电驴地址:
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|/此部分内容,其实在之前第 2.3 节 “Word VBA”中,已有提到,此处再次强调一下。
在学习VBA(和任何类似知识)的过程中,学会利用系统已有资源。
即,在VBA中,可以供我们利用的资源,至少有这些:
可以通过在写VBA代码的过程中,对于任何你不太懂,想要了解更多细节的内容,选中该内容,比如我想要了解workbook,那就选中workbook,然后右键⇒Object Browser,即可在Object Browser中查找到你所要的内容,其中可以直观快速地看到对应目标所具有的变量成员和函数等,很是方便。
选中想要查询的内容,然后按F1,VBA即可调用Help帮助系统,可以查询到更多的细节和实例用法。
例如,我知道了workbook是对应于当前Excel文件,想要了解workbook有哪些属性和方法,
那么可以去F1的Help中输入workbook,然后搜索到很多条目,其中第一条就是:
“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"的页面,其中有三部分:Methods,Properties,Events
里面有你想要的所有的成员和函数等。
比如,表示当前Excel的文件名的.Name的属性,文件全名(包括路径和文件名)的.FullName的属性等。
然后你也可以通过Msgbox去自己尝试打印出来看看,都是什么值:
MsgBox ActiveWorkbook.Name MsgBox ActiveWorkbook.FullName
这样的话,你就可以可以通过自学的方式,去搞懂很多内容了。
如果还是不会操作,那么可以去通过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
所以,如果你想要实现类似的操作,至少是复制粘贴等动作,就可以参考上述代码了。
Excel中如何录制宏 | |
---|---|
View⇒Macro⇒Record Macro,跳出对话框让你输入要录制的话宏的名称,随便起个名字,然后你就可以去随心所欲地操作了, 操作完成后,再去View⇒Macro⇒Stop Macro,即可。 此时,再去View⇒Macro⇒View Macro去查看你刚录制的宏,即可看到对应的VBA代码。 |
通过上述方法,基本上大部分内容,都可以自己自学而搞懂。
有人会问,那么我最开始使用VBA的话,连一些基本概念和其他一些常见操作都不会,连对应的关键字都不知道,那么又如何去查询对应关键字呢?
答案是,学会利用baidu和google,可以查询你要实现的操作,往往都会找到相关内容的,即使没有找到直接的答案,但是也可以找到对应的相关的关键字,然后就可以通过上述Object Browser和F1的Help,找到更多的细节的用法,如果足够细心和能够举一反三,相信很多的内容,都可以自己发掘并实现的。
如果还是没搞懂,普通的操作,也是可以通过录制宏的方式,然后去实际操作,最后查看所录制的宏的代码中,是如何操作的,你就可以照葫芦画瓢了。