04-Excel VBA 学习总结 - 简论集合

合集下载

给学习ExcelVBA数组的人,一点点自己学习的心得

给学习ExcelVBA数组的人,一点点自己学习的心得

给学习ExcelVBA数组的人,一点点自己学习的心得感觉VBA真的是很神奇(然后就开始尝试着使用VBA去做一些很神奇的事,感觉很有满足感。

开始时,主要是操作单元格中的数字,比如从一个区域中筛选大于某个数的数字到另外一个区域和将某一区域的数字按照调教涂色等等。

在操作过程中很有满足感,并且也很享受,当然中间也经历了很多挫折和苦恼,尤其是数据量大的时候,需要经过长时间的等待,有时候甚至等待到死机。

一个偶然的机会,知道了还有一个东东叫数组,据说数组还可以提高运算速度。

以下就是在学习过程中对数组的一点认识(不说理论,只说我所见的用法):1.数组维数(Array dimension)数组可以分为一维数组,二维数组和多维数组。

其中前二者是我们最常见的,经常在EXCEL学习和使用中碰到的,其实我也不知道多维数组的具体形式。

一维数组,比如array(1,2,3),字典的关键字(d.keys)和字典的项(d.items)等。

二维数组,在excel中我感觉最常用的就是单元格区域,比如range(“A2:D3”)等等。

2.数组上限(Ubound)和下限(Ubound)比如在上面的一维数组array(1,2,3)中,其上限为2,下限为0。

Sub test()Dim arr ,i%Arr = array(1,2,3)i = ubound(arr)Msgbox iEnd subSub test1()Dim arr ,j%Arr = array(1,2,3)j = lbound(arr)Msgbox jEnd sub在一维数组中,其下限(lbound)始终为0,上限并不是等于数组中元素的个数,我在使用过程中一般是将数组上限(ubound)视为元素个数-1(比如元素个数为n,则ubound=n-1).二维数组。

如二维数组range(“A2:D3”),其第一维对应单元格区域的行,第二维对应单元格区域的列。

第一维的上限为行数,其值=2,对应的下限为1,因为单元格行数的最小值=1;对应的,其第一维的上限为列数,其值=4,对应的下限为1,因为单元格列数的最小值=1;在实际运用中一般都是使用他们的上限,即单元格的行数和列数。

Excel VBA编程中的高级技巧与窍门

Excel VBA编程中的高级技巧与窍门

Excel VBA编程中的高级技巧与窍门在Excel VBA编程中,掌握一些高级技巧和窍门可以帮助我们更高效地完成任务。

本文将介绍一些Excel VBA编程中的高级技巧与窍门,帮助您提升编程能力。

一、使用数组处理大量数据在处理大量数据时,可以使用数组来提高程序的执行效率。

将数据读入数组中,进行操作和计算,然后再将结果写回到Excel中。

与直接在Excel中进行单元格操作相比,使用数组可以大大加快程序的运行速度。

例如,我们需要将一列数据进行排序。

传统的方法是使用循环遍历每个单元格,并进行比较和交换。

但是,如果使用数组,我们可以将数据读取到一个一维数组中,并使用快速排序算法对数组进行排序,然后再将结果写回到Excel中。

这样的做法比循环遍历要快得多。

二、使用A1和R1C1引用在Excel VBA中,我们可以使用A1引用和R1C1引用来引用单元格。

A1引用是指通过指定行号和列号的方式来引用单元格,例如"A1"引用表示第1行第1列的单元格。

而R1C1引用是指通过指定相对当前单元格的行偏移量和列偏移量来引用单元格,例如"R1C1"引用表示相对于当前单元格的第1行第1列的单元格。

使用A1引用和R1C1引用可以根据实际需要灵活切换,方便进行单元格引用。

有时使用R1C1引用可以使公式和代码更易读,特别是在需要引用大量单元格时。

三、使用模块化的编程方式模块化的编程方式意味着将代码分解为小的模块,并将这些模块进行组合来完成任务。

这样做可以使代码更易于理解和维护,并提高代码的重用性。

在Excel VBA中,可以将常用的功能封装为函数或子过程,并在需要的时候调用它们。

通过使用函数和子过程,我们可以将任务拆分为较小的部分,每个部分负责完成一项具体的功能。

这样一来,我们可以更好地组织代码,提高效率和可读性。

四、合理运用错误处理机制在编程中,不可避免地会遇到一些错误。

合理运用错误处理机制可以提高程序的健壮性和可靠性。

ExcelVBA学习总结

ExcelVBA学习总结

ExcelVBA学习总结数据结构有云:程序=数据+操作。

从中可以看出,数据才是程序的核心对象,每个程序所有的操作和意图都是围绕数据展开的。

每个程序的结构基本都分为三个部分:输入,处理,输出。

输入是接收用户的数据,处理过程是通过不同的算法处理接收的数据,输出是将处理的结果返回给用户。

一、输入与输出大家还记得在VBA我们一般通过什么方式接受用户的简单输入呢?没错,最简单的方式就是Msgbox与InputBox。

Msgbox:最简单的用户输入框Msgbox太简单了,以至于大家用的最多的就是其显示信息的功能,其实它是有返回值的。

它的语法如下所示:MsgBox(Prompt[,Buttons][,Title][,Helpfile,Context]) As Integ er这里用户的输入就是他选择的按钮,也就是Integer值所代表的选项。

这里用户的选择比较简单,所以不用验证。

InputBox:最简单的全能型用户输入框VBA内置的InputBox方法这个函数返回一个字符串,选择取消后返回空串(零个字节的字符串)。

它不含有容错处理。

例如你想要用户输入整数,结果用户输入了字符,这个时候InputBox并不会替你告诉用户错误的原因。

Application的InputBox函数这个函数更强大,内置容错处理,选择取消后返回false。

这个函数可以指定输入的类型,当用户输入的数据类型与参数中指定的类型不兼容的时候,这个函数会给出温馨的提示,告诉你输入的数据类型不对。

除了这两种最简单的输入方式外,还有其它一些重要的输入方式:单元格输入:这种方式是最常见的,用户在单元格中输入数据,然后程序获取单元格中数据并处理。

用户窗口输入:这种方式最直观,比较适合处理结构化数据;利用窗口,我们可以提供专业的用户视觉体验和便利的用户输入体验。

文件输入:这种方式适合导入大量的数据或其它来源的数据。

说完了输入,再说说输出。

VBA中输出也有相对应的几种方式:Msgbox:最简单的输出信息方式。

VBA|Excel宏与VBA的12个关键知识点(小白进阶篇)

VBA|Excel宏与VBA的12个关键知识点(小白进阶篇)

VBA|Excel宏与VBA的12个关键知识点(小白进阶篇)1 VBA代码编辑器VBE的“模块”1.1 打开VBE(快捷键是alt+F11)→插入,即可在工程列表的“模块”下插入模块;1.2 录制的“宏”在工程列表的“模块”下查看;1.3 自定义sub过程或函数在工程列表的“模块”下编写;(网上共享的代码复制到此处即可使用)2 录了一个宏Marco1后,如何再接着录?•执行Marco1;•录制宏Marco2;•将录制的宏Marco2的内容复制到Marco1后。

3 某列的最后非空行Dim Lrow As LongLrow = Range('B' & Cells.Rows.Count).End(xlUp).Row - 14 行号与行数Range('B2').Value = ActiveCell.RowRange('B3').Value = Sheets(1).UsedRange.Rows.Count5 ThisWorkbook和ActiveWorkbookThisWorkbook指当前VBA代码所处的Workbook,ActiveWorkbook指当前活跃的Workbook相同点:如果VBA代码只对本身工作簿进行操作,则一直是相同的。

不同点:若VBA代码新建或打开了其它工作簿,则往往新建的或刚打开的是Activeworkbook,可以通过“工作簿名。

active”方法激活指定对象。

活动工作表和活动单元格:如Sheets('Sheet2').Activate即可得到ActiveSheet对象。

如cells(1,1).select,即可得到ActiveCell对象。

6 UsedRange和CurrentRegionUsedRange和CurrentRegion(不区分大小写)是应用非常频繁的两个属性,Usedrange是工作表的属性,即其使用时应该是sheets(1).usedrange、sheets(2).usedrange这种形式,而currentregion是单元格的属性,即其使用应该是range('A1').currentregion或cells(1,1).CurrentRegion这种形式。

ExcelVBA学习总结

ExcelVBA学习总结

ExcelVBA学习总结VBA的对象是有很多共性的,抛开它们所在层次的不同,它们的很多操作特征是一样的,比如它们都包括子对象集合,都包括某些激活操作,删除操作等等。

像简单的Activate,Delete,Cut类似的操作我就不详细说了。

下面我先总结一下这些共性中出镜率最多的类型:Collection,然后分析一下与之类似的两种常用类型,总结它们的不同。

选择集合的时候,要充分考虑它们的特性和实际的问题,采用合适的集合解决问题。

1. 集合定义集合的方法:Dim col as New Collection•Add:往集合中添加一个元素,需要提供添加到集合中的元素,也可以提供一些其它可选的参数,比如键值、位置等。

•Remove:移除集合中的一个元素,需要提供该元素的Index值。

•Count功能:返回集合中元素的数目。

•Item功能:获取集合中的一个元素,由于Item是集合的默认属性,所以可以直接拿集合对象获取元素。

参数:提供Index值(基本都是从1开始),Name都是可以的(使用Name时要注意,必须给元素的Name赋过值)。

例如:Workbooks(1),Worksheets(“Name”),Workbooks.Item(1)是等价的。

小例子如下:Sub TestCollection()Dim col As New CollectionWith col.Add (0).Add (1).Add (2)End Withcol.Remove (1)MsgBox col.CountDim i As VariantFor Each i In colMsgBox iNextDim j As IntegerFor j = 1 To col.CountMsgBox col.Item(j)NextEnd SubVBA的很多对象中都包括集合,但是这些集合中的对应方法已经做出了修改,使用时要注意参数和返回值。

例如Workbooks集合Add方法就返回新添加的Workbook;Worksheets集合Add方法返回新添加的Worksheet。

excel,vba,学习总结.doc

excel,vba,学习总结.doc

excel,vba,学习总结篇一:01-ExcelVbA学习总结-基础知识ExcelVbA学习总结-基础知识1.什么是VbA?当前辈们使用Excel的时候,他们惊奇的发现:Excel那是相当的彪悍,几乎任何的数据分析与处理,它都可以"近乎完美"(实际上不可能完美)完成。

但是在使用的过程中,他们也同样发现,有很多工作是要重复做的。

如果要想自动重复的完成这些工作,必须要借助其他的编程语言和工具。

微软为了简化这个过程,开发了一个通用的自动化语言,这个就是VbA(VisualbasicforApplication)。

所有支持VbA的应用程序都可以方便的自动化执行某些固定的步骤,除此以外,支持VbA的应用程序之间也可以通过VbA这个平台进行互操作。

由于这里讨论的是Excel中的VbA,所以我后面的总结内容都是以Excel中的VbA为主。

VbA是Vb的一个子集,它们之间有些地方是不同的:?Vb程序可以独立的部署和运行,但是VbA程序不能离开宿主程序运行。

Vb程序是一个编译型的语言,程序需要编译后执行,而VbA程序是解释执行的脚本语言。

?通过VbA这个工具,Excel就可以完成许多自动化的任务,并且可以充分利用offiexcel,vba,学习总结)ce其它组件的功能。

