之前的一篇我们讲到如何用VBA制作出一个乘法口诀表,然后有小伙伴提建议,如何把它读出来呢?
先把代码发出来。
第1、2、6行代码给定格式
最开始的Sub和最后的End Sub就没什么好说的咯,第二行的Dim rg As Range,声明了一个叫做“rg”的单元格区域。
还记得之前的时候创建乘法口诀声明的数字变量吗?那是Dim h As Byte,接下来我们需要的是单元格,就不再用这种Byte的数字了。(用着也是可以的,这里讲到新的一种循环办法,用单元格的话就比较方便的)
第3、5行的循环格式
上次用到的是
For X = 1 To 9
Next X
是把分别把X用作1,2...9的数字。
这次的是
For Each rg In [A1:I9]
Next
在A1:I9的区域里,rg的变量把里面每一个单元格都“变”了一次,
分别把rg用作A1,B1....H9,I9的单元格。
第四行是发声的主要语句
暂时也不好解释,记着这种用法就好咯。
Application.Speech.Speak "A1"
这个命令就可以读出“A1”,是真的A1两个字符,而不是代指的A1单元格。
话说此处应该用Hello World更好。
Replace替代字符
Replace在表格里面也是有这个函数的,在VBA里也有这样的一个用法。
因为上次制作的乘法口诀里,“1x1=1”,等号是可以被系统识别读作“等号”的,不过那个乘号却会被读作字母“X”,此处用Replace函数把“x”替换读作“乘”
Replace(需要替换的内容,替换哪个字,替换为哪个字)
总的解释
把A1:I9的里的单元格拿过来,先把乘号改变成“乘”字,再把它读出来,然后换下一个单元格,以此对所有的单元格都读一遍。
此处的Replace的结果仅仅是读了一下,所以不会把表格中原有的字符给替换掉(显示上)。
整个区域里面有大量的空白,原想要不要去判断下空白就换行的,后来发现软件自带的工具对这个空白也是只向后读了一个就自动换行了,就没有添加那个语句。
软件有自带的朗读工具,不知道你用过没呢?
高版本的可以直接用搜索出工具,
其他版本的话需要去选项里面去找咯。