它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
querySelector和querySelectorAll的用法和getElementBy大致一样,获取的时候带上符号,getElementBy获取的是元素的动态集合,querySelector获取的是元素的静态集合...但是需要注意:getElementBy系列和querySelector系列的区别 比如,我们写一个for循环,每次获取li标签的时候,ul生成一个li子元素 id="ul"> a...进行修改:把i < li.length改成i < 3,把li标签数组静态化,然后打印 conosle.log(li.length) // 6 重新用querySelector获取一遍元素 id
前面说过了文件的读取、写入,那么在操作文件之前,一般我们需要找到操作的文件的路径,VBA对象库中,有一个FileSystem的模块,里面有关于文件操作的一些函数: ?...如果我们要读取一个未打开的Excel文件的数据,我们知道使用Workbooks.Open,如果我们打开的是一个并不存在的文件,将会出现错误: ?...TestDir() Dim FileName As String FileName = ThisWorkbook.Path & "\1.xlsx" If VBA.Dir...VBA.Dir(FileName)在FileName这个文件不存在的情况下,会返回空字符串,文件存在的情况下会返回文件的名称,所以我们可以根据它的返回值来判断文件是否存在。...'*代表查找所有的文件以及文件夹,也可以使用"*.xlsx"这样的形式查找后缀为.xlsx的文件 '第一次调用返回第1个符合条件的,没有的情况下会返回空字符串 fn = VBA.Dir
例如,下面使用VBA来自动登录公司数据库的代码: '作用:使用Excel VBA登录到公司数据库Sub DatabaseLogin() Dim ID_List As Variant Dim...For x = LBound(ID_List) To UBound(ID_List) If Environ("USERNAME") =ID_List(x) Then...Username_List(x) Password = Username_List(x) Exit For End If Next x '未识别用户...thespreadsheetguru.com展示了一种简单的方法,能够在运行时将用户名和密码带入VBA,而不会在VBA代码或Excel工作表中暴露这些敏感信息。...这样,VBA代码将从这个文本文件中提取信息并进行处理,下面是完整的代码: '作用:通过Excel VBA和文本文件来登录公司数据库Sub DatabaseLogin() Dim Username
下面这篇文章从宏的声明到错误处理,详尽解读代码的目的与实现细节,帮助你深入理解 VBA 在 Word 自动化中的应用。...宏的声明与结束 变量声明与初始化 API 密钥与文本选择检查 保存原始选区 文本预处理 调用自定义 API 函数 正则表达式提取内容 插入结果与光标恢复 错误处理与用户提示 宏的声明与结束在 VBA...中,使用 Sub…End Sub 来定义一个不返回值的过程,这种过程执行一系列操作但不会作为表达式的一部分返回值 citeturn0search0。...变量声明与初始化使用 Dim 关键字声明局部变量,每个变量后需指定数据类型,以便 VBA 在编译时进行类型检查 citeturn0search10。...Exit Sub否则,需要检查当前 Selection 对象的类型,确保用户已选中文本;若未选中文本(类型非 wdSelectionNormal),则提示并退出 citeturn3search1turn3search0
上篇文章(见文末的延伸阅读)通过VBA代码,采用ExportAsFixedFormat函数将excel文件转化为pdf文件,对于部分excel文件的转化效果不太好,有些谱图显示不完整,如下图所示。...因此,下面以批量转化Excel文件为例,采用VBA编程,借助PrintOut函数,进行任务的实现。...Then t = .SelectedItems(1) Else MsgBox "未选取文件夹...dis_k=6dfbb616ed245b6194e5e38e49636a47&dis_t=1663655784&vid=wxv_1981767069717135363&format_id=10002&support_redirect.../questions/43437576/converting-a-worksheet-to-pdf-using-vba-printout-method) 延伸阅读: [1] VBA: Excel文件批量转化为
3、在vba中,Sub过程可以作为独立的基本语句调用,而Function函数通常作为表达式的一部分。...如果函数结构中没有函数名=表达式1的语句,则该函数使用时会返回一个默认值,数值函数返回值为0,字符串函数返回值为空字符串。...然后声明返回值为As integer整型变量。 然后函数过程中表达式要书写成函数名称jisuan=i+1,即提供的变量i加上1之后的值作为返回值。...2、在VBA代码中调用函数 在vba中,function函数过程无法像Sub过程那样按F5来调试运行。运行函数过程,需要从另一个函数过程中来调用该函数。...function函数过程的调用比较简单,就像使用vba内部函数一样来调用function函数过程。只不过内部函数是有vba系统提供的。而function函数是由用户自定义的。
如果你收到过一些这样的Excel文件,文件里有VBA代码,实现了很好的功能,可是作者却对VBA工程进行了加密,你可能会非常希望查看到里面的VBA代码。...会想到的最直接的办法当然就是要到密码,可这个一般做不到,这个时候有什么办法能够查看VBA代码呢? 前面介绍的提取模块代码可以做到,这里再介绍一种直接清除密码的功能。...VBAProject工程里面,一定会有个数据流PROJECT,这个文件提取后,得到的内容大致如下: ID="{7A581A9B-0F9A-480B-8C0A-1C59D52CAB04}" Document...所以,知道了这样能够清除密码,我们要做的只是改写一个复合文档的数据流就可以了: '清除vba工程密码 '清除CMG=" | DPB=" | GC=" '清除VBA工程密码 'Return 返回出错信息...Hook = False 'VBE6.dll调用DialogBoxParamA显示VB6INTL.dll资源中的第4070号对话框(就是输入密码的窗口) '若DialogBoxParamA返回值非
1、遍历文件 我们在VBA中遍历获取所有文件的方法一般是使用下面3种: 调用Dir函数 使用FileSystemObject 使用cmd命令 Dir方法是VBA里封装好了的,但是对于判段是否是文件夹并没有很好的方法...不过这个方法其实和Windows API的使用方法很相近,只是他的返回值太单一了一点: Sub TestVBADir() VBADirR "path\" End Sub Function VBADirR...这2种方法我在VBA汇总多个Excel文件数据里使用过。 这些方法的底层应该都是调用了Windows API来实现,让我们看看如何直接使用Windows API来实现遍历文件。...(str, VBA.Chr(0)) If index Then GetFileName = VBA.Left$(str, index - 1) Else...GetFileName = str End If End Function 3、小结 使用API来实现遍历文件功能可以增强我们的灵活性,因为返回值WIN32_FIND_DATA里面记录了较多信息
产品编号 (Product ID): 销售产品的唯一标识符。 产品名称 (Product Name): 销售产品的名称。 类别 (Category): 产品所属的类别,如“电子产品”、“家具”等。...按下Alt + F11以打开VBA编辑器。 在VBA编辑器中,点击插入 > 模块,在打开的模块窗口中粘贴下面的代码。 按下F5运行代码,或者关闭VBA编辑器回到Excel,通过宏来运行这个脚本。...复选框的选中状态将反映在对应的单元格中(选中时为TRUE,未选中时为FALSE)。 请注意,运行VBA脚本和使用宏可能会受到Excel安全设置的限制。...5.自动显示选中及未选中记录数量 提示词:计算选中的和未选中的记录数量,请用Excel公式表示。...计算未选中(FALSE)的复选框数量 =COUNTIF(A1:A6, FALSE) 这个公式计算A1到A6区域内值为FALSE的单元格数量,即未选中的复选框数量。
几乎所有需要全局变量或公共变量的情况都可以使用过程参数和函数返回值进行处理。 必要时,请确保对数字变量使用浮点数据类型。在某些情况下使用整数类型可能会导致舍入错误和bugs。...VBA的调试工具旨在跟踪这两种bugs的原因。 断点 在VBA编辑器中,可以在任何代码行上设置断点。当执行到达该行代码时,VBA进入中断模式,这使你可以执行各种调试任务(稍后将对此进行解释)。...当VBA处于中断模式时,你可以执行其他调试操作,如以下各节所述。当VBA在断点处停止时,该行以黄色突出显示。 VBA在执行包含断点的行之前停止。...只需将鼠标指针停留在代码中变量的名称上,VBA就会弹出一个带有当前值的小窗口。如果这还不够,VBA提供了更复杂的监视工具。 VBA可以在程序调试期间监视任何变量或表达式的值。...表达式的当前值,如果程序未执行或变量超出范围,则为 类型。表达式的数据类型(如果有) 上下文。在其中计算表达式的上下文(工程的一部分) ?
Linux version 4.4.131.D001.64.190906 (YHKYLIN-OS@Kylin) WPS版本:WPS Office 2019 WPS表格(11.8.2.10533) 习惯了VBA...在VBA里有Sub和function2种形式,在JS里只有function这一种; 在VBA里一般都是建议明确声明变量的类型,JS里是不需要的; 在VBA里函数返回值是以函数名=xx的形式,JS里使用...return; 在VBA里,如果参数是可选的,是使用Optional修饰,JS里不需要特别标注; 在VBA里可选参数判断是否传递了使用IsMissing来判断,JS是使用== undefined; 在...VBA里使用单元格对象有Range和Cells,但是国产系统的WPS JS上,Cells提示TypeError:Cells is not a function; 在VBA里单元格的值一般使用Value属性...Formula = mj() // Cells(6,1).Value2 = mj(123,0) // TypeError:Cells is not a function } If语句除语法上有不小的差别,用法和VBA
标签:VBA,自定义函数 Excel中有一个函数DEC2HEX,可以将十进制数转换成十六进制数,然而,当要转换的十进制数较大时,就会出现错误。...我们可以使用一个VBA自定义函数来解决。...DecToHex(N As Double) As String Dim Y As Double Const H = "0123456789ABCDEF" While N 0 '注意VBA...(H, Y + 1, 1) & DecToHex N = N / 16 - Y / 16 Wend End Function 此时,使用公式: =DecToHex(1111112222222) 返回值...注:这里分享的一些VBA程序或自定义函数,有些供研究或学习VBA,是很好的示例,有些或者说大部分都可以直接应用在自己的程序中,提高效率。
语法错误是VBA语法中的错误。VBA编辑器会在你编写代码时捕获并标记语法错误,因此它们永远不会影响程序执行。...image.png 图26-1:VBA通过显示此对话框来发出未处理的错误信号 你会看到错误对话框提供了错误的简要说明以及错误号。每个VBA错误都有其自己的错误编号。...文件操作是导致错误的常见原因,例如,当程序尝试写入已满的磁盘或未插入任何介质时尝试写入可移动介质驱动器时。良好的编程习惯可以帮助防止由代码引起的错误,但是某些错误显然是程序员无法控制的。...在VBA程序中,过程通常会调用其他过程。如果一个过程未启用错误捕获,则在执行过程中发生的任何错误将传递给调用它的过程。...程序可以调用此函数并测试其返回值。如果此值为Nothing,则程序可以采取步骤打开工作簿。
", , "打开", , True) '选择文件 If TypeName(selectfiles) = "Boolean" Then '若未选择则结束程序运行 Exit Sub End If 关闭功能...UTF-8" '设定编码 .Position = 2 ReadUTF = .ReadText '读取文本 .Close '关闭 End With End Function 'VBA...函数与过程简洁教程 Sub 过程名() 'Sub表示过程,在执行宏或图形右击指定宏中看得到,不能返回值 Call 函数名(Array(1, 2), b) '调用过程并把返回值放入r End Sub '结束过程...Function 函数名(a, Optional ByVal b) 'Function表示函数,在单元格中也可以使用,宏列表看不到,可以使宏列表简洁 'VBA默认ByRef会改变原参数的值,所以加了...= 1 '为加了Optional的可选择性省略参数设定值 ReDim arr(UBound(a)) '定义可变数组,UBound()是求最大下标值 arr(1) = b 函数名 = arr '返回值
很多学习VBA的应该都是在使用了一段时间的Excel之后,想弥补一些Excel本身的不足、或者是实现一些自动化操作。...函数是Excel里非常重要的一个功能,所以,我们结合Excel的函数,用VBA去实现一些常用的函数功能。...VBA里的参数修饰符Optional,和这个是同样的意思,可以省略的参数,如果省略了,就是用默认的值,在我们的定义里,默认等于0. 返回值:Variant,可以返回任意数据类型的值。...", ret End Sub 输出: MyVlookup返回值 72848 Excel Vlookup返回值 72848 一切正常,其中我们还调用了Excel...但是VBA没有提供判断数组维度的函数,一般这时候我们都是用错误捕捉的方式,这里就不演示了。有兴趣的可以自己网上查一查方法。
'VBA函数与过程简洁教程 Sub 过程名() 'Sub表示过程,在执行宏或图形右击指定宏中看得到,不能返回值 Call 函数名(Array(1, 2), b) '调用过程并把返回值放入r End Sub...'结束过程 Function 函数名(a, Optional ByVal b) 'Function表示函数,在单元格中也可以使用,宏列表看不到,可以使宏列表简洁 'VBA默认ByRef会改变原参数的值...上面的语句是如果没有时设定值,常用设定可选来灵活调试,如果有一个非可选就不能直接运行 ReDim arr(UBound(a)) '定义可变数组,UBound()是求最大下标值 arr(1) = b 函数名 = arr '返回值
不过需要注意的是,类模块不能隐藏,另外还必需要有一个可见的模块,实现代码: '隐藏某个模块:在VBA工程窗口无法查看 'ModuleName 模块的名称 'Return 返回出错信息 Function...(b, vbUnicode) If VBA.InStr(strSrc, "Module=" & ModuleName & vbNewLine) = 0 Then HideModule...(strSrc, "Module=" & ModuleName & vbNewLine, "") b = VBA.StrConv(strSrc, vbFromUnicode)...ret = cf.ReWriteStream(PrePath & "PROJECT", b) If VBA.Len(ret) Then HideModule = ret...= "CVBAProject: 模块[" & ModuleName & "]未隐藏" Exit Function End If 'HelpFile="" 在这个前面添加
可以设置开关(这里使用称为“RefreshSlow”的已定义名称)并在VBA过程中刷新用户定义函数,如下所示: Sub RefreshUDFs() Dim lCalcMode As Long...Application.Caller.ID 可以使用Range.ID属性在用户定义函数中存储和检索字符串值。...End If End Function 这种方法很有效,但Range.ID属性未存储在“已保存”工作簿中,因此下次打开工作簿时,检索到的值将为“空白/零”。...(命令等效函数默认为易失性,但在使用它将前一个值传递给VBA用户定义函数时,通常希望它是非易失性的)。此函数也适用于多单元格数组公式。...小结 有几种方法可以从VBA用户定义函数的最后一次计算中获取先前的值,但最好的解决方案需要使用C++ XLL。
在传统的VBA开发中,若是用的是普通加载项方法,是可以存储数据在xlam上的,若用的是Com加载项方法同时是Addins程序级别的项目开发的,配置文件没法保存到工作薄中,一般另外用配置文件来存放供调用。...这种方式有一缺点是,在用户工作薄里进行数据操作,用户很容易破坏到这些数据,就算深度隐藏工作表,仍然会轻松地用VBA方法重新将其显示出来,特别对一些敏感配置信息的保存非常不利。...且此对象不止于在VSTO内使用,在VBA上也同样有此对象可供计用。...CustomXMLPart对象模型 虽然有此对象,但其要求的数据类型是xml,在VBA环境里操作xml将是个非常痛苦的事情,但在VSTO上操作,简直不能再简单的事情。..., caption: "未保存内容确认", buttons: MessageBoxButtons.YesNo) == DialogResult.Yes