2.VbA能做什么?知道了VbA是什么东东后,那么它能干什么呢?确定的说,VbA基本能做一切Excel能做的事,比如打印,生成报表,分析数据,生成图表等,这是VbA最大的优点。

不需要额外实现这些标准的功能,只需要简单的调用就可以了,Excel已经做好了一切准备。

除了这个好处,VbA其实还能处理很多的任务:?自定义Excel的外观,菜单,工具栏等。

重复执行自动化操作。

操作文件和文件夹访问数据库并执行相关操作访问网络操作XmL获取系统信息操作和自动化office其它组件(支持VbA的其他公司的产品也可以操作)???????除了上述的任务外,VbA还有很多其它的功能有待发掘。

ExcelVBA自学笔记

ExcelVBA自学笔记

ExcelVBA自学笔记一、对象、集合、属性与方法介绍1.对象对象就是客观存在的东西,是具体存在的事物,如:桌子、电脑等。

E某celVBA中的对象是指在E某cel里操作和控制的东西,如:工作表、单元格、图片等。

VBA通过代码类操作E某cel,处理数据。

编写VBA程,就是编写VBA语句引用对象,有目的的操作它。

引用对象就是指明对象的位置或名称,把它同集合里的其他对象区别开来。

2.集合集合也是对象,是包含一组相关对象(多个同种类型的对象)的对象,例如,三个工作表是同一类型的对象,可以用“工作表”来称呼它们,“工作表”为集合名称。

