对于可预见的错误,编写特定的代码来处理它们。对于不可预见的意外错误,则使用VBA错误处理语句来处理。 在VBA中,On Error语句用于错误处理。当代码运行时发生错误时,该语句将执行相应操作。...在下面的代码中,我们没有使用任何On Error语句,因此VBA默认情况下将使用On Error GoTo 0操作。...如下面的代码所示: Sub TwoErrors() On Error GoTo errH '产生"类型不匹配"错误 Error (13) Done: Exit Sub errH...图6 而在标签语句内添加的错误处理因前面的错误尚未清除而不会起作用,如下面的代码: Sub TwoErrors() On Error GoTo errH '产生"类型不匹配"错误...在下面的代码中,我们添加了该语句,这样第二个错误会导致代码跳至errH_Two标签处: Sub TwoErrors() On Error GoTo errH '产生"类型不匹配"错误
如果返回简单类型,那么可以 使用任何表达式,同时表达式的类型也将被自动转换成函数的返回类型,就像我们在赋值中描述的那 样。如果要返回一个复合类型的数值,则必须让表达式返回记录或者匹配的行变量。...LOOP LOOP定义一个无条件的循环,直到由EXIT或者RETURN语句终止。可选的label可以由EXIT和 CONTINUE语句使用,用于在嵌套循环中声明应该应用于哪一层循环。 2)....循环,在该循环中可以遍历命令的结果并操作相应的数据,见如下示例: PL/pgSQL还提供了另外一种遍历命令结果的方式,和上面的方式相比,唯一的差别是该方式将SELECT 语句存于字符串文本中,然后再交由...异常捕获: 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回 滚。我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复。...,只有BEGIN块中的statements会被正常执行,然而一旦这些语句中有任意一条发生 错误,其后的语句都将被跳过,直接跳转到EXCEPTION块的开始处。
当代码与此应用程序的版本或体系结构不兼容(例如文档中的代码面向 32 位 Microsoft Office 应用程序,但它试图在 64 位 Office 上运行)时,通常会发生此错误。...1 此错误的原因和解决方案 此错误的原因: 当受保护(隐藏)的模块内的 VBA 代码中存在编译错误时会引发此错误。由于模块是受保护状态,因此不会公开具体的编译错误。...2 更新旧版本的VBA代码 对于在 Office 2010 版本之前(VBA 版本 6 和更早版本)编写的 VBA 代码,需要修改为在 64 位 Office 版本中运行,否则在 64 位平台上运行时会导致错误...此外,还必须更新任何包含指针或句柄以及 64 位整数的用户定义类型 (UDT),使之使用 64 位数据类型,同时,必须验证所有变量赋值是否正确,以防止发生类型不匹配错误。...3 VBA工程密码破解 当受保护(隐藏)的模块内的 VBA 代码中存在编译错误时,由于模块是受保护状态,因此不会公开具体的编译错误。此时,需要取消对该模块的保护。
贾言 代码评审歪诗 窗外风雪再大 也有我陪伴着你 全文字数:2000字 阅读时间:5分钟 贾言 代码评审歪诗 验幻空越重 命循频异长 依轮线日简 接偶正分壮 架构师说, 用20个字描述代码评审的内容...循-勋 不要在循环中调用服务,不要在循环中做数据库等跨网络操作; 频-品 写每一个方法时都要知道这个方法的调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高的一定要考虑性能指标,考虑是否会打垮数据库...方法中做了两层的try...catch, 在catch块中记录日志后什么都没做, 这样用户看不到真正想要的内容, 研发也只有看日志才能发现错误, 而“看日志”, 通常只有业务方反馈问题时才会看, 就会导致研发人员发现错误会比现场人员还会晚...接-洁 接口是用来隔离变化的,如果一个业务有几种不同的形态,但都有相同的处理,那么可以定义接口来隔离业务形态的不同,在服务调用处,通过业务类型字段来获得不同的服务类。...而不要实现一个类,然后在类的各个方法中都根据业务类型做if else或更复杂的各种判断。 典型示例做法1: ? 典型示例做法2: ?
有朋友私信问我:猴子,我的那个「宏按钮」实在是太丑了,我看你设置的就挺好看,应该如何设置呢? 我觉得这位同学很有眼光,既然你已经发现了我的审美,那么也不隐藏了,都分享给你们了。...所谓「断点」就是当VBA遇到手动设置的「断点」,运行中的程序将会自动停止,并「批黄断点处代码」,等待下一步执行指令。...在VBA编辑器中,依次点选「调试」-「逐语句」,当然最高效的方法是使用快捷键「F8」 image.png (4)鼠标悬停变量处,自动显示当前变量的值 在代码过程中,我们将鼠标悬停在变量上,VBA编辑器将自动提示当前变量的取值...(4)「添加监控」让VBA调试更贴心 我们在VBA选项卡依次点选「调试」-「添加监控」 image.png 在弹出的「添加监控」的表达式填写需要监视的内容即可,然后点击右侧「确定」按钮,比如:本案例中需要监控...比如监控的是什么,当前监控内容的值;监控内容的类型,相关内容大家在实操后,自行探索查看即可 image.png (5)综合利用上述调试功能,快速查找代码出错原因 当我们将上述代码一行行执行,在「i
有朋友私信问我:猴子,我的那个「宏按钮」实在是太丑了,我看你设置的就挺好看,应该如何设置呢? 我觉得这位同学很有眼光,既然你已经发现了我的审美,那么也不隐藏了,都分享给你们了。...所谓「断点」就是当VBA遇到手动设置的「断点」,运行中的程序将会自动停止,并「批黄断点处代码」,等待下一步执行指令。...在VBA编辑器中,依次点选「调试」-「逐语句」,当然最高效的方法是使用快捷键「F8」 (4)鼠标悬停变量处,自动显示当前变量的值 在代码过程中,我们将鼠标悬停在变量上,VBA编辑器将自动提示当前变量的取值...(4)「添加监控」让VBA调试更贴心 我们在VBA选项卡依次点选「调试」-「添加监控」 在弹出的「添加监控」的表达式填写需要监视的内容即可,然后点击右侧「确定」按钮,比如:本案例中需要监控「变量i」的值变化...比如监控的是什么,当前监控内容的值;监控内容的类型,相关内容大家在实操后,自行探索查看即可 (5)综合利用上述调试功能,快速查找代码出错原因 当我们将上述代码一行行执行,在「i = 9」发现,根据分类方法
然后在一连串的工作表中来回跳转会异常头痛,所以必然想做一个目录索引以方便跳转,就如同Word里的目录索引一样。 那么你有没有为了生成Excel的目录而痛苦?...在目录工作表的第一个单元格A1中定义表头:Table of Content Range("A1") = "Table of Content" for循环里i和j的含义:在目录工作表中A列的第j个单元格中生成第...使其显示: 可能会遇到的问题。...一个是目录工作表后移导致目录混乱,所以要严格控制For循环中i和j的关系,并且保证目录工作表的位置不变: 第二个可能遇到的问题是再次打开Excel后VBA不工作的问题,主要原因是宏被禁止了。...方案一是打开消息提示窗口,然后在每次打开excel的时候就会有安全问题的提示,直接允许即可: 方案二就是直接允许运行VBA的宏,一劳永逸,但是会有安全方面的风险,比如我司就直接不允许修改宏配置:
然后用普通的文本编辑器(我用的是NotePad++)打开这个文件,注意文件类型选“所有文件”。 ? 然后在文件里查找“DPB",把它改成“DPx”。注意大小写。(这个是重点) ? 保存修改。...你会遇到一些错误,忽略它们。 ? 然后进入Excel的“开发工具”面板,选择“Visual Basic”。又会有一系列错误,忽略它们,直到VBA项目打开。 ? 这时候你已经可以查看VBA代码了。...如果想改变甚至去除原来的密码,继续看。 从VBA编辑器的“工具”菜单,选择“VBA工程属性...“,然后转到”保护“面板。 ? 在密码框中输入新密码。...保存VBA文件和Excel文件,关闭Excel。 重新启动Excel并重新打开这个文件,然后进入"开发工具"->"Visual Basic",会提示输入密码。输入你新设置的密码。 ?...然后回到VBA编辑器的“工具”->"VBA工程属性"->“保护”,去掉密码以及保护选项前面的标记 ? 最后大功告成,也不用什么其他的软件。 ?
在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言。风靡的另一个原因是,Python有非常多的第三方库。...而微软也正在考虑将 Python 作为 Excel 的一种官方脚本语言,由于 Python 的适用性,使其不仅可以实现VBA的功能,也可以代替场函数。...函数和方法是实现数据增删改查的基本途径,如果你在实际操作中遇到数据操作的问题,可以在具体的数据类型下查找相关用法。...流程控制则相对要好掌握一些,条件语句和循坏语句在不同的场景下练习几遍,知道判断和循环实现的过程,基本上就没问题了。...对于不同的库,内部的方法、函数你还需要去熟悉,开始的时候先掌握少部分最常用的方法,在遇到实际的问题的时候,再去查对应的更多的用法,这样会更高效。
case判断 在Linux系统的Shell中,case 是一种用于多分支条件判断的控制结构。它可以根据给定的值匹配多个模式,并执行相应的代码块。..." ;; esac 在上述示例中,根据文件名的扩展名进行匹配,输出文件的类型。...在每次循环中,变量 item 会依次被赋值为列表中的每一项,并执行循环体内的代码。...在每次循环中,变量 item 会被赋值为输出中的每一行,并执行循环体内的代码。...在每次循环中,循环变量会被赋值为当前的数字,并执行循环体内的代码。
最近,碰到好多个在问怎么实现两列杂乱文本按“相似度”进行匹配的问题。...虽然就我的理解来看,这个定义并不是太可靠,但也许对于很多人来说,这个定义也能得到一些比较满意的匹配结果,所以,就搞一搞试试。...下面,我举个简单的例子以及在Power Query里的实现过程,供参考,是否是你想要的?又或者说,对于你的数据来说,相似度是怎么定义的?欢迎留言。...这两列数据比较简单,都添加到PowerQuery里,并在每个表后面增加一列相同的内容做合并查询以生成两个表的全部可能匹配项(具体操作方法可参考文章《PQ-综合实战:根据关键词确定订单最大体积重量比》,在此不赘述...》 3、分组操作及修改代码,参考文章《动态分组合并同类项内容》 4、表中某行某列的提取,参考文章《重要!
如果有就不要使用goto(我在VBA开发中就从未使用过goto语句)。...3、编译器是在浪费时间 和其它编译器不同,VBA编译器不会生成一个可以脱离Office独立执行的模块,相反,VBA编译器实际上是一个语法检查器,在真实运行之前,编译你的代码是捕捉语法错误简单有效的方法...6、认为带前缀或标签的命名约定不好 你在创建一个变量时,能通过数据类型和用途识别它是最好的,大多数VBA开发人员喜欢添加3个字符的前缀,或标签来确定数据类型,例如,用于存储姓氏的字符串数据类型可能命名为...◆ 在Access中,遇到Null时,Nz()返回一个值,而不是Null。 ◆ 如果你需要处理Null变量,请使用Var数据类型,它是唯一可以存储Null的数据类型。...8、我是唯一一个使用应用程序的人,因此我在程序中嵌入了密码 密码和用户id值永远都不应该嵌入到代码中,你可能是唯一被授权使用该应用程序的人,但这并不意味着就可以直接将密码嵌入到程序中,相反,不管是谁要使用这个程序
保存DBPath: '保存当前打开的DBPath到DBOperate.sqlite Sub rbSaveDBPath(control As IRibbonControl) If VBA.Len(...保存SQL: '保存Input中的sql到DBOperate.sqlite Sub rbSaveSQL(control As IRibbonControl) If VBA.Len(MPublic.scbInput...,这里做了一个不超过255个字符的处理,InputBox不能显示超过255个字符,报类型不匹配错误。...中删除?"...& vbNewLine & "确定从BOperate.sqlite中删除sql语句?"
在程序运行时发生的程序错误称为运行时错误,重要的是要理解运行时错误(或只是错误)与在VBA程序中可能发生的其他两类问题之间的区别: bug是程序逻辑中的缺陷,会导致程序产生不正确的结果。...当发生错误并且程序不包含处理错误的代码时,程序将停止并显示一个对话框,其中包含错误说明,如图26-1所示。通常无法从未处理的错误中恢复,这就是为什么它们如此讨厌的原因。...将这些数据类型用于对象引用(而不是使用特定的对象类型)使VBA无法提前知道对象的方法和属性是什么,从而为各种错误埋下了隐患。...提示:由于VBA过程的内容彼此独立,因此可以在多个过程中为错误处理代码使用相同的标签。...然后,针对这些潜在错误中的每一个,测试Err.Number属性。找到匹配项后,采取适合该错误的操作。
Workbooks("vba.xlsm").Worksheets.Count表示统计vba.xlsm工作簿对象的普通工作表的数量,在引用工作簿对象时,表示方法为:Workbooks("vba.xlsm"...(集合的count属性前面已经涉及。) 然后在for循环中循环索引号的数值,workboks(index索引号).name表示不同工作簿的名称。循环中在立即窗口显示工作簿的name名称。...(顺序与工作簿打开的顺序一致。) (注意三个表的后缀是不同的,所以前面说的使用名称引用工作簿时候,需要注意工作簿类型的后缀。)...workbooks工作簿集合最常见的属性count属性,用于统计集合中对象的数量。用法上面的第二个示例都已经用到。 循环中workbooks.count的数值为3,for循环从1指3。...即该工作簿当前是被激活的状态,使用activeworkbook来表示。 在workbook工作簿对象层级上为application主程序对象,在代码中可以选择性省略。
最开始在2020年的时候,我就把项目的源码开源在我的github上,截止到目前一共有30名小伙伴,对此项目点亮star,感谢你们的肯定(31是包含我自己的点赞) 很多小白在入门过程中,遇到了很多的问题...由于我个人技术水平有限,在编写文字稿的时候也比较仓促,肯定有不对的地方,有异议或者错误的可以直接联系我微信号【mlscoder】,虚心接受学习以及批评指正。...其次Python是一个弱类型的语言。比如 a=1 #这是数值类型 a="1" #这是字符串类型 在Java中这样写,会直接报错的,因为Java是一个强类型的语言,不声明变量的数据类型是无法使用的。...2.丰富的第三方库 在选择一个语言的时候,其实就是选择一个生态,换句话说,当你遇到一个问题的时候,把你问题放在百度上搜一下,如果有前辈已经把相关的功能做好了,你只需要Copy下,安装下依赖包,就可以完成你的需求就可以了...环境搭建 在本教程的第二章中,我给了一个参考性质的环境搭建范例,供使用和参考。
最开始在2020年的时候,我就把项目的源码开源在我的github上,截止到目前一共有30名小伙伴,对此项目点亮star,感谢你们的肯定(31是包含我自己的点赞) 很多小白在入门过程中,遇到了很多的问题...正好自己也可以在回顾下,之前书写的时候比较匆忙,难免可能有错误,重新发布的时候我再check一篇。...当然由于我个人技术水平有限,在编写文字稿的时候,肯定有不对的地方,有异议或者错误的可以直接提出,我都虚心接受学习以及批评指正。...其次Python是一个弱类型的语言。比如 a=1 #这是数值类型 a="1" #这是字符串类型 在Java中这样写,会直接报错的,因为Java是一个强类型的语言,不声明变量的数据类型是无法使用的。...环境搭建 在本教程的第二章中,我给了一个参考性质的环境搭建范例,供使用和参考。
在此之前在和讯网负责股票基金行情系统的研发工作,具备高并发、高可用互联网应用研发经验。 贾言验幻空越重, 命循频异长。 依轮线日简, 接偶正分壮。言欢空月虫, 明勋品宜昌。...- 明勋品宜昌 命: 包 / 类 / 方法 / 字段 / 变量 / 常量的命名要遵循规范,要名副其实, 这不但可以增加可读性,还可以在起名的过程中引导我们思考方法 / 变量 / 类的职责是否合适...循: 不要在循环中调用服务,不要在循环中做数据库等跨网络操作 频: 写每一个方法时都要知道这个方法的调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高的一定要考虑性能指标,...controller方法中做了两层的try...catch, 在catch块中记录日志后什么都没做, 这样用户看不到真正想要的内容, 研发也只有看日志才能发现错误, 而“看日志”, 通常只有业务方反馈问题时才会看...而不要实现一个类,然后在类的各个方法中都根据业务类型做 if else 或更复杂的各种判断。
用大白话说,强制申明就是:在一段程序中,我们明确告诉VBA将要使用哪些变量,如果遇到其他没有说的变量,VBA直接报错提醒。 上面的大白话仍然不是很好理解,我们看个例子。...「Dim x, h」表示——告诉VBA接下来的程序我只使用变量x和变量h,遇到没见过的,你就警告窗报错提醒我,并用蓝色批注显示它的位置,方便我修改。...所以,结合这个特点,在VBA里使用「强制申明」,主要由以下3个主要优点(小本本记下来,我们下期考): (1)正确使用「强制申明」能够帮助我们快速定位错误代码,发现错误; (2)正确使用「强制申明」能够提升程序的运行效率...但是,我们在日常工作中,经常出现修改这些固定变量的值,可是代码中多处引用的这个固定值,我要一个个去修改吗?...1个常量k; (2)常量k在定义后被赋值,下文如果重新赋值,请警告窗+批蓝色告诉我 image.png [备注] 1.VBA中定义一个「常量」需要使用关键字「Const」; 2.
因为清晰易读的风格,广泛的适用性,Python已经成为最受欢迎的编程语言之一。在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言。 风靡的另一个原因是,Python有非常多的第三方库。...而微软也正在考虑将 Python 作为 Excel 的一种官方脚本语言,由于 Python 的适用性,使其不仅可以实现VBA的功能,也可以代替场函数。...函数和方法是实现数据增删改查的基本途径,如果你在实际操作中遇到数据操作的问题,可以在具体的数据类型下查找相关用法。...流程控制则相对要好掌握一些,条件语句和循坏语句在不同的场景下练习几遍,知道判断和循环实现的过程,基本上就没问题了。...对于不同的库,内部的方法、函数你还需要去熟悉,开始的时候先掌握少部分最常用的方法,在遇到实际的问题的时候,再去查对应的更多的用法,这样会更高效。
领取专属 10元无门槛券
手把手带您无忧上云