问题描述
我的工作表具有保存到另一个工作表的值,我正在按命名范围的区域复制这些值。代码如下所示:
For i = 1 to rngDest.Areas.Count
rngDest.Areas(i).Cells.Value = rngSrc.Areas(i).Cells.Value
Next i
我遇到的问题是空单元格用零保存,当我反转数据复制时,我导入了一堆我不想要的零。我知道我可以通过数字格式隐藏它们(零显示为空白),但我根本不想在单元格中使用零。
rngDest.Replace "0",""
这是有问题的,因为它删除了作为单元格值一部分出现的零,例如,FIN01 显示为 FIN1。
我意识到我可以通过使用 .Text 而不是 .Value 来更改上面的代码,但我认为这可能会导致数值出现问题。我可以解析每个单元格并将零更改为“”,但这会显着减慢该过程。任何建议表示赞赏...
解决方法
的文档
每次使用此方法时都会保存 LookAt
、SearchOrder
、MatchCase
和 MatchByte
的设置。如果下次调用该方法时没有为这些参数指定值,则使用保存的值。设置这些参数会更改“查找”对话框中的设置,更改“查找”对话框中的设置会更改省略参数时使用的已保存值。 为避免出现问题,请在每次使用此方法时明确设置这些参数。
这意味着如果您不设置这些参数,它将采用最后使用的任何内容,而您永远不知道用户界面或 VBA 中最后使用的内容。因此,如果您不指定它们,则您的代码随机运行或失败的可能性非常高。
rngDest.Replace What:="0",Replacement:="",LookAt:=xlWhole,SearchOrder:=xlByRows,MatchCase:=False,MatchByte:=False
,
解决方法太简单了,给.Replace函数加了一个参数(xlWhole):
rngDest.Replace "0","",xlWhole