只要集合中发生变化,集合中的对象的位置就可能发生变化;因此,集合内任何特定对象的位置均可改变。

3.属性每个对象都有属性。

对象的属性可以理解为对象具有的特点,如颜色。

对象的属性还可以理解为对象包含的其它对象。

书写时,对象和属性之间用点(.)连接,对象在前,属性在后。

例如:Sheet1工作表的A1单元格,表示为Workheet(“heet1”).Range(“A1”)4.方法每个对象都有方法。

方法是指在对象上执行的某个动作,例如:打开工作簿、复制工作表、选中单元格,这里的打开、复制、选中即为在对象上执行的动作。

对象和方法之间用点(.)连接,对象在前,方法在后。

例如:选中A1单元格,表示为Range(“A1”).Select二、变量变量用来保存程序运行过程中需要临时保存的数据或对象。

声明变量就是指定变量的名称和可以存储的数据类型。

语法:Dim变量名A数据类型声明变量有如下4种语法:Dim变量名A数据类型本地变量Private 变量名A数据类型模块级变量Public变量名A数据类型公共变量Static 变量名A数据类型静态变量变量的作用域:决定该变量可以在哪个模块中使用。

本地变量:在一个过程中使用Dim或Static语句声明的变量,只有声明变量的语句所在的过程可以使用它。

(作用域为当前过程)模块级变量:在模块的第一个过程之前使用Dim或Private语句声明的变量,该模块里的所有过程都可以使用它。

ExcelVBA中使用集合和字典对比总结

ExcelVBA中使用集合和字典对比总结

ExcelVBA中使用集合和字典对比总结目录•Excel VBA 中使用集合和字典对比总结•o Collection(集合)对象o▪Collection 成员o Dictionary(字典)对象o▪Dictionary 成员o字典与集合对比Excel VBA 中使用集合和字典对比总结Collection(集合)对象VBA中有一个集合对象(Collection),Collection 对象是有序保存数据的,我们把它理解为可以随意增减容量的动态一维数组,其保存的数据类型可以大部分类型,并且同一个集合内可以保存不同类型的数据。

与数组相比,集合有以下特点:collection对象添加、删除元素的方法与数组不同及不能直接更新已经添加的元素。

备注:集合的成员可以是大部分数据类型,包括对象(object类型),但是,通过 Tpye 定义的结构体的类型不能存储,在字典内也不能。

Collection 成员1.object.count 属性:long类型,返回collection对象中元素的个数2. object.add(item,key,before,after) 方法,给集合对象中添加新值,无返回值部分 说明object 集合对象表达式item 必需的。

要添加到集合中的元素或项目key 可选的。

在一个集合中这个key 必需是唯一的字符串,不能出现重复,其作用是用于代替位置索引访问集合中的元素或项目,该key 值不区分大小写,并且如果在key 中已经使用某个字符串,那么,item 中也不能出现该字符串。

before 可选的,介于1 和 集合的成员数量(collection.count )之间。

如果该值取值是字符串表达式,则为key 值after 同上, 注意after 和before 不能同时指定3. object.remove(index)方法,用于从集合中移除元素,无返回值4. object.item(index) 或者 object(index) 方法,返回index 所指的集合元素示例Sub Collection_Test()'声明并初始化一个Collection 对象变量cDim c As New Collection'最常规的Add 方法的调用,可Add 任意类型的对象c.Add "One"'有key 参数的调用,这个字符串的key 参数必须没有被占用c.Add "Two", "Second"'下面这句会导致运行时错误457,也即索引已经被占用' c.Add "Hao", "Second"'下面这句传递了before 参数,将"Zero"插入到原来的第二个元素之前,也即占用第二个元素的位置c.Add "Zero", , 2'下面这句传递了after 参数,将"Oh yeah"插入到原来的第二个元素之后,也即现在的"Zero"之后,成为第三个元素c.Add "Oh yeah", , , 2'下面这句传递三个参数,key参数只是给集合中的这个新增元素一个除原有的数值索引外的另一个字符串索引,这个索引会更友好,更方便记忆c.Add "Five", "Fifth", , 4'下面是读取"Five"这个元素,可见字符串索引,是不区分大小写的Debug.Print c("fifth"), c("Fifth"), c(5), c.Item(5), c.Item("Fifth"), c.Item("fifth")'下面这一句会出错,错误提示:索引已经被占用' c.Add "Six", "fifth"End Sub以上示例来自于:VBA笔记——collection方法示例2:演示结构体不能保存到collection中' 在普通模块中声明一个结构体Public Type Personname As Stringage As IntegerEnd TypeSub test()Dim mycollection As New CollectionDim p As Person = "john"p.age = 25mycollection.Add p ' 此语句报错Debug.Print mycollection(1).nameEnd SubDictionary(字典)对象字典(Dictionary)对象是微软Windows脚本语言中的一个很有用的对象(经过我的测试也是有序的)。

