收到错误的价值

时间:2014-01-23 18:07:41

标签: excel vba memory

在我的宏开始时,我调用此宏将所有逗号更改为点。

Sub commaToDot()

 ActiveWorkbook.Sheets("Oficial").Activate

 Columns("B:B").Select
     Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False

End Sub

正如我在数据中看到的那样,它有效。它将所有逗号替换为B列中的点。

稍后在我的代码中,我将一些值(具有COMMAS并且现在具有DOTS)复制到其他单元格,但值显示为COMMAS。

为什么呢?我在想有一些内存不端行为,但我不知道如何解决它。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我的猜测这是一个国际格式问题。例如,如果您的Windows区域设置是葡萄牙语,或者使用逗号作为小数的其他语言,那么您的问题可能与您的VBA例程有关,导致目标单元格将“点号”解释为数字而不是文本字符串。

要强制Excel将“粘贴”值解释为字符串,可能最简单的方法是在要使用单引号标记复制的值之前。这将显示在公式栏中,但不会显示在单元格或任何打印输出中。您也可以将单元格预格式化为文本,但这可能并不理想。

答案 1 :(得分:0)

问题可能在于您的列具有不同的格式。确保列的格式正确。

要强制列的内容为数字而不是文本,请尝试以下操作(如果更改列格式不会立即产生所需的效果):

lastRow = Cells(rows.count, 1).end(xlup).row
For x = 1 to lastRow
    cells(x,1) = cells(x,1) + 0  'or you could do cells(x,1) = cells(x,1) / 1
Next

这将循环遍历第1列的所有单元格并强制它们为数字。