首页 > 解决方案 > 使用 .Value() 分配时,十进制字符串会转换为数字格式

问题描述

我有一个数据集,我需要在其中传输数据以使其符合用于解释此数据的格式。为此,我需要将两列数据合并为一列。为此,我将第二列的数据粘贴到第一列中的数据下方。

为此,我首先在所需位置添加所需数量的空行。然后我需要复制伴随这些数据的图例。图例有两列,一列带有问题标识符,一列带有问题。

在复制此图例时,会隐式进行类型转换,这是不需要的。

我使用以下代码复制图例:

Dim j as long
For j = 1 To numberrows_kennis 
   wss.cells(lastrow_kennis + j , 1) = wss.cells(row_kennis -1 + j , 1).Value
   wss.cells(lastrow_kennis + j , 2) = wss.cells(row_kennis -1 + j , 2).Value
Next j

在此代码中,所有变量都显式声明为适当的类型(worksheet对于 wss,Long对于行相关变量)

当我运行这段代码时,大部分复制都是正确的,除了一个值。有一个值3.2存储为字符串,因为我使用的是欧洲版本的 excel。当我将其复制过来时,它会转换为十进制值而不是字符串:3,2

要复制的其余范围是该Long类型的值,不应将其转换为字符串值。

这种类型转换是否源于我对 的使用.Value?如果是这样,如何避免这种行为?

标签: vbaexceltype-conversioncopy

解决方案


Excel 试图提供帮助。为避免自动转换,您必须在将值分配给单元格时使用撇号作为前缀,或者在将值放入单元格之前为单元格使用文本格式,如下所示:

wss.cells(lastrow_kennis + j , 1) = "'" & wss.cells(row_kennis -1 + j , 1).Value

或者:

wss.cells(lastrow_kennis + j, 1).NumberFormat = "@"

推荐阅读