excel vba中对象常用集合

excel vba中对象常用集合

excel vba中对象常用集合Excel VBA中常用的对象集合在Excel VBA中,对象是编程的核心概念之一。

对象是VBA中最主要的元素,通过操作对象可以实现对Excel工作表、单元格、图表等各种元素的控制和操作。

而对象集合则是一组具有相同类型的对象的集合,通过操作对象集合可以批量处理对象,提高编程的效率和灵活性。

本文将介绍Excel VBA中常用的对象集合,包括工作簿集合、工作表集合、单元格集合、图表集合和命名范围集合。

一、工作簿集合工作簿集合是Excel VBA中最常用的对象集合之一,它包含了所有打开的工作簿对象。

通过操作工作簿集合,可以对多个工作簿进行批量处理,比如遍历所有工作簿、关闭所有工作簿等。

常用的工作簿集合对象有Application.Workbooks和Workbooks。

Application.Workbooks是Excel应用程序对象的属性,表示当前Excel应用程序中所有打开的工作簿集合。

通过Application.Workbooks可以访问和操作所有打开的工作簿。

Workbooks是Excel VBA中的一个对象集合,它包含了所有打开的工作簿。

通过Workbooks集合对象可以实现对工作簿的遍历、添加、打开、保存、关闭等操作。

二、工作表集合工作表集合是Excel VBA中常用的对象集合之一,它包含了一个工作簿中所有的工作表对象。

通过操作工作表集合,可以对多个工作表进行批量处理,比如遍历所有工作表、复制工作表等。

常用的工作表集合对象有Workbook.Worksheets和Worksheets。

Workbook.Worksheets是工作簿对象的属性,表示当前工作簿中所有的工作表集合。

通过Workbook.Worksheets可以访问和操作当前工作簿中的所有工作表。

Worksheets是Excel VBA中的一个对象集合,它包含了一个工作簿中所有的工作表。

通过Worksheets集合对象可以实现对工作表的遍历、复制、删除、隐藏等操作。

excelvba学习总结

excelvba学习总结

excelvba学习总结【篇一:01-excel vba 学习总结 - 基础知识】excel vba 学习总结 - 基础知识1.什么是vba?当前辈们使用excel的时候,他们惊奇的发现:excel那是相当的彪悍,几乎任何的数据分析与处理,它都可以近乎完美(实际上不可能完美)完成。

但是在使用的过程中,他们也同样发现,有很多工作是要重复做的。

如果要想自动重复的完成这些工作,必须要借助其他的编程语言和工具。

微软为了简化这个过程,开发了一个通用的自动化语言,这个就是vba(visual basic for application)。

所有支持vba的应用程序都可以方便的自动化执行某些固定的步骤,除此以外,支持vba的应用程序之间也可以通过vba这个平台进行互操作。

由于这里讨论的是excel中的vba,所以我后面的总结内容都是以excel中的vba为主。

vba是vb的一个子集,它们之间有些地方是不同的:? vb程序可以独立的部署和运行,但是vba程序不能离开宿主程序运行。

vb程序是一个编译型的语言,程序需要编译后执行,而vba程序是解释执行的脚本语言。

?2.vba能做什么?知道了vba是什么东东后,那么它能干什么呢?确定的说,vba基本能做一切excel能做的事,比如打印,生成报表,分析数据,生成图表等,这是vba最大的优点。

不需要额外实现这些标准的功能,只需要简单的调用就可以了,excel已经做好了一切准备。

除了这个好处,vba其实还能处理很多的任务:? 自定义excel的外观,菜单,工具栏等。

重复执行自动化操作。

操作文件和文件夹访问数据库并执行相关操作访问网络操作xml获取系统信息操作和自动化office其它组件(支持vba的其他公司的产品也可以操作) ? ? ? ? ? ? ?除了上述的任务外,vba还有很多其它的功能有待发掘。

3. vba与macromacro是一组excel能理解并执行的命令集合。

VBA中的表格操作技巧总结

VBA中的表格操作技巧总结

VBA中的表格操作技巧总结在Excel VBA编程中,表格操作是非常常见且重要的任务。

通过使用VBA,我们可以自动化执行各种表格操作,如插入、删除、复制、粘贴、排序、筛选等。

本文将总结一些VBA中常用的表格操作技巧,以帮助您更高效地处理Excel中的数据。

1. 插入行和列插入行和列是表格操作中常见的需求。

在VBA中,您可以使用Insert方法实现此操作。

例如,要在第3行之后插入一行,可以使用以下代码:```VBARows(3).Insert```如果要在第C列之后插入一列,可以使用以下代码:```VBAColumns("C").Insert```2. 删除行和列与插入行和列类似,删除行和列也是常见的表格操作。

在VBA中,可以使用Delete方法实现此操作。

例如,要删除第5行,可以使用以下代码:```VBARows(5).Delete```如果要删除第F列,可以使用以下代码:```VBAColumns("F").Delete```3. 复制和粘贴在表格操作中,复制和粘贴是非常常见的需求。

VBA提供了Copy和Paste方法来实现这些操作。

以下是使用VBA复制一个单元格范围并将其粘贴到其他位置的示例代码:```VBARange("A1").Copy Destination:=Range("B1")```如果您想将整个表格的内容复制到另一个位置,可以使用以下代码:```VBAedRange.Copy Destination:=Range("D1")```4. 排序和筛选排序和筛选是处理大量数据时非常重要的操作。

VBA提供了Sort 和AutoFilter方法来实现这些功能。

