作为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格式设置为百分比
现在,
将此代码粘贴到模块中
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%