使用.Value()

时间:2018-07-02 14:15:59

标签: excel vba excel-vba type-conversion copy

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

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

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

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

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

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

运行此代码时,除一个值外,大多数复制正常。 由于我使用的是欧洲版的excel,因此3.2的值存储为字符串。当我将其复制过来时,它会转换为十进制值而不是字符串:3,2

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

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

1 个答案:

答案 0 :(得分:1)

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

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

或:

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