以下示例代码演示了如何使用VBA对表格进行排序和筛选:```VBAActiveSheet.Sort.SortFields.ClearActiveSheet.Sort.SortFields.Add Key:=Range("A1"),SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveSheet.Sort.SetRange Range("A1:C10").Header = xlNo.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.ApplyEnd WithActiveSheet.AutoFilterMode = FalseRange("A1:C10").AutoFilter Field:=1, Criteria1:="Red"```在上述示例中,我们首先根据A列的值对表格进行升序排序,然后筛选出A列值为"Red"的行。

ExcelVBA常用函数总结

ExcelVBA常用函数总结

ExcelVBA常用函数总结VBA肯定能调用工作表函数,调用方法也是很简单,只需在函数名称前面加上:Application.WorksheetFunction.函数名(参数)。

其参数的使用规则与在工作表中使用要求完全一致。

除了能调用工作表函数,VBA自身内置也有很多函数可以使用。

因为是VBA自身内置的函数,所以在使用时,在前面可以加上:VBA.函数名,也或者直接调用写函数名。

经常有人可能用不同版本的办公程序打开有代码的工作簿,结果就有可能会出现如“找不到工程或库”的提示。

怎么办呢?如果是因为VBA自身内置函数的原因,则可以在前加上“VBA.”就行了。

当然,也可在VBE界面中菜单【工具】->【引用】打开引用对话框,查找带勾项中含“丢失…”、“找不到…”、“MISSING…”的条目,并取消勾选,确定,基本就可以了。

现在总结下常用的VBA自身内置函数如下(中间文字过长,或以跳转到最下面看看“其他常用函数”,很有用的哦。

):测试类函数:IsNumeric(x) - 是否为数字, 返回Boolean结果。

IsDate(x) - 是否是日期, 返回Boolean结果。

IsEmpty(x) - 是否为Empty, 返回Boolean结果。

IsArray(x) - 指出变量是否为一个数组。

IsError(expression)- 指出表达式是否为一个错误值。

IsNull(expression)- 指出表达式是否不包含任何有效数据(Null)。

IsObject(identifier)- 指出标识符是否表示对象变量。

数学函数:Sin(X)、Cos(X)、Tan(X)、Atan(x) - 三角函数,单位为弧度。

Log(x)、Exp(x) - 返回x的自然对数,指数。

Abs(x) - 返回x的绝对值。

Int(number)、Fix(number) - 都返回参数的整数部分,区别:Int 将 -8.4 转换成 -9,而 Fix 将-8.4 转换成 -8。

Excel之VBA常用功能应用篇:集合对象的使用方法

Excel之VBA常用功能应用篇:集合对象的使用方法

Excel之VBA常用功能应用篇:集合对象的使用方法本文介绍一个十分万能的对象,刚开始学习vba并不能理解,这个对象具体能干啥,当深入学习了解了其它对象之后,才发现,这就是个万能的对象。

也就是说,此对象可以代替任何对象。

对象名称:Collection说明:Collection 对象是一组可称为“单元”的有序项。

使用 Collection 对象,可以非常便捷地将一组相关项引用为一个对象,集合成员无需共用相同的数据类型。

创建方法:Dim ColObj As New Collection通过上面一句代码,就创建了一个collection对象,对象名称为ColObj,之后就可以进行对象成员的添加,删除,提取等等操作了。

Collection对象有3个方法和1个属性,看上去很简单。

具体方法和属性如下图所示:示例:本示例是把窗体中的控件定义为一个集合对象Collection,然后可以对集合中的任意对象进行操作。

代码:如下代码放到模块中Option ExplicitDim ColObj As New Collection'定义集合对象Dim xFormObj As UserForm'定义窗体对象给集合对象添加成员,应用到Add方法。

Public Sub setColobj()On Error Resume NextSet xFormObj = UserForm1With ColObj.Add bel1.Add xFormObj.TextBox1.Add mandButton1.Add xFormObj.ListBox1End WithSet xFormObj = NothingEnd Sub提取集合对象中的成员并显示到列表框中Public Sub ShowColobj(xItemKey)On Error Resume NextDim i As Integer, xStr As StringSet xFormObj = UserForm1xFormObj.ListBox1.ClearFor i = 1 To ColObj.CountxFormObj.ListBox1.AddItem ColObj.Item(i).Name, 0'添加到列表框xStr = xStr & VBA.TypeName(ColObj.Item(i)) & VBA.vbCrLf Next iMsgBox xStrSet xFormObj = NothingEnd Sub其中,ColObj.Item(i)就是提取成员,加上Name就是把成员对象的名称显示出来,同理,可以加上成员对象的任何属性,只要这个成员具有的属性或方法都可以使用。

excel_VBA总结

excel_VBA总结

Visual Basic For Application(VBA)VBA程序设计的最终目的是为了处理数据.宏:宏实际上就是一个简单的VBA的Sub过程,它保存在模块里,以Sub开头,以End Sub结尾,执行时就从第一句逐句执行,直到End Sub结束。

对象、属性、方法,事件:1.对象:(1).对象就是存在的东西,是VBA处理的内容,包括工作薄、工作表、工作表上的单元格区域、图表等等。

对象可以相互包含.(2).集合:我理解的集合是对相同类型的对象的统称。

2.属性:(1).每一个对象都有属性,一个属性就是对一个对象的一个设置。

一个对象有哪些属性我们可以在属性窗口里查看,要修改一个对象的某种属性,如名称、显示状态、颜色等等,也可以在属性窗口里进行修改,当然我们还可以利用代码进行修改。

3.方法:(1).每一个对象都有方法,方法就是在对象上执行的某个动作。

4.事件:(1).事件就是由用户或者系统触发的,可以在代码中响应的一段代码。

比如,当我们移动鼠标,打开工作薄,激活工作表,选中单元格,改变单元格的数值,点击按钮或窗体,敲击键盘等等这些都会产生一系列的事件,通过编写代码响应这些事件,当发生此类事件时,程序代码就会进行相应的操作。

宏的缺点:(1)不可以建立公式,函数;(2)没有判断或循环的功能;(3)不能进行人机交互;(4)无法显示用户窗体;(5)无法与其他软件或文件进行互动。

