Excel VBA – 从0开始的string

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

一个单元格的内容简单复制到另一个单元格。 但是当B6的内容是'02345 – 运行macrosB7包含2345后,我遇到了问题,我不想失去前导零。 我试着在代码的第二行用.Textreplace.Value ,这没有帮助。

如果将.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使用该特定单元格上的文本格式,它不会将其视为数值,而只是纯文本。

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

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

似乎完美的工作。
如果你真的需要中间的testextvariables,我宁愿把它定义为Variant

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

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

您可以使用单元格的FormulaR1C1属性插入导致Excel将其解释为文本的单引号。 这就模仿了最初在B6input'02345时实际发生的情况,您可以在打开macroslogging器的情况下进行validation:

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