Excel VBA实例
snail一路向前
这个作者很懒,什么都没留下…
展开
-
【Excel VBA】控件应用(1)-文本框
12.1 限制文本框的输入用户在使用文本框输入数据时,往往希望可以限制输入数据的类型,例如,只允许输入数字,但是文本框的现有属性无法直接实现这样的要求。此时可以在文本框的KeyPress事件过程和Change事件过程中编写代码来判断输入的字符类型。只允许输入数字字符和一个"-"号、一个"."号,示例代码如下。Private Sub txtDemo_KeyPress(ByVal KeyA...原创 2020-03-16 22:05:50 · 10334 阅读 · 0 评论 -
【Excel VBA】PageSetup对象-打印设置
我们在工作中经常会打印东西,会手动设置一些参数,如横向或竖向打印等。了解下PageSetup属性,用简短的几行代码设置好打印参数,便可以设置一次,永久使用,方便高效。PageSetup对象代表页面设置说明。包含所有页面设置的属性(左边距、底部边距、纸张大小等)。下例将打印方向设置为横向,然后打印工作表。With Worksheets("Sheet1") .PageSetup...原创 2020-03-13 23:05:23 · 13983 阅读 · 0 评论 -
【Excel VBA】网抓知识(3)-获取当当网图书数据
假设需要根据工作表A2单元格所输入的关键字,查询并获取当当网图书类商品的封面、书名、现价、定价、折扣及链接数据,示例代码如下。Sub WebCrawlerDangD() Dim objXMLHTTP As Object Dim objDOM As Object Dim objDOMLi As Object Dim objShape As Shape...原创 2020-03-12 21:01:31 · 842 阅读 · 0 评论 -
【Excel VBA】网抓知识(2)-抓取百度前5页查询结果
在百度中搜索关键字"网络爬虫",并将前5页查询结果的数据写入当前Excel工作表中,示例代码如下。Sub WebQueryBaiduPN() Dim strURL As String Dim objXMLHTTP As Object Dim objDOM As Object Dim objTitle As Object Dim intPageNum A...原创 2020-03-11 22:09:47 · 1225 阅读 · 0 评论 -
【Excel VBA】网抓知识(1)-网抓基本步骤
用户通过网络浏览器登陆互联网时,会向Web服务器请求某个网页页面,服务器收到请求后会做出响应,将设定好的页面文档发送到网络浏览器的显示界面,这便是一个完整的网页请求和处理的过程。网抓是尽量在代码过程中模拟这个交互过程。首先,在Excel中利用VBA可以抓取网站数据。其次,无论是利用Python、java还是VBA进行网抓,都需要对HTTP协议、HTML(HyperTextMarkup ...原创 2020-03-10 21:56:23 · 6341 阅读 · 0 评论 -
【Excel VBA】字典对象(4)-利用字典与数组实现多条件查询
多条件查询并返回多列数据,是在数据查询时经常会使用的功能,利用字典与数组结合,能够高效地实现此功能。数据源图如下。现需要根据款号,编号两个条件,查询工艺、数量、报价信息,示例代码如下。Function strDicLook(ByVal rngRegion As Range _ , ByVal rngConditionO As Range _ ...原创 2020-03-09 21:46:41 · 4782 阅读 · 0 评论 -
【Excel VBA】字典对象(3)-利用字典对象实现条件查询
如下图所示,"科目代码"与"科目名称"呈一一对应关系。如果需要根据"科目代码"查询对应的"科目名称",示例代码如下。Function strLookDic(ByVal rngData As Range, ByVal rngLook As Range) As String Dim dicData As Object Dim avntList() As Variant...原创 2020-03-08 20:19:38 · 1713 阅读 · 0 评论 -
【Excel VBA】字典对象(2)-常用方法与属性
字典对象用于保存两个相关联的一维数组,分别为关键字Key组成的关键字列表与对应条目Item组成的元素列表。其中,关键字Key具有唯一性,即在关键字Key所代表的数组中,将不允许出现重复数据,而Item则无此限制。1 Add方法使用字典对象的Add方法可以将一组关联的关键字与条目添加到字典对象中,其语法格式如下。Object.Add Key, ItemKey和Item两个参数都是必需...原创 2020-03-07 20:08:21 · 2886 阅读 · 0 评论 -
【Excel VBA】字典对象(1)-字典的前期绑定与后期绑定
字典(Dictionary)具有独特的属性和方法,但该对象并非VBA内部集成的对象,需要添加引用才可以在VBA中使用。字典对象被集成在Scrrun.dll动态链接库中,在使用之前,需要先注册该动态链接库。在VBA中调用字典对象有前期绑定与后期绑定两种方式,根据不同的需求可以选用不同的绑定方式。1.前期绑定按照如下具体操作,可以实现字典对象的前期绑定。步骤1:在VBE中选择【工具】→...原创 2020-03-06 20:25:16 · 7350 阅读 · 0 评论 -
【Excel VBA】数组应用(5)
1.多表查询在日常工作中,源数据经常分散在多个工作表中。例如,示例工作簿中有6个月的数据分别保存在不同的工作表中,如下图所示。现需要将全部月份金额大于或等于2000的数据罗列出来,示例代码如下。Sub TablesQuery() Dim wksList As Worksheet Dim avntList() As Variant, avntResults() ...原创 2020-03-05 20:26:34 · 914 阅读 · 0 评论 -
【Excel VBA】数组应用(4)
动态数组与静态数组在声明数组时将指定数组的上下界限与维度,由此创建的数组为静态数组。如下代码声明5行2列的静态二维数组,在代码中不再允许修改数组的维度。Dim aStr(1 to 5,1 to 2) As StringSub StaticArray() Dim astrStatic(1 To 5, 1 To 4) As String ReDim Preserve...原创 2020-03-04 20:21:15 · 964 阅读 · 0 评论 -
【Excel VBA】数组应用(3)
按指定字符拆分字符串在VBA中,使用函数Split实现将一个字符串以指定分隔符拆分出多个字符串。Split函数返回下标下界从零开始的一维数组,包含以指定分隔符拆分后形成的子字符串,其语法格式如下。Split(expression[, delimiter[, limit[, compare]]])部分 描述 expression 必需的。包含子字符串和分隔符的字符串表...原创 2020-03-03 19:59:23 · 887 阅读 · 0 评论 -
【Excel VBA】数组应用(2)
图1 源数据如果需要查询所有"编号"为"EH002"的记录,并将查询结果展示在单元格区域中,示例代码如下。Sub LoopArr() Dim avntData() As Variant'声明数组保存数据源 Dim avntResults(1 To 30, 1 To 4) As Variant Dim intCount As Integer'声明变量用于记...原创 2020-03-02 21:40:57 · 609 阅读 · 0 评论 -
【Excel VBA】数组应用(1)
合理使用数组和字典,将极大地提升代码的运行效率。例如,将单元格内容加载到数组中,充分利用数组在内存中的快速处理特征处理数据,然后再将回写到工作表单元格之中。利用数组快速完成"编号"和"日期"两列数据的位置交换。Sub uRngTomRng() Dim avntNum() As Variant, avntDate() As Variant avntNum = Range...原创 2020-03-01 21:49:13 · 1007 阅读 · 0 评论 -
ExcelVBA 获取用户选择的文件夹名
如果需要对指定的文件夹进行操作,可以调用Excel内置的【文件夹选取器】对话框,对话框的返回值是用户选中的文件夹名,示例代码如下。Sub SelectFolder() Dim objDialog As FileDialog'定义变量 Set objDialog = Application.FileDialog(msoFileDialogFolderPicker)...原创 2020-02-29 19:55:01 · 2170 阅读 · 0 评论 -
ExcelVBA获取用户选择的文件名
如果需要对用户指定的文件进行操作,可以使用GetOpenFilename方法打开Excel内置的【打开】对话框,获取用户选择的文件名,此过程并不需要真正打开文件,示例代码如下。Sub SelectFile() Dim vntFilename As Variant Dim i As Integer vntFilename = Application.GetOpen...原创 2020-02-28 22:06:28 · 2032 阅读 · 0 评论 -
ExcelVBA使用Shape对象的AddPicture方法制作图片产品目录
如果需要制作如图1所示的产品目录,因为所需图片的尺寸通常并非完全一致,所以除了插入图片,还需要调整图片的尺寸以适应"图片"列单元格的大小。使用VBA可以快速完成这一系列繁杂的操作,示例代码如下。Sub InsertPictures() Dim lngRow As Long Dim objShape As Shape Dim objTargetCell As R...原创 2020-02-27 21:10:12 · 10918 阅读 · 0 评论 -
ExcelVBA 将多张工作表中的数据合并到一张工作表中
在工作中,我们经常遇到多张工作表合并到一张工作表的问题,比如希望将图1所示中各分表中保存的成绩记录,汇总到工作簿中的"成绩表"工作表中,可以用图2下面的程序。图1 七(3)班工作表中的成绩记录图2汇总结果Sub hebing() '把各班成绩表中的记录合并到"成绩表"工作表中 Dim sht As Worksheet Set sht = Wor...原创 2020-02-25 21:19:13 · 5657 阅读 · 0 评论 -
ExcelVBA Workbook工作簿对象介绍
Workbooks是所有工作簿对象组成的集合,而Wrokbook对象是Workbooks集合的一个成员。1.引用集合中的工作簿利用工作簿名引用工作簿,如已经打开了"Book1.xlsm"工作簿,那么Workbooks("Book1.xlsm")就代表这个工作簿对象。2.访问对象的属性,获得工作簿文件的信息通过代码获得指定工作簿的名称、保存的路径等文件信息,示例代码如下。Sub WbMsg...原创 2020-02-24 20:48:38 · 3163 阅读 · 1 评论 -
ExcelVBA Application对象介绍
Application对象代表Excel程序本身,它就像一棵树的根,Excel中所有的对象都以它为起点。实际编程时,会经常用到它的许多属性和方法。1.用ScreenUpdating属性设置是否更新屏幕上的内容在使用Excel解决一个问题时,往往需要执行多步操作或计算。无论是通过手动还是VBA代码完成这些操作,默认情况下,Excel都会将每步操作所得的结果显示在屏幕上。Applicati...原创 2020-02-23 21:12:11 · 1997 阅读 · 0 评论 -
Excel VBA对象介绍
我们每天重复着打开、关闭工作簿,输入、清除单元格内容的操作,其实都是在操作Excel的对象。如下操作: 退出Excel程序是操作Application对象; 新建工作簿是操作Workbook对象; 新建工作表是操作Worksheet对象; 删除单元格是操作Range对象; 插入图表是操作Chart对象。 实际上,VBA程序就是用代码记录下来的...原创 2020-02-23 21:04:37 · 414 阅读 · 0 评论 -
Excel VBA自定义序列排序
图1 待排序数据集在图1中所示的数据集中,如果希望按单元格区域E2:E6所列序列进行排序,需要先使用AddCustomList方法为应用程序添加自定义序列,示例代码如下。Sub SortByLists() Dim avntList As Variant, lngNum As Long avntList = Range("E2:E6") Application.A...原创 2020-02-22 19:52:09 · 6328 阅读 · 0 评论 -
Excel VBA多关键字数据排序
关注微信公众号:VBA168每天更新Excel VBA经典代码,祝你工作和学习更轻松!使用Range对象的Sort方法对区域进行排序时,同时最多只能指定3个关键字,当需要按照超过3个关键字对区域进行排序时,可以通过多次执行Sort方法实现。需要注意的是,在排序时应按照各关键字的倒叙顺序。例如,如果按照A→B→C→D的关键字顺序进行排序,则应按D→C→B→A的顺序执行Sort方法。图1 带排...原创 2020-02-21 19:12:21 · 4292 阅读 · 0 评论 -
Excel VBA数据排序
在如图1所示数据列表中,需要按总成绩从高到低进行排序,示例代码如下。Sub SortDemo() Range("A1").Sort key1:="总成绩", order1:=xlDescending, _ Header:=xlYes End Sub运行SortDemo过程,排序结果如图2所示。图1 待排序数据列表图2 按总成绩降序排序结果Range对象的...原创 2020-02-20 20:53:58 · 7409 阅读 · 0 评论 -
ExcelVBA使用删除重复项获取不重复记录
ExcelVBA使用删除重复项获取不重复记录关注微信公众号:VBA168每天更新Excel VBA经典代码,祝你工作和学习更轻松!利用单元格区域的RemoveDuplicates方法可以去除重复值,从而获取不重复值列表,如下图所示。示例代码如下。Sub RemoveDuplicates() Range("A1").CurrentRegion.Copy Range("E1") ...原创 2020-02-19 20:51:29 · 2587 阅读 · 1 评论 -
Excel VBA Range单元格操作实例
四、Range操作4.2取得最后一个非空单元格xlDown/xlToRight/xlToLeft/xlUpDim ERow as LongErow=Range("A" & Rows.Count).End(xlUp).Row4.3 复制单元格区域注意:使用PasteSpecial方法时指定xlPasteAll(粘贴全部),并不包括粘贴列宽Sub CopyWithSameCol...原创 2020-02-16 21:51:53 · 6028 阅读 · 0 评论