将范围设置为值而不重新格式化单元格

时间:2015-09-03 19:30:17

标签: excel excel-vba vba

我有一系列数字,其中有一些/,我正在尝试复制到另一个范围:

...
152/7163
152/7163
153/7163
153/7163
48/7164
332/7138
332/7138
332/7138
371/7166
5/7161
5/7161
5/7161
5/7161
115/7163
116/7163
121/7163
519/7132
154/7163
...

然而,当我这样做时,其中一些格式化为日期(即5/7161变为May-61。请注意,在转移到我的importWS时,Excel添加了5 / 1 / 7161本身...然后将其转换为May-61。如果我将其更改为Number,则单元格将其值完全更改为1921663.00。我该如何防止这种情况发生?

我从 ws复制并将复制到 importWS

    importWS.range(importWS.cells(2,4),importWS.cells(lastRow,4)).Value = _
ws.Range(ws.cells(2,7),ws.cells(lastRow,7)).Value

我尝试过使用.Value2.Text但都没有效果。我知道我可以遍历范围内的每个单元格,并且喜欢importWS.cells(i,4).Value = "'" & ws.cells(i,7).Value,但不愿意,因为我使用上述范围方法为多列执行此操作。

1 个答案:

答案 0 :(得分:1)

Range.NumberFormat property预设为文字,然后从来源阅读Range.Value2 property

with importWS
    .range(.cells(2, 4), .cells(lastRow, 4)).NumberFormat = "@"
    .range(.cells(2, 4), .cells(lastRow, 4)) = _
        ws.Range(ws.cells(2, 7), ws.cells(lastRow, 7)).value2
end with