2017-07-13 62 views
0

我试图将包含坐标的单元格值转换为整数。字符串值是“X-324.45”,但是希望能够在稍后的循环中使用此数字。Excel VBA宏 - 字符串到小数

Msgbox1显示字符串作为X-324.45 Msgbox2显示字符串作为-324.45 Msgbox3显示空白MSGBOX

缺少什么我在这里?我想-324.45是一个我可以用于数学运算的变量。

感谢,

Dim YVAL1 As String 
Dim YVAL2 As String 
Dim YVAL3 As Double 
YVAL1 = ActiveCell.Offset(0, -4).Value 
YVAL2 = Mid(YVAL1, 1, 10) 
YVAL3 = CDbl(YVAL2) 
MsgBox ("Value1: " + YVAL1) 
MsgBox ("Value2: " + YVAL2) 
MsgBox ("Value3: " + YVAL3) 

回答

3

Mid(YVAL1, 1, 10)不会删除任何东西 - 从第2个字符Mid(YVAL1, 2, 10)阅读。

MsgBox ("Value3: " + YVAL3)失败,因为它试图算术加法,一个不可兑换的字符串为双 - 总是用&来连接:

MsgBox ("Value3: " & YVAL3) 
+0

事实上,如果你不要使用YVAL2 = Mid(YVAL1,2,10),你应该在YVAL3 = CDbl(YVAL2)上得到一个错误,因为它试图转换一个非数字字符串。 – alrm3000

3
YVAL2 = CDec(Mid(YVAL1, 2, 10)) 

enter image description here

Sub Button1_Click() 
    Dim yval1, yval2 
    yval1 = Range("A1").Value 
    yval2 = CDec(Mid(yval1, 2, 10)) 
    MsgBox ("Value: " & yval2) 
End Sub 
+0

我不知道@Jaberwocky是否打算通过使用CDec()来表明这一点,但除非精确度是使用类似十进制或货币(非浮点)而不是单精度或双精度(浮点数),否则是一个好主意。绝对有必要。 – alrm3000