作为string的Excel单元格值不会以stringforms存储

我不能在这里获取这个代码来抓取单元格内容并以stringforms存储。 我得到一个双:
54.6666666667而不是N03:DM:示例单元格内容)。

如果我使用Cstr(Sheet1.Cells(i, 5).Value)我仍然得到相同的结果。

任何帮助,将不胜感激。

 Option Explicit Private Sub GetAddress() Dim varAdd As String Dim i As Integer For i = 2 To 327 If varTag = Sheet1.Cells(i, 2).Value Then varAdd = Sheet1.Cells(i, 5).Value varAdd = Left(varAdd, 7) Sheet3.Cells(incR, 2).Value = varAdd Exit For End If Next i End Sub 

工作表截图 在这里输入图像说明

使用Range("A1").Text而不是.Value

发表评论编辑:
为什么?
因为Range对象的.Text属性返回电子表格中字面上可见的内容,所以如果单元格显示例如i100l:25he*_92那么< – Text将返回与单元格中包含的任何格式相同的内容。
.Value.Value2属性返回存储在单元格下的单元格不包括格式。 对于datetypes,特别是.Value2 ,它将返回十进制表示。

如果你想深入挖掘意义和performance,我只是觉得this article看起来不错

另一个编辑
在这里,你去@Santosh
MANUALLY )键入从DEFAULT (列A)到其他列的值
根本不要格式化A列
将列B格式化为文本
将列C格式化为date[dd / mm / yyyy]
将列D格式设置为百分比
不格式列A,格式B为TEXT,C为日期,D为百分比
现在,
将此代码粘贴到模块中

 Sub main() Dim ws As Worksheet, i&, j& Set ws = Sheets(1) For i = 3 To 7 For j = 1 To 4 Debug.Print _ "row " & i & vbTab & vbTab & _ Cells(i, j).Text & vbTab & _ Cells(i, j).Value & vbTab & _ Cells(i, j).Value2 Next j Next i End Sub 

Analyse输出! 它真的很容易,没有更多的我可以帮助:)

  .TEXT .VALUE .VALUE2 row 3 hello hello hello row 3 hello hello hello row 3 hello hello hello row 3 hello hello hello row 4 1 1 1 row 4 1 1 1 row 4 01/01/1900 31/12/1899 1 row 4 1.00% 0.01 0.01 row 5 helo1$$ helo1$$ helo1$$ row 5 helo1$$ helo1$$ helo1$$ row 5 helo1$$ helo1$$ helo1$$ row 5 helo1$$ helo1$$ helo1$$ row 6 63 63 63 row 6 =7*9 =7*9 =7*9 row 6 03/03/1900 03/03/1900 63 row 6 6300.00% 63 63 row 7 29/05/2013 29/05/2013 41423 row 7 29/05/2013 29/05/2013 29/05/2013 row 7 29/05/2013 29/05/2013 41423 row 7 29/05/2013% 29/05/2013% 29/05/2013%