数组:(1).数组的特点:1、数组共享一个名字,即数组名;2、数组是变量的集合,有多个元素;3、数组中的元素按顺序保存在数组中,元素通过索引数字加以区分;4、数组是变量。

(2).动态数组在定义数组的时候,并不能确定数组的大小,这时,我们在首次定义数组的时候括号内为空(当然先指定一个大小也是可以的,但纯属是多余),在程序过程中用Redim语句去重新指定数组的大小,这就是动态数组。

VBA中的数组与集合详解与对比分析

VBA中的数组与集合详解与对比分析

VBA中的数组与集合详解与对比分析在VBA编程中,数组和集合都是非常重要的数据结构。

它们可以用来存储和处理大量数据,提供了在编程过程中快速访问和操作数据的方式。

在本文中,我将详细解析VBA中的数组和集合,并进行比较分析。

一、数组的基本概念和用法数组是一种由相同类型的数据元素组成的有限序列。

在VBA中,数组可以是一维、二维或多维的。

可以通过声明数组变量并指定数组大小来创建一个数组。

例如,声明一个一维数组可以使用以下语法:Dim arr(10) As Variant在上述语句中,我们创建了一个包含11个元素的一维数组arr,元素的索引从0到10。

可以使用索引来访问数组中的元素,例如arr(0)表示数组的第一个元素。

数组的优点是可以在内存中连续存储数据,访问速度很快。

另外,数组的大小是固定的,不需要重新分配内存。

然而,数组的缺点是数组的大小在声明时需要确定,不能动态调整。

二、集合的基本概念和用法集合是一种存储对象的容器。

在VBA中,集合是通过创建Collection对象来实现的。

可以使用Add方法将对象添加到集合中,使用Remove方法从集合中移除对象。

集合中的对象可以是不同类型的,这是与数组最大的不同之处。

创建集合对象的语法如下:Dim coll As New Collection可以使用Add方法将对象添加到集合中:coll.Add "A"coll.Add 123coll.Add Range("A1")可以使用Remove方法从集合中移除对象:coll.Remove 123集合的优点是可以动态调整大小,可以根据需要随时添加或移除对象。

此外,集合可以存储不同类型的对象,灵活性更高。

但是,由于集合的存储方式不同于数组,访问速度略慢。

三、数组和集合的比较1. 存储方式数组在内存中连续存储数据,访问速度快,存储效率高。

集合在内存中不连续存储数据,访问速度相对较慢,存储效率较低。

VBA技术总结

VBA技术总结

VBA技术总结DDC Japan Office© 2004 Hewlett-Packard Development Company, L.P.** HP Restricted **Page 2 of 15HLD 错误!未知的文档属性名称 (V ersion 错177913.doc目录1 VBA (3)1.1 VBA 概述 ......................................................................................................................... 3 2 宏 . (3)2.1 什么是宏 .......................................................................................................................... 3 2.2 录制宏 .............................................................................................................................. 3 3 Excel VBA 编辑环境 (5)3.1 什么是VBE...................................................................................................................... 5 3.2 打开VBE ......................................................................................................................... 5 3.3 VBE 基本机构.................................................................................................................. 5 3.4 VBE 工程窗口.................................................................................................................. 6 4 控制工作簿 (7)4.1 打开工作簿 ...................................................................................................................... 7 4.2 判断工作簿是否已经打开 ............................................................................................... 8 4.3 关闭工作簿 ...................................................................................................................... 8 5 控制工作表 (9)5.1 插入工作表 ...................................................................................................................... 9 5.2 检查工作表是否存在 ....................................................................................................... 9 5.3 选取工作表 ...................................................................................................................... 9 5.4 隐藏工作表 .................................................................................................................... 10 5.5 复制工作表 .................................................................................................................... 10 5.6 删除工作表 .................................................................................................................... 10 5.7 工作表命名 .................................................................................................................... 11 6 控制单元格 . (11)6.1 单元格选取 .................................................................................................................... 11 6.2 选取单元格区域............................................................................................................. 12 6.3 选取行 ............................................................................................................................ 12 6.4 选取列 ............................................................................................................................ 12 6.5 取得设置单元格内容 ..................................................................................................... 13 6.6 设置单元格区域格式 ..................................................................................................... 13 7 Excel 对话框操作 (14)7.1 使用Excel 内部对话框.................................................................................................. 14 7.2 屏蔽删除工作表是否删除对话框 ................................................................................. 14 8 外部程序调用 (14)8.1 执行外部程序(VBS ) ................................................................................................. 14 8.2 加载动态链接库. (14)DDC Japan Office© 2004 Hewlett-Packard Development Company, L.P.** HP Restricted **Page 3 of 15HLD 错误!未知的文档属性名称 (V ersion 错177913.doc1 VBA1.1 VBA 概述VBA 是Visual Basic For Application 的缩写,是Visual Basic 用来开发应用程序的一种语言。

VBA学习总结

VBA学习总结

1、以resize方法进行偏移,本身坐标为(1,1) 格式 :A1.resize(1,2).select 扩展后就是A1:B1
resize
扩大选区
2、以单元格为基础进行扩展, 本身坐标为(1,1) 格式: range(“B2”).range(“B2:c4”).select 扩展后就是 C3:D5
3.单元格并集
对象型
object
4字节
对象、属性、方法VBA最关键的三剑客
对象:需要操作/查看的“对象”
application 软件
属性:对象特有的信息 Name 名称
方法:对对象进行操作 Select 选择
Workbook 工作簿
Workbooks 工作簿集合 Worksheets 工作表集合
Value 值
Copy 复制
VBA基础使用方法
代码存储位置
存放 存放 存放 存放
事件程序代码 窗体程序代码 标准代码
文件保存类型:.xlsm 文件运行条件:安全性设置启用所有宏 代码存储位置:4个容器 事件、窗体、模块、类
类代码
进入VBE编译器-----三种方法介绍
1、单击图标法
2、工作表上右键点查看代码
3、个人推荐法:AIT+F11(用于切换代码与excel工作表)
数据类型
字符串型 字节型 布尔型 整数型 长整型 单精度浮点型 双精度浮点型 日期型
英文名
String byte Boolean Integer long single double date
符号
$
内存大小
范围
1字节 2字节 % & ! # 2字节 4字节 4字节 8字节 8字节
0~255 True 或 false

ExcelVBA学习总结-多行多列数据展示

ExcelVBA学习总结-多行多列数据展示

ExcelVBA学习总结-多⾏多列数据展⽰ 对于多⾏多列数据,基本使⽤Worksheet中的Range就可以处理了。

但是在UserForm类型的应⽤中,也时常需要处理多⾏多列的数据。

在UserForm中,显⽰和处理多列数据,通常可以有的选择有以下⼏种:DataGrid,ListView,ListBox。

前⾯两类相当强⼤,但是也⽐较复杂,⼀般的简单应⽤中⽤不到。

DataGrid DataGrid控件天⽣就是为了处理像Recordset这种数据⽽准备的,与它类似的数据控件(其它公司提供的数据控件)也还有其它⼏种,这⾥并不是重点,所以简单介绍⼀下。

默认情况下,VBE中是看不到这个控件的,需要下载DATGDCHS.dll并放到C:\winnt\system32\下,然后运⾏命令“regsvr32 DATGDCHS.dll”注册。

注册完成后,选择"Tools"菜单下的"Additional Controls..."菜单项,添加对应的控件到⼯具箱中就可以了。

DataGrid最重要的属性就是DataSource属性,就是设置表格的数据源。

其它的也可以设置列的⼀些属性,这⾥就不详细介绍了。

需要的同学请⾃备Google并⾃⾏搜索。

ListView ListView也是处理这类型数据的⼀个选择,功能也⽐较强⼤,特别是可以设置图标,在很多时候还是很适合使⽤的。

下⾯的伪代码介绍了常⽤的属性和⽅法:Dim currentItem As ListItem'清除listview1中的标题ListView1.ColumnHeaders.Clear'清除listview1中的内容ListView1.ListItems.ClearWith Sheets(1)'添加列标题ListView1.ColumnHeaders.Add 1, , .Cells(1, 1), ListView1.Width / 9ListView1.ColumnHeaders.Add 2, , .Cells(1, 2), ListView1.Width / 9'显⽰为报表视图ListView1.View = lvwReport'选取整⾏ListView1.FullRowSelect = True'复选框ListView1.CheckBoxes = TrueListView1.BackColor = RGB(255, 199, 9)For i = 5To .[A65536].End(xlUp).Row'为listview1控件⾥⾯的⾏添加内容Set currentItem = ListView1.ListItems.Add()currentItem.Text = .Cells(i, 1) '为⾏标赋值currentItem.SubItems(1) = .Cells(i, 2)currentItem.SubItems(2) = .Cells(i, 3)currentItem.SubItems(3) = .Cells(i, 4)'为⾥⾯的第三列调整相应的字体⼤⼩及颜⾊With currentItem.ListSubItems.Item(2)If .Text < 2Then.ForeColor = RGB(255, 0, 0)Else.Bold = True.ForeColor = RGB(0, 0, 255)End IfEnd WithNext iEnd With默认情况下,ListView不会出现在⼯具箱中,需要在“Tools”菜单中,点击“Additional Controls...”菜单,打开对话框,勾选“Microsoft ListView Control,version 6.0”,然后在⼯具箱中就可以使⽤了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel VBA 学习总结- 简论集合VBA的对象是有很多共性的,抛开它们所在层次的不同,它们的很多操作特征是一样的,比如它们都包括子对象集合,都包括某些激活操作,删除操作等等。

像简单的Activate,Delete,Cut类似的操作我就不详细说了。

下面我先总结一下这些共性中出镜率最多的类型:Collection,然后分析一下与之类似的两种常用类型,总结它们的不同。

选择集合的时候,要充分考虑它们的特性和实际的问题,采用合适的集合解决问题。

1. 集合定义集合的方法:Dim co l as New Collection∙Add:往集合中添加一个元素,需要提供添加到集合中的元素,也可以提供一些其它可选的参数,比如键值、位置等。

∙Remove:移除集合中的一个元素,需要提供该元素的Index值。

∙Count功能:返回集合中元素的数目。

∙Item功能:获取集合中的一个元素,由于Item是集合的默认属性,所以可以直接拿集合对象获取元素。

参数:提供Index值(基本都是从1开始),Name都是可以的(使用Name时要注意,必须给元素的Name赋过值)。

例如:Workbooks(1),Worksheets(“Name”),Workbooks.Item(1)是等价的。

小例子如下:Sub TestCollection()Dim col As New CollectionWith col.Add (0).Add (1).Add (2)End Withcol.Remove (1)MsgBox col.CountDim i As VariantFor Each i In colMsgBox iNextDim j As IntegerFor j = 1To col.CountMsgBox col.Item(j)NextEnd SubVBA的很多对象中都包括集合,但是这些集合中的对应方法已经做出了修改,使用时要注意参数和返回值。

例如Workbooks集合Add方法就返回新添加的Wo rkbook;Worksheets集合Add方法返回新添加的Worksheet。

基本上内置对象的集合属性(Application.Workbooks, Workbook.Worksheets等等),Add方法都是用于添加一个新的成员并返回这个成员,你可以使用这个引用继续完成相关的操作。

集合的索引值都是从1开始的。

集合中的元素并不要求类型一样,但是为了方便处理,通常要求是一样的。

可以用With减少代码输入。

可以用For Each遍历集合,但是VBA要求元素必须定义成Variant、Object 或者自定义的Class类型;而使用For和Item枚举也很方便。

2. 数组看完了集合,我们再看看数组与集合的对比。

数组其实也应该算是一个"集合",那么它与集合有什么不同呢?先来看看数组的特性:∙数组是一个数据表,数组的元素类型通常都是一致的(别忘了Variant,Obj ect),在定义时声明。

∙数组的下界默认为0,可以通过在模块开头加上“Optio n Base 1”强行改为1;当然也可以在定义时指定。

∙数组可以通过ReDim和Preserve改变大小。

∙数组可以使用Erase重新初始化固定大小数组中的元素(如清0,全部设为空串"",Variant类型全部设为Empty),或者释放动态数组的空间。

∙数组支持多维的。

∙数组是快速,高效的数据"集合"(内存中顺序存贮的,所以每个元素访问都很快)。

∙数组通常用于存储单元格的值,处理完毕后再返回给单元格。

从上面其实已经看到了它与集合最主要的不同了:元素类型,长度,下界,维度,效率。

既然说到数组,那我也总结一下数组常用的方式和函数:赋值的方式对于直接定义成数组的变量,循环赋值就可以了,但是除了这种方式,还有其它的方式动态生成数组,那就是可以把变量定义成Variant类型的,然后用这几种方式动态生成数组:arr = Array(1,2,3),arr = [A1:A10],或者arr = Split("a,b, c",",")。

Split函数生成的数组下标始终从0开始,即使是使用了Option Base强制从1开始了也如此。

Array函数生成的数组的下标是从Optio n Base定义的下标开始。

直接使用单元格赋值这种方式生成的数组的下标是从1开始的,即使是使用了O ption Base强制从0开始了也如此。

数组生成字符串使用Join函数就可以了:s = Jo in(Array("a","b","c"),",");如果数组类型不是S tring,则需要先转换一下。

获取上下界使用UBound(arr), LBound(arr)获得上下界。

筛选数据使用Filter(arr,match,include,compare)方法获得符合条件的数据,后面两个参数并不是必须的。

下面的小例子返回“不”包含“A“字符串的结果“D E”:Sub testArr()Dim a1 As VariantDim i As Integera1 = Array("A", "BA", "CA", "D", "E")a1 = Filter(a1, "A", False)MsgBox Join(a1)End SubFilter过滤是模糊过滤,注意这个特点。

如果需要精确过滤,需要自己写方法解决。

排序可以利用内置的Large,Small方法实现数值类型的排序。

非数值类型,可以使用Worksheet中的Rank辅助排序,也可以自己写冒泡,快速,选择,希尔,桶排序等算法。

Sub testArr()Dim a(1To5) As IntegerDim b(1To5) As StringDim i As Integera(1) = 111a(2) = 121a(3) = 234a(4) = 11a(5) = 9For i = 1To5b(i) = rge(a, i)NextMsgBox Join(b, ",")End Sub经典排序的实现可参看:/cdb/viewthread.php? tid=13706&fpage=1取得最大值最小值使用WorksheetFunction内置的最大,最小值函数即可。

MsgBox Application.WorksheetFunction.Max(arr)数组置换使用内置的WorksheetFunction.Transpose函数。

Public Sub TestTranspose()Dim d(1To3) As Stringd(1) = "a"d(2) = "b"d(3) = "c"[a1].Resize(1, UBound(d)) = d[d1].Resize(UBound(d), 1) = WorksheetFunction.Transpose(d)End SubTranspose方法用于将一组单元格的行列置换,输入的参数要求是数组格式的。

Transpose方法可以用于将数组的数组(数组的元素是数组,要求元素数组长度一致)转换成二维数组。

Transpose方法返回的类型为Variant,返回的数组的下界始终为1,即使是使用了Option Base强制定义为其它值也如此。

3. 字典在很多Collectio n的不方便处理的情况下,字典常常作为扩展手段来使用。

字典的含义就不啰嗦了,下面总结一下字典。

字典的创建方式:方式一:“后期绑定”,定义一个Object变量,直接赋值 - Set d = CreateObj ect("Scripting.Dictionary")。

方式二:“前期绑定”,加入c:\windows\system32\scrrun.dll 引用,然后明确创建类型 - Dim d as New Dictio nary字典的四个属性:∙CompareMode - 决定key的比较方法,BinaryCompare(默认)是采用二进制方式比较:即a,A是不同字符;TextCompare采用文本方式比较:即a,A是相同字符。

其它的比较方式可以参考相关的文档。

∙Count - 计算字典中的条目数量,返回Long值。

∙Key - 键值,通常是整数或字符串;可以是除数组外的任何类型;Key具有唯一性。

∙Item - 可以是任何对象(不含自定义数据)。

字典的六个方法:∙ Add - 向字典添加内容(添加的内容是对象时注意不要忘记使用Set)。

∙ Exists - 判断keys中有没有要找的key,返回 true 或 false。

∙ Keys - 返回字典的Key数组,数组下标始终从0开始,无视Optio n Ba se强制定义的值。

∙ Items - 返回字典的Item数组,数组下标始终从0开始,无视Option Base强制定义的值。

∙ Remove - 按照key从字典中删除一个项目。

∙ RemoveAll - 清空字典。

简单的看一个小例子:Public Sub TestDic()Dim d As ObjectSet d = CreateObject("Scripting.Dictionary")d("A") = 1d("B") = 2d("C") = 3'Change Keyd.Key("A") = "D"'Change Valued("D") = 5MsgBox d("D")MsgBox d.CountEnd SubVBA中字典具有以下的优点:添加、删除元素的速度比Collection要快,避免了大量的循环与逻辑判断,可使用的方法也比较多、比较方便。

字典的使用也基本上是围绕这些优点展开的,比如:利用Key的唯一性,快速去除重复的数据,通常配合Transpose方法可以完成许多这种任务。

关于字典的知识,可以参看牛人的详细解释和常用示例:http://www.excelp /forum.php?mod=viewthread&tid=145901&highlight=%D7%D6% B5%E4。

相关文档
最新文档