使用范围传输值时,丢失长字符串中的数据

时间:2017-06-05 21:06:57

标签: excel vba excel-vba

所以,我正在研究一个项目,有一次我通过在一个工作簿上设置一个范围,然后在目标工作簿上设置等于它的范围,将数据从一个工作簿复制到另一个工作簿。这通常很好用,但我有一个字段,在某些情况下,数据是用逗号分隔的五位数字。邮政编码基本上由逗号和可能的空格分隔。 (虽然这些数据中不应该有空格,但很可能存在。)

例如,复制的单元格如下所示: 11111,22222,33333,44444,55555,66666,77777,88888,99999

并将转移为: 1.11112222233333E + 44或 111,112,222,233,333,000,000,000,000,000,000,000,000,000,000,000

这显然不是我想要的。我该如何解决这个问题?

这是相关代码。包含问题数据的列是“服务区域”工作表的F列。

Dim MainWB As Workbook
Set MainWB = Workbooks("SATemplate Data Compile.xlsm")
Dim MDSAT As Range

'Setting the range I want to transfer
Set MDSAT = wb.Worksheets("Service Areas").Range("A13:G13", wb.Worksheets("Service Areas").Range("A13:G13").End(xlDown).End(xlDown).End(xlUp))

'Transferring the range values
MainWB.Sheets("SATemplates").Range("A" & Rows.count).End(xlUp).Offset(1).Resize(MDSAT.Rows.count, MDSAT.Columns.count).Cells.Value = MDSAT.Cells.Value

这是设置新范围等于单元格值的问题吗?我是否必须将其拆分为多个部分,以便不同的范围将获取F列中的数据?

2 个答案:

答案 0 :(得分:1)

将单元格格式化为文本而不是数字....

答案 1 :(得分:1)

尝试此操作(强制为值(文本)):

With MainWB.Sheets("SATemplates").Range("A" & Rows.count).End(xlUp).Offset(1).Resize(MDSAT.Rows.count, MDSAT.Columns.count)
    .NumberFormat = "@" 'format as text
    .Value = MDSAT.Value
End With