Excel VBA - 以0开头的字符串

时间:2015-11-24 14:15:47

标签: excel vba excel-vba

Dim testtext As String
testtext = Worksheets("Sheet2").Range("B6").Value
Worksheets("Sheet2").Range("B7").Value = testtext

将一个单元格的内容简单复制到另一个单元格中。但是当B6的内容为'02345时,我遇到问题 - 在运行宏B7包含2345之后我不想失去前导零。我尝试在代码的第二行用.Value替换.Text,但这没有帮助。

4 个答案:

答案 0 :(得分:9)

如果将.NumberFormat属性更改为“@”,它将在单元格中写入02345。

Dim testtext As String
testtext = Worksheets("Sheet2").Range("B6").Value
Worksheets("Sheet2").Range("B7").NumberFormat = "@"

Worksheets("Sheet2").Range("B7").Value = testtext

这是有效的,因为标准单元格格式读取前导0作为数值的数字,因此删除了前导0。 通过强制Excel在该特定单元格上使用文本格式,它不会将其视为数值,而是将其视为纯文本。

答案 1 :(得分:4)

我不知道Range的默认属性是什么,但无论如何

With Worksheets("Sheet2")
  .Range("B7") = .Range("B6")
End With

似乎完美无缺 如果您确实需要中间testext变量,我宁愿将其定义为Variant

答案 2 :(得分:2)

尝试使用copy方法将一个单元格的内容简单复制到另一个单元格中。

   Worksheets("Sheet2").Range("B6").copy Worksheets("Sheet2").Range("B7")

答案 3 :(得分:1)

您可以使用单元格的FormulaR1C1属性插入单引号,这会导致Excel将其解释为文本。这模仿了您最初在'02345中输入B6时实际发生的情况,因为您可以在启用宏录制器的情况下进行验证:

Worksheets("Sheet2").Range("B7").FormulaR1C1 = "'" & testtext