锦到说VBA
VBA从基础到进阶的学习笔记
高开低走。
这个作者很懒,什么都没留下…
展开
-
VBA实战案例:整理Endnote导出的TXT文档
整理Endnote导出的TXT文档从Endnote里面导出的文本文件复制到Excel文件中,里面包含了作者,年份,标题,摘要,关键字以及其他的一些信息,实际上并不需要这么多信息,所以这里用VBA写一个简单的复制粘贴代码就行了Option ExplicitSub Move_Sheet() Dim w1 As Worksheet, w2 As Worksheet Dim r1 As Range, r2 As Range, r3 As Range, r4 As Range Set原创 2020-11-03 18:30:25 · 740 阅读 · 0 评论 -
全民一起VBA实战篇第七课:实战篇小结
实战篇一共学习了六个专题在第一个专题里学习了表格格式操作与Excel功能调用包括文件打印的方法以及设置打印细节定时器的应用跨range的处理操作窗体、图表等Shape对象在第二个专题里学习了文本的查找定位和替换包括Find方法的使用Findnext的使用定位最后一行的技巧各种情况Usedrange或SpecialCellsEnd属性Find方法倒序循...原创 2020-02-27 16:18:08 · 677 阅读 · 0 评论 -
VBA实战案例:处理挂科数据
Option ExplicitSub 统计() Dim t, i, count1, count2 As Long Dim w As Worksheet Set w = ActiveSheet t = Timer() '记录当前时间 count1 = 0: count2 = 0 '判断是否存在Sheet2,Sheet3 w.UsedR...原创 2020-02-11 18:26:56 · 823 阅读 · 0 评论 -
全民一起VBA实战篇第六课:VBA编程技巧及Word调用
Err 对象使用Err可以提升程序的健壮性,有利于用户使用。Option ExplicitSub errDemo() Dim i As Long i = 3 On Error GoTo sthwrong '出现问题跳转到sthwrong Do While Cells(i, 2) <> "" ...原创 2020-02-09 17:17:33 · 1078 阅读 · 0 评论 -
全民一起VBA实战篇第一课:表格格式操作与Excel功能调用
文件打印Sub 批量打印() Dim fn As String, wb As Workbook, ws As Worksheet fn = Dir("E:\EXCEL\*.xlsx") Do While fn <> "" Set wb = Workbooks.Open("E:\EXCEL\" & fn) ...原创 2020-02-08 15:58:47 · 1089 阅读 · 0 评论 -
全民一起VBA实战篇第五课:外部文件处理技巧
题目一用窗口选择/打开文件Sub get方法() Dim fname fname = Application.GetOpenFilename() '获取选择的文件名 If fname <> False Then '判断是否有选中,如果点了取消,则退出程序 '否则运行文件 MsgBox fname ...原创 2020-02-06 11:28:08 · 1054 阅读 · 0 评论 -
全民一起VBA实战篇第四课:文本内容的处理技巧
题目一按照要求设置输出格式Option ExplicitSub 单位() Dim i, s i = 1222.222223 s = Format(i, "$.###") '#代表一位数字 MsgBox s End SubOption ExplicitSub 单位() Dim i, s i = 1222.2 ...原创 2020-02-04 17:03:11 · 574 阅读 · 0 评论 -
全民一起VBA实战篇第三课:文本内容的实用技巧
题目要求:要求大家编写程序自动在F列中标记出每一个交易记录是该客户的第几次交易。比如第3行的“赵六”是第一次出现,所以F3为 1 ,而第4行的“赵六”是第二次出现,所以F4应为 2 。方法一:双重循环Option ExplicitSub demo() Dim i As Long, j As Long, s As Long Dim r As Object Set...原创 2020-02-01 21:04:16 · 517 阅读 · 0 评论 -
全民一起VBA实战篇第二课:表格数据处理的实用技巧
Find方法官方文档https://docs.microsoft.com/zh-TW/office/vba/api/excel.range.find内容可使用通配符符号含义?一个任意字符,比如?a?*任意多个任意字符,a~转义符,把通配符改为普通字符串题目一题目要求:(1) 找到第一个内容为“程序员”的单元格,并用Msgbox显示其单元格地...原创 2020-01-28 20:25:45 · 754 阅读 · 0 评论 -
全民一起VBA基础篇第十一课:基础篇小结
程序设计变量常量字符串循环判断过程字符串&UcaseLcaseTrim()Len()Instr()Left()Right()Mid()循环分为For … NextDo While … LoopFor Each In …Next判断分为If Then…Elseif…Else… End IFAnd,Or,Not过程...原创 2020-01-20 21:54:50 · 316 阅读 · 0 评论 -
全民一起VBA提高篇第十四课:提高篇小结
提高篇主要学习了以下几个方面的知识基础原理与知识office功能扩展实用工具与技巧基础原理与知识数据类型全部数据类型VariantInteger %Long&Double#Currency@String$DateBooleanObjectSingle特殊值NothingNullEmpty类型转换自动类型转换...原创 2020-01-20 21:43:43 · 511 阅读 · 0 评论 -
全民一起VBA提高篇第十三课:简单爬虫
目标要求:爬取中国银行最新的汇率爬取关键获取网页字符串并保存到VBA变量中使用正则表达式等方法处理字符串首先进入网址https://www.boc.cn/sourcedb/whpj/打开源网页找到需要的这一部分需要通过正则表达式除去标签部分Option ExplicitSub demo() Dim t t = Timer() Dim s...原创 2020-01-20 20:45:33 · 1953 阅读 · 0 评论 -
全民一起VBA提高篇第十二课:调用WORD
VBA操作word标记数字要求:将word 文档中的所有数字标记出来Sub 修改word的所有数字()t = Timer() Dim i As Long, c As Range, d As Document '遍历该段落中全部字符 For i = 1 To Application.ActiveDocument.Characters.Count ...原创 2020-01-20 17:25:09 · 1059 阅读 · 0 评论 -
全民一起VBA提高篇第十一课:Do循环和空值
Do循环Do While i<10 … Loop当i小于10时,执行循环Do Until i<10 … Loop直到i小于10时,停止循环Do While cells(i,1)<>""Do Until cells(i,1)=""上面是先判断再执行Do … Loop While i<5Do… Loop Until i<5下面这个是先执行...原创 2020-01-20 08:47:33 · 516 阅读 · 0 评论 -
全民一起VBA提高篇第十课:字典对象
题目要求将课程名称以及挂科人数进行汇总给出的数据是几十个班混在一起,挂科人数是每个班的人数,现在需要把他们相同的科目统计一个总人数只看这个要求,其实用数据透视表可以很快得出结果,但是任何EXCEL的处理面对要批量处理的要求后,只能靠VBA才能完美解决因此,我先用数据透视表给出结果,两者相互验算这里用VBA处理需要字典,字典相当于将扫描的关键字存入,相同的累加其条目数,不同的则新建一...原创 2020-01-19 18:32:46 · 476 阅读 · 0 评论 -
全民一起VBA提高篇第九课:正则表达式入门
正则表达式不是VBA的一部分,很多语言都需要他,包括WORD中的查找通配符,也属于正则表达式的变体测试工具:https://deerchao.cn/tools/wegester/重复结构只处理紧贴在前的一个字符,更靠前的不管同一内容连续出现 n次+ 前面的内容连续出现1次或更多次空格a+b+空格+为元字符,a和b称为文字正则表达式中的每一个字符,如果不是元字符,就会被视作文字...原创 2020-01-19 16:12:25 · 1333 阅读 · 0 评论 -
全民一起VBA提高篇第七课:图形界面设计一
基本操作从VBE中插入用户窗体改变属性通过视图调出工具箱选中命令和窗体一样,自己设置属性编辑好了窗体,双击控件,比如这里双击"添加员工记录"就可以写这段代码,在窗体中Private Sub CommandButton1_Click() Dim r As Range, i As Long Set r = Worksheets(1).UsedRan...原创 2020-01-17 10:17:49 · 3288 阅读 · 0 评论 -
全民一起VBA提高篇第八课:图形界面设计二
功能要求:能通过窗体显示数据能通过窗体添加数据能通过窗体修改数据能通过窗体删除信息图片演示效果显示数据添加数据修改数据删除数据代码实现窗体设置,拖动各个控件,并把对应的caption以及名称修改以便后用界面中首先添加控件Sub 显示列表框3()UserForm3.ShowEnd Sub初始化Private Sub UserForm_Initia...原创 2020-01-16 12:11:58 · 1572 阅读 · 0 评论 -
全民一起VBA提高篇第五课:深入理解函数
可选参数Option ExplicitFunction myproduct(r As Range, Optional usecolumn As Boolean)Dim i&, j&, s&, k&s = 0'usedcolumn为true,按列求积,否则按行求积,参数可选,默认为FalseIf usecolumn Then'逐列扫描,将每行个单元格相乘...原创 2020-01-15 16:06:21 · 275 阅读 · 0 评论 -
全民一起VBA提高篇第六课:事件编程
事件编程事件编程要写在事件的发生地,放在事件编码中Private Sub Workbook_Open()'对应子过程名写好Dim i As IntegerRandomizei = Rnd()'如果随机数i在0到0.5之间,则随机生成一个1到3之间的中奖号码If i < 0.5 Then Range("c7").Value = Int(Rnd() * 3)...原创 2020-01-15 16:06:37 · 641 阅读 · 0 评论 -
全民一起VBA提高篇第四课:深入理解单元格
range相关range.row:返回range左上角单元格的行号range.column:返回列号range.address:返回各个对角顶点的绝对引用地址Sub rangedemo()Dim r As RangeSet r = Range("B3:D9")r.Select'让上面的单元格被选中MsgBox r.Row & "行" & r.Column &...原创 2020-01-15 16:05:57 · 631 阅读 · 0 评论 -
全民一起VBA提高篇第三课:字符串与文件
大写小写汉字转换Sub Exercise1() Dim i As Integer, j As Integer, k As String, s As String Dim cn(10) As String cn(0) = "零": cn(1) = "壹": cn(2) = "贰": cn(3) = "叁": cn(4) = "肆" cn...原创 2020-01-15 16:05:32 · 519 阅读 · 0 评论 -
全民一起VBA提高篇第二课:基本数据类型详解二
常规情况Option ExplicitSub 被观音带走()Dim i As LongDim found As Booleanfound = Falsei = 3Do While Not found And Cells(i, 2) <> "" 'found为真且单元格非空,则继续循环 If InStr(Cells(i, 6), "观音") > 0 The...原创 2020-01-15 16:05:03 · 397 阅读 · 3 评论 -
全民一起VBA提高篇第一课:基本数据类型详解一
变体性能测试Option ExplicitSub test() Dim startTime startTime = Time() '请将i/j/a三个变量全部设置为变体并运行本程序,记下时间; '然后再将三者都设置为Integer并运行,再记下时间,并与前者比较。 'Dim i, j, a Dim i As Integer, j A...原创 2020-01-15 16:04:35 · 610 阅读 · 0 评论 -
全民一起VBA基础篇第十课:工作簿、单元格
打开不同的EXCEL文件并汇总Option ExplicitSub 季度汇总() Dim i, j, k, fileName, wkPath Dim w As Worksheet, r As Worksheet, wb As Workbook '首先,让 r 代表当前工作簿(“季报.xlsm”)的汇总表 Set r = ActiveWork...原创 2020-01-15 16:03:58 · 431 阅读 · 0 评论 -
全民一起VBA基础篇第九课:文本处理与复杂单元表汇总
字符串函数trim函数示例Sub 高亮清朝()Dim aDim ii = 2Do While Cells(i, 1) <> ""a = Trim(Cells(i, 1)) '去掉左右两端的空格,但并不改变cells本身 If Left(a, 4) = "爱新觉罗" Then '选中前四位为爱新觉罗的标记为红色 With Cells(i, 1...原创 2020-01-15 16:03:42 · 308 阅读 · 0 评论 -
全民一起VBA基础篇第八课:过程与函数
过程可以通过call来调用子程序,达到结构清晰,功能明确的作用Option ExplicitSub 汇总和登记()Call 汇总Call 登记End SubSub 我只需要汇总()Dim i, j, total '定义循环变量和累加器Dim wperson As Worksheet '定义wperson为工作表Dim wall As Workshe...原创 2020-01-15 16:03:27 · 368 阅读 · 0 评论 -
全民一起VBA基础篇第七课:面向对象基本原理与工作表对象
常用对象Application代表正在运行的EXCEL系统本身Workbook代表一个打开的EXCEL文件(工作簿)WorkSheet代表一张工作表Range代表一个或若干单元格组成的内容区域类:对象的分类,同类对象特征相同对象:系统中每一个具体的事物属性:是什么样子方法:能做什么用来跨表计算每个表的总分Option ExplicitSub 统计()Dim i, j,...原创 2020-01-15 16:03:14 · 412 阅读 · 0 评论 -
全民一起VBA基础篇第六课:While语句和多重循环
while语句while cells(i,2) <> “”可用来检查内容是否为空,来标记是否到尾巴了Sub highlightquick()Dim i As Integeri = 2While Cells(i, 2) <> "" '判断是否为空 If Cells(i, 2) > 500 Then '判断单元格的数值 Cel...原创 2020-01-15 16:02:59 · 2044 阅读 · 0 评论 -
全民一起VBA基础篇第五课:字符串,逻辑运算,调试
调试设置断点单击语句左侧,得到一个红色的点单步调试按F8进入调试添加监视调试->添加监视调试完后去掉所有断点调试->清除所有断点字符串与或非的表示是 And Or Not 注意区分没有括号,先not, and 后orif age<30 and field = “数学” or field=“物理” then左右两边都要完整if cells(1,1)...原创 2020-01-15 16:02:47 · 418 阅读 · 0 评论 -
全民一起VBA基础篇第四课:基本流程控制语句
for语句Sub toRMB() Dim rate, i If Cells(7, 6) = "USD" Then '做一个简单的if判断 rate = Cells(8, 6) For i = 11 To 20 Step 1 '步长为1可省略,若是20 to 11,则step -1...原创 2020-01-15 16:02:35 · 391 阅读 · 0 评论 -
全民一起VBA基础篇第三课:变量与常量
变量Sub 加法变量()i = Cells(2, 2)Cells(i, 9) = Cells(i, 5) + Cells(i, 7) '利用变量来控制End Sub计算半径,面积和体积Sub 求面积和体积()Radius = Cells(4, 3)r = RadiusSquare = 4 * r * r * 3Cells(4, 4) = Squarevolume = 4 ...原创 2020-01-15 16:02:17 · 485 阅读 · 0 评论 -
全民一起VBA基础篇第二课:读写单元格
开发工具->插入插入表单控件中的窗体拖动生成一个新的控件,自命名后指定宏,新建在代码区输入这段代码:Sub 这是用来测试()Cells(7, 6) = "+" '双引号引用字符,在excel表里面则用单引号Cells(7, 9) = Cells(7, 5) + Cells(7, 7) '先行后列,用cells(X.Y)来表示单元格,单引号...原创 2020-01-15 16:02:14 · 433 阅读 · 0 评论 -
全民一起VBA基础篇第一课:开发环境配置
学习VBA的一些准备工作调出开发工具1.打开EXCEL,点击文件->选项2.点击自定义功能区->开发工具3.开发工具->宏安全性->启用所有宏4.初步了解VBE(1)模块里面放标准代码,在工作表中用按钮激活的(2)事件编程代码放在对象栏中,用于当事件触发时,自动运行的程序。(3)类模块代码放内代码(4)窗体里面放窗体程序代码如果没有,则在工程模块中...原创 2020-01-15 16:01:59 · 729 阅读 · 0 评论 -
锦到说VBA——选中所有优秀科目并汇总到同一工作簿下的另一个工作表
锦到说VBA——选中所有优秀科目并汇总到同一工作簿下的另一个工作表问题:选中一个专业的同学前五个学期,所有优秀科目(得分>=90),并把选中的信息汇总到另一个EXCEL工作簿中问题分析:观察成绩表的布局可以看出,要统计优秀科目,即是判断总评成绩是否>=90或者是否为"优秀"要求汇总到另一个工作表,那么可以命名当前工作表为"全班成绩",命名一个新工作表为"汇总"。(当然这里的新...原创 2019-04-02 22:05:55 · 568 阅读 · 0 评论 -
锦到说VBA——汇总一个文件夹下面的所有文件到EXCEL中
锦到说VBA——汇总一个文件夹下面的所有文件到EXCEL中问题描述:一个文件夹下有多个文件,需要批量合并其中的内容到同一个EXCEL中。演示效果:代码:Sub 汇总文件夹下的所有TXT文件()t = TimerDim i As LongDim f As String '定义f读取一个文件夹下所有文件的文件名信息Dim full As ...原创 2019-04-05 09:35:20 · 3086 阅读 · 0 评论 -
锦到说VBA——批量新建以某一字段为标题的EXCEL文件/文件夹/工作簿
锦到说VBA——批量新建以某一字段为标题的EXCEL文件/文件夹/工作簿问题一:批量生成以某一字段为标题的EXCEL文件例如:以第一行各学科为名,批量生成制定的EXCEL文件,文件里面不需要填任何东西演示效果如下:代码如下Sub 批量生成XLSX文件()Dim wb As Workbook '定义wb为wo...原创 2019-04-04 20:35:25 · 1273 阅读 · 0 评论