VBA 学习】的更多相关文章

打算花两三天学习VBA的基础,学习资料为<别怕,VBA其实很简单>,为了快速学习,先了解大致框架,后续再深入学习各种属性.方法和技巧. 1.VBA编程环境基本操作,手工操作,熟悉即可 2.了解过程:Sub(对应宏)和Function(对应函数) Sub过程对应手工录制的宏代码,是一堆操作的集合 Function过程是Excel的函数代码,我们可以自己编写,然后再窗口界面调用 要注意,Excel界面的函数和VBA的内置函数是不同的!Function编写的就相当于Excel的界面函数 3.VBA的…
工作中很多地方需要同时处理多个数据表,而且用数据透视表进行排版,排序,计算字段,一个一个的做非常累,这里给出批量处理的方法. 学习VBA之前最好懂一点点VB的基础知识,因为里面的很多语法问题都是由VB来的. Sub 出库数据一键生成数据透视表() '先判定sheet表名称是否正确 If ActiveSheet.name = "出库" Then MsgBox "这个是出库数据,请继续!!" Dim name As String Dim arr As Variant D…
这是一个学习VBA编程的学习笔记. 一. 介绍 二. 使用手册 2.1. 如何在Excel2010中开始使用VBA? 2.2. 如何使用VBA编辑器进行编程? 三. 语法说明 3.1 数据类型 3.2 变量和常量的定义 3.3 数组 3.4 过程语句 3.5 过程和函数 3.6 补充 四. 具体实例 一.介绍 Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Offic…
近年来,人工智能的概念深入人心,许多企业也正逐步或已推行办公自动化,寻求人力时间成本的降低,从而提升效益.对企业来说,要完全使用人工智能将工作流程自动化恐怕是没那么容易的,可以的话成本也不低,所以使用脚本语言将办公自动化仍是大多数企业现行采纳的一种方法.当然有些公司也会采用封装了脚本语言的RPA(Robotic Process Automation)软件开发和部署自动化流程,这种就比较正规了,但也需要付费使用,不是所有公司都会使用.对于个人来说,学习一些脚本语言,掌握一些自动化技能,不仅能开发出…
(一)什么是VBA?什么是宏? VBA (Visual Basic For Application)是一种编程语言,是建立在Office中的一种应用程序开发工具.可以利用VBA有效地扩展Excel的功能,设计和构建人机交互界面,打造自己的管理系统,帮助Excel用户更有效地完成一些基本操作.函数公式等不能完成的任务,从而提高工作效率.顾名思义,VBA使用的编程语言是VB. VBA是编程语言,宏是用VBA代码保存下来的程序.录制的宏只是VBA里最简单的程序,正因为如此,录制的宏存在许多的缺陷:如无…
date() 返回当前的系统日期 返回格式为 YYYY/MM/DD CDate() 学习资料:https://www.yiibai.com/vba/vba_cdate_function.html 将有效的日期和时间表达式转换为类型日期. 用法 cdate(date) 丸子:就是把输入转换为固定日期格式: YYYY/MM/DD 支持"月日年"."年月日"格式,其中月份可以为英文缩写,但是 Libre Office 的编辑器不支持此种格式,会报错,只能使用 Micro…
学习资料:https://www.yiibai.com/vba/vba_operators.html 算术运算符 加减乘除模指,这个没啥特别的. 比较运算符 和 Lua 相比,判断相等变成了一个等于号 = 不想等变成了 <> 逻辑运算符 需要注意的是全大写 AND OR NOT XOR 连接操作符 加号 + 和 & 都可以作为连接符,区别就是前者两边都是数字的时候会当成算术运算.…
学习资料:https://www.yiibai.com/vba/vba_variables.html 变量和常量命名规则 必须以字母开头 不能包含空格.句点(.).感叹号(!)或字符@,&,$,# 长度不能超过 255 个字符 不能使用 Visual Basic 保留关键字 变量 变量语法 变量在使用前必须声明即定义变量. Dim variable_name As variable_type 数据类型 在程序编写中,定义一个变量的数据类型,首先是表示它的存储形式. 其次是通知编译程序使用变量的数…
学习资料 https://www.yiibai.com/vba/vba_input_box.html 输入框 InputBox 函数说明 提示用户输入值.当输入值后,如果用户单击确定 按钮或按下键盘上的ENTER 键,InputBox函数将返回文本框中的文本.如果用户单击"取消" 按钮,该函数将返回一个空字符串(""). 函数用法 InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])…
学习资料:https://www.yiibai.com/vba/vba_macro_comments.html 注释 单引号或 REM 开头 丸子:多行注释咋办? 消息框(MsgBox) 函数功能:显示一个消息框,并等待用户点击一个按钮,然后根据用户点击的按钮执行相关的操作. 函数用法:MsgBox(prompt[,buttons][,title][,helpfile,context]) 参数 参数 类型 选项 说明 默认值 prompt 字符串 必填 在对话框中显示为消息的字符串.提示的最大长…
1. Range / Cells / Columns / Rows 2. 绝对引用 $F$13 / 相对引用 F13 公式所在单元格的被复制到其他位置时,绝对引用不变 3. VLookup / NLookup / LLookup 4. =if(ISNA(C1:C17); "There are #N/A's in one of the cells"; "") other similars: ISERROR(), ISERR(), ISBLANK(), ISEVEN()…
说明(2017.3.26): 1. 采用的是兰色幻想教学视频中的“父子转换法” 2. 这种VBA的遍历文件夹方法非常难理解,主要是因为dir这个函数,第一次带参数调用,返回的是此目录下的第一个文件,第二次无参数调用,返回的是此目录下一个第二个文件,这就很操蛋了,还要配合do循环. 3. VBA的各种do..until..loop, do..while..loop, if..then..end if, for 1 to 10..next尼玛这么多关键字要死啊!不骂不痛快!本来思考的就很累,还时不时…
说明(2017.3.23): 1. VBA的数组还是很难用的,其实就是非常难用! 2. 要先定义一个数组,可以是空的,也可以里面写个数字作为数组长度. 3. 如果是空数组,可以后面redim重新定义数组长度.如果不是空的,再用redim就会报错“数组维数已定义”! 4. dim里面不能用变量,报错“只能用常数表达式”,里面只能用具体数字. 5. redim不能重新定义数组维数,就是说本来dim了一个一维数组,redim不能把它改成二维数组. 6. redim里面貌似能用变量. 7. 两种方法,一…
说明(2017.3.20): 1. Dim As声明变量类型,Set赋值/初始化 2. With使后面的省略对象,直接点就行,后面要End With 3. Application.StatusBar = "正在创建word",这个会在Excel左下角出现提示 4. .ActiveDocument.SaveAs2(),里面第一个参数是文件名,需要加地址,不然不行 5. 最后记得加Quit,wordApp要清零(释放对象实例,收回该对象占用的内存),Application.StatusBa…
'VBA对象 'VBA中的对象其实就是我们操作的具有方法.属性的excel中支持的对象 'Excel中的几个常用对象表示方法 '1.工作簿 ' Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿 ' Workbooks ("工作簿名称") ' ActiveWorkbook 正在操作的工作簿 ' ThisWorkBook '代码所在的工作簿 '2.工作表 ' 'Sheets("工作表名称") 'Sheet1 表示第一个…
1.合并字符串A1&A22.拆分字符串LEFT(A2,SEARCH("-",A2)-1)3.下拉选项Data->Data validation->List 1.在工具栏上显示开发选项 2.新建个Module就可以在几个sheet里共享变量 Public cn As New ADODB.Connection Public strCn As String Public strCom As String Public rs As New ADODB.Recordset P…
从网上抓取数据到EXCEL中是VBA的一个常用之处,今天分享下VBA网抓的一些套路,主要有以下几种: 第一种:msxml2.xmlhttp/Microsoft.XMLHTTP/WinHttp.WinHttpRequest.5.1 With CreateObject("msxml2.xmlhttp") 'With CreateObject("Microsoft.XMLHTTP") 'With CreateObject("WinHttp.WinHttpRequ…
工作中经常要从数据库把数据跑出来放到EXCEL上,才能进行下一步的操作,那么VBA如何结合SQL提取数据呢?答案就是ADO. 声明和实例变量 引用法——引用Microsoft ActiveX Data Objects x.x Library,Microsoft ActiveX Data Objects Recordset x.x Library,声明的同时使用New实现了初始实例化 Dim conn as New Connection Dim rre as New Recordset 创建法——…
VBA创建/发送OUTLOOK邮件时怎么加上默认签名呢?用过OUTLOOK写邮件的人都知道,如果你设置了默认签名,那么在创建空白邮件的时候就会自动加上你设置的签名.根据这一特性,我们可以在用VBA创建/发送OUTLOOK邮件的时候不设置HTMLBody属性,而是采用复制粘贴的方式将正文模板复制粘贴到新建的邮件中去. 原理就是先复制工作表的表格(含格式),然后插入到有正文内容的word文件的特定位置,再把word文件的所有内容全部复制到新建的OUTLOOK邮件.这种方法相比于使用HTMLBody属…
想利用VBA自动创建/发送OUTLOOK邮件,可以借助MailItem的Body属性或HTMLBody属性,代码模板如下: Dim objOutlook As Outlook.Application '需要引用Microsoft Outlook 16.0 Object Library对象模型 Dim objMail As MailItem Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(ol…
1) 手动引用(前期绑定)   点击VBE编辑器菜单:工具 - 引用,选取: Microsoft VBScript Regular Expressions 5.5   Dim regex As New InternetExplorer 2) 代码引用(后期绑定)   Dim regex As Object   Set regex = CreateObject("VBScript.RegExp") 1) Global 属性   False,如果找到匹配的字符,就停止搜索(默认值)   T…
说明(2017.3.26): 1. 还没写完,写到新建文件夹了,下一步新建word,重命名,查找点拨,把点拨复制进去,因为要给点拨编号,应该会很麻烦 Public Sub test1() Dim path Dim filename ) Dim i%, j% i = j = ' 1. 先获取所有的文件夹 path = ThisWorkbook.path & "\oriFolder\" folders() = path ' 这里的folders数组和下面的classes数组只设置了…
说明(2017.3.25): 1. split(str,"-")和join(arr,",")函数,用法跟其他语言差不多. 2. filter函数,filter(数组,字符串,true/false)判断一个字符是否在数组中,返回满足条件的元素组成一个数组 'filter函数,filter(数组,字符串,true/false)判断一个字符是否在数组中,返回满足条件的元素组成一个数组 Public Sub test1() Dim arr, arr2, arr3 arr =…
说明(2017.3.25): 1. 知识点为dim arr2(1 to 1000, 1 to 4)先定义一个足够大的二维数组,不然后面需要transpose转置成一维数组. '抽取列表中叫“虹虹”的所有信息,设置arr2数组1到1000,可以省略转置步骤 Public Sub test1() , ), k arr = Range("a1:d5") ' MsgBox (UBound(arr)) ' Stop ) ) = "虹虹" Then k = k + arr2(k…
说明(2017.3.24): 1. 记录sheet1里面的每次改动,和改动时间! 2. 不能记录大范围的删除.改动,会提示“类型不匹配” Private Sub Worksheet_Change(ByVal Target As Range) Worksheets().Cells(Worksheets().[A65536].End(xlUp).Row + , ) = Target.Address & "->" & Target.Value Worksheets().…
说明(2017.3.22): 1. '遍历指定文件夹里的文件 '遍历指定文件夹,返回第一层文件(不含文件夹) Public Sub test1() Dim k% Dim filename$ Dim path$ path = ThisWorkbook.path ' 返回带指定扩展名的文件名.如果超过一个 *.* 文件存在, ' 函数将返回按条件第一个找到的文件名. ' 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.* 文件 filename = Dir(path…
说明(2017.3.22): 1. 根据兰色幻想VBA80集视频教学,总结 2. 大部分可以用自带函数处理,不过复制文件夹需要用到FileSystemObject对象,打开文件夹用到shell Public Sub test1() '1. 判断文件夹是否存在,dir第二个参数为vbDirectory,不然只判断文件是否存在 If Dir(ThisWorkbook.path & "\1.docx", vbDirectory) = "" Then MsgBox…
Sub abc() Dim i Dim coloumn coloumn = For i = To Dim currentValue currentValue = Val(ReplaceChar(Sheet2.Cells(i, coloumn))) If Application.WorksheetFunction.IsNumber(currentValue) Then If Abs(currentValue) < 0.05 Then Sheet2.Cells(i, coloumn).Interio…
工作中经常要从数据库把数据跑出来放到EXCEL上,才能进行下一步的操作,那么除了ADO,还有什么方法可以导入数据库数据呢? 推荐使用QueryTable对象 Dim qt As querytable constr = "OLEDB;Provider=SQLOLEDB;Server=DCDRDB601\dminputdb;Trusted_Connection=yes" '注意比ADO的连接字符串开头多了个“OLEDB;” sql="select * from ......&qu…
判断语句 大部分和 Lua 差不多,多了一个 Switch 语句 循环 For 循环 多次执行一系列语句,缩写管理循环变量的代码. For i = start To end [Step X]...Next Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 MsgBox ("The value is i is : " & i) Next End Sub For Each…