我正在尝试为Word 2013创建一个执行以下操作的宏:宏应该捕获字表的单元格的值,然后添加另一个值并将结果粘贴到同一个表的另一个单元格中。
到目前为止我的代码是:
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
要评估错误,请添加以下两行以验证在“a”中获取的数据类型是否为字符串
MsgBox (TypeName(a))
MsgBox (a)
我得到以下
我相信CDbl函数没有完成将字符串转换为double,因为他们看到链有一个小方块,不喜欢擦除它以便实现转换。
非常感谢你的帮助。
答案 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))
这种方法的一个可能的优点是,如果您只想要数字字符,它可能提供更好的陷阱错误机会。