Dim testtext As String
testtext = Worksheets("Sheet2").Range("B6").Value
Worksheets("Sheet2").Range("B7").Value = testtext
将一个单元格的内容简单复制到另一个单元格中。但是当B6的内容为'02345
时,我遇到问题 - 在运行宏B7包含2345
之后我不想失去前导零。我尝试在代码的第二行用.Value
替换.Text
,但这没有帮助。
答案 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