Sub test()
Dim regexp As Object
Dim sr
Dim collections As Object
Dim submat
Dim m
sr = "5月2号销售量15,销售金额30,5月3号销售量20,销售金额40;"
Set regexp = CreateObject("vbscript.regexp")
With regexp
.Global = True
.Pattern = "销售量(\d+).+?销售金额(\d+)"
If .test(sr) Then '如果能匹配到再输入
Set collections = .Execute(sr)
For Each m In collections
Debug.Print m
For Each submat In m.submatches
Debug.Print submat
End If
Debug.Print collections(0).submatches(1) '我们也可以直接切片,比如第一个匹配对象的第二个分组
End With
End Sub
- MatchCollection对象的属性
- FirstIndex : 匹配内容在整个字符串中的起始位置
- Length : 匹配长度
- Value:匹配的值
- count:匹配对象的数量
- item:匹配对象,如上使用集合或者对象索引切片,比如:collections(0)
- SubMatches对象属性
- count:匹配的分组数量
- value:匹配的值
- item:使用对象的索引切片,比如:collections(0).submatches(1)
关于正则的语法各编程语言基本一致,这里就不再多赘述了,有需要mina就网上搜罗吧~~~
关于程序调试,以及查看对象的属性,查看VBE的本地窗口变量的变化及详情会是个不错的选择,此外,VBA帮助有中文译本,阅读容易,遇到问题可以查找官方文档。以下为官方文档链接:
https://docs.microsoft.com/zh-cn/office/client-developer/excel/excel-home
正则表达式测试工具分享:
链接:https://pan.baidu.com/s/1Smn65HVXcpS6H3Bes9VjvQ
提取码:6j6w
参考:《兰色幻想》VBA教程
在VBA中使用`InputBox`方法可以让用户选择单元格区域,交互体验和输入公式参数基本上相同,其返回值为Range对象。语法格式参见微软帮助文档:
如果用户选择了多个区域,如下图中黄色区域所示,那么使用Range对象的`Address`属性获取单元格引用地址时,结果为`$B$5:$B$7,$B$13,$B$19`。
如果希望得到每个单元格的单独地址(`$B$5,$B$6,$B$7,$B$13,$B$19`),那么可以使用VBA处理一下。
解决apt-get安装中的E: Sub-process /usr/sbin/dpkg-preconfigure --apt || true received a segmentation fault.
E: Failure running script /usr/sbin/dpkg-preconfigure --apt || true
E: Sub-process /usr/bin/dpkg returned an error code (1)问题
cd /var/lib/dpkg/
sudo mv inf
使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。
调用Windows的Shell命令可以实现打印PDF文件。
shell 函数只可以执行.exe .com .bat 的可执行文件。
ShellExecute 是个api函数,可以执行与Windows系统相关联的文件。比如:
shell "c:\1.doc" 应该报错的,因为shell只能执行.exe .com .bat
应:ShellExecute Me.hwnd, "open", "C:\1.doc", "", "", 0
ShellEx...
相比一些常用的字符串操作函数,正则表达式才是王者啊,功能强大很多!'一 正则表达式
'正则表达式是处理字符串的外部工具,它可以根据设置的字符串对比规则,进行字符串的对比、替换等操作。
'正则表达式的作用:
'1、完成复杂的字符串判断
'2、在字符串判断时,可以最大限度的避开循环,从而达到提高运行效率的目的。
'二 使用方法
'1、引用...