在字宏中将字符串转换为double

时间:2017-11-05 01:08:38

标签: vba ms-word word-vba

我正在尝试为Word 2013创建一个执行以下操作的宏:宏应该捕获字表的单元格的值,然后添加另一个值并将结果粘贴到同一个表的另一个单元格中。

enter image description here

到目前为止我的代码是:

Sub prueba()
Dim a As String, b As String, c As String

Dim entero1 As Double, entero2 As Double

Dim resultado As Double

Dim tabla1 As Table
Set tabla1 = ActiveDocument.Tables(1)

a = tabla1.Cell(Row:=1, Column:=3).Range
entero1 = CDbl(a)
End Sub

但是当我运行它时我得到一个错误13

enter image description here

要评估错误,请添加以下两行以验证在“a”中获取的数据类型是否为字符串

MsgBox (TypeName(a))
MsgBox (a)

我得到以下

enter image description here

enter image description here

我相信CDbl函数没有完成将字符串转换为double,因为他们看到链有一个小方块,不喜欢擦除它以便实现转换。

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

仅提取Range的数字部分的一种方法是使用Val函数,例如

entero1 = Val(a)

如果字符串a包含123.23XYZ4567,那么Val(a)将返回数字123.23

这应该确保您Range末尾的非数字字符被删除。

答案 1 :(得分:1)

YowE3K提供的答案很优雅,并且有我的投票。欲了解更多信息:

那个小广场'是的单元格标记的结尾,它是Cell.Range.Text的一部分(.Text是返回范围对象时返回的默认属性。)

要实际删除单元格标记的结尾(Chr(13) & Chr(7)),您可以使用以下内容:

?CDbl(Replace$(Selection.Range.Cells(1).Range.Text, Chr(13) & Chr(7), vbNullString))

这种方法的一个可能的优点是,如果您只想要数字字符,它可能提供更好的陷阱错误机会。