Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA Application.Speech.Speak方法:以千为单位读取数字_Excel_Vba - Fatal编程技术网

Excel VBA Application.Speech.Speak方法:以千为单位读取数字

Excel VBA Application.Speech.Speak方法:以千为单位读取数字,excel,vba,Excel,Vba,(使用Excel 2013) 在工作簿中,当Enter键上的Speak单元格处于打开状态时,文本到语音的行为似乎如下所示: 对于格式为常规的数字,当您输入1245时,它会将单元格读取为“1245”。如果输入1245,它将读取为“一千二百四十五”,并将单元格格式更改为数字,并勾选使用1000分隔符(,) (如果您将单元格格式化为数字,并清除使用1000分隔符(,)勾选框,在Enter上说出单元格回读“1245”。如果小数位在格式化单元格对话框中等于或大于1,则在Enter上说出单元格读作“一千二百

(使用Excel 2013)

在工作簿中,当Enter键上的
Speak单元格处于打开状态时,文本到语音的行为似乎如下所示:

对于格式为常规的数字,当您输入1245时,它会将单元格读取为“1245”。如果输入1245,它将读取为“一千二百四十五”,并将单元格格式更改为数字,并勾选
使用1000分隔符(,)

(如果您将单元格格式化为数字,并清除
使用1000分隔符(,)
勾选框,
在Enter上说出单元格
回读“1245”。如果
小数位
在格式化单元格对话框中等于或大于1,则在Enter上说出单元格
读作“一千二百四十五点零”(例如,小数点后一位。)

但是,如果您使用
Application.Speech.Speak Range(“A1”)
(在
A1
中输入1245),它将读回“1245”,而不管它是否有逗号,并且实际上是以数字格式

当您达到5位数字时,输入
Application.Speech.Speak Range(“A1”)
读取以千(即“一万”)为单位的值,无论单元格是普通还是数字

有人知道让Application.Speech.Speak轻松读取10000以下的数字和数千个数字的方法吗?或者您需要做一个变通方法,将数字解析为单词,然后读出结果吗


提前谢谢。

另一个很好的问题。这对我很有用:

Application.Speech.Speak(Format(Range("A1"),"#,##0"))
Sub Numb()
如果选择<10000,则选择Application.Speech.Speak
端接头

子读取编号()
如果范围(“A1”)小于10000,则选择Application.Speech.Speak
端接头

太棒了!完全符合要求。比将数字解析为单词并以这种方式处理要容易得多。这是一个非常好的解决方案,道格。我以前从未注意到这种行为,但你的解释非常清楚,我敢说,我一下子就想到了答案:)。很有趣!
Sub Numb()
If Selection < 10000 Then Application.Speech.Speak Selection
End Sub
Sub ReadTheNumber()
If Range("A1") < 10000 Then Application.Speech.Speak Selection
End Sub