Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将范围设置为值而不重新格式化单元格_Excel_Vba - Fatal编程技术网

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

Excel 将范围设置为值而不重新格式化单元格,excel,vba,Excel,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

我有一个数字范围,其中包含一些
/
,我正试图复制到另一个范围:

...
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
。如何防止这种情况发生ng

我正在从
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
但我不希望,因为我正在使用上述范围方法对多个列执行此操作。

将文本预设为文本,然后从源代码中读取

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

尝试如下格式化范围。ws1.range(“A1:A12”)。NumberFormat=“@”在复制中的值之前。如果Excel没有定义的格式,它将尝试找出您想要的内容,多次错误地假定日期。或者尝试使用
。粘贴特殊xlPasteValues
如果不起作用,我今天早上回答了一个基本相同的问题,将数据拉入字符串,格式化目标单元格,然后使用c将字符串复制到目标单元格中。是的,一个单元格一个单元格地复制。这通常是我处理少量数据的方式。然后,如果需要性能,我将使用Excel来完成繁重的工作。我相信有人会提供一行解决方案。@BruceWayne,首先我没有注意到你提出了这个问题(因为我通常在回答区看到)。是的,必须有上面提到的一个线性解决方案。这个建议突然出现,所以提供了;)嗯-没有复制任何内容。当我用鼠标悬停时,它显示
ws.Range(ws.cells(…
as
Null
)(
importWS.Range(importWS.cells(2,importclarray(I)),importWS.Cells(lastRow,importColArray(i))=ws.Range(ws.Cells(2,rawColArray(i)),ws.Cells(lastRow,rawColArray(i)).Text
)(甚至尝试将其更改为您所拥有的格式,使用
分别获得:
“[workbook.xls]导入”!$K$2:$K$117
“[workbook.xls]原始”!$i$2:$117
。(请注意,我的实际列是11和9,而不是4和7。)您编辑的解决方案有效!不过,我之前已经这样做了(将range numberformat设置为
@
),但它没有起作用。嗯。哦,好吧,现在一切都开始起作用了-非常感谢大家!!需要
.Value2
,而不是
.Value2
。抱歉搞砸了。第一杯咖啡喝了一半。