Excel 在VBA中复制时丢失数字/文本格式

Excel 在VBA中复制时丢失数字/文本格式,excel,vba,Excel,Vba,再一次,所有人!我有下面的代码片段,它从一张纸上取一个数字,并简单地将另一张纸上的列设置为完全相同的信息。我尝试过.value和.value2,但这两种格式都会将格式更改为不保留逗号的格式。因此,它显示为123456789,而不是123456789。这必须保留为CSV,但我运气不好。最奇怪的是,它只对少数几个不同的人起作用,但到目前为止还没有对大多数人起作用。我很迷茫,正如你所看到的,这非常简单,但我找不到答案。如果您需要任何其他信息,请告诉我。代码是 productws.Range("B3:B

再一次,所有人!我有下面的代码片段,它从一张纸上取一个数字,并简单地将另一张纸上的列设置为完全相同的信息。我尝试过.value和.value2,但这两种格式都会将格式更改为不保留逗号的格式。因此,它显示为123456789,而不是123456789。这必须保留为CSV,但我运气不好。最奇怪的是,它只对少数几个不同的人起作用,但到目前为止还没有对大多数人起作用。我很迷茫,正如你所看到的,这非常简单,但我找不到答案。如果您需要任何其他信息,请告诉我。代码是

productws.Range("B3:B" & lr).Value2 = translatews.Range("BH3:BH" & lr).Value2

您可以使用文本函数获取屏幕上显示的单元格值,包括格式设置

productws.RangeB3:B&lr.Value=translatews.RangeBH3:BH&lr.Text


也就是说,听起来根本的问题是Excel自动格式化源数据中的逗号,并假设它们只是数字,而不是逗号分隔的值。您可以通过将源数据的单元格格式设置为文本而不是数字来避免这种情况。选择范围、右键单击、设置单元格格式、选择类别文本。

值传输不进行格式设置。你可以用它

translatews.Range("BH3:BH" & lr).Copy Destination:=productws.Range("B3)

好吧,答案就在这里!我给了你们非常好的人我认为是问题所在,但问题在于建立价值本身。我使用逗号连接各种值,这使得Excel将其作为数字读取,但有时作为文本读取,如果最后一位的值只有两位数而不是三位数。所以,答案是在所有重要的地方将我的分隔符改为分号,现在它就像一个符咒!我会在这里发帖,但它跨越了相当多的代码,所以除非有人要求,否则我会留下这个作为答案。我很抱歉提出了一个不好的问题,并将努力在未来做得更好!谢谢大家的帮助,Stack Overflow社区一直在努力帮助大家

值传输不进行格式设置。你可以用它。我认为使用复制粘贴通常被认为是糟糕的编程?这是不对的,还是因为这只是一条线?我对这一点很陌生,所以我自己也不知道。如果需要的话,编程也不错:很多时候不需要,但这是一个有效的用例。为了完成起见,你能通过输入/输出的屏幕截图展示几个例子吗?啊,这就是问题所在。我尝试了```文本函数,但它不起作用,现在我明白了原因。让我试试,我会回到这里,如果这确实澄清了问题,我会发表评论。非常感谢。你真的试过这个吗?只是检查一下。。。来自:文本属性最常用于一个单元格的范围。如果该区域包含多个单元格,则Text属性将返回Null,除非该区域中的所有单元格具有相同的内容和格式。换句话说-.Text不会返回数组。Lol,只是用这个问题尝试了一下。我将把它包括在我现有的for循环中,看看这是否满足单单元格问题。@tradingpostlc-我认为逐单元格写入工作表单元格是一种更糟糕的编程实践,速度非常慢,效率也很低,而不仅仅是实现拷贝,这实际上是很好的。我真的想更新我的代码以使用所有数组,但是我对数组还不太适应,所以我在这个项目的下一次迭代中就有了这个想法。我完全同意你!