Saskia在宏的控制下转换信息时遇到问题,但仍然无法在Excel中使用。当她收到一个工作表,该工作表显示带有小数点格式的数字时,她将需要转换值,以便它们使用十进制逗号,这与数字在荷兰的显示方式一致。她会查找并替换,一切都会正常。但是,当她记录执行查找和替换的宏时,结果单元格被视为文本而不是数值。

出现这种现象的原因是Excel VBA会说“美国”字样,由于这个事实,使用记录的宏执行的某些操作无法按预期进行。因为American Excel期望小数点分隔符是一个句点,所以在VBA中用另一个分隔符(例如逗号)解释“数字”将使Excel将该值视为文本。

解决方法不是使用查找和替换,而是使用其他技巧。考虑以下简短宏:

Sub ConvertNumbers()

Dim oConRange As Range     Set oConRange = ActiveSheet.UsedRange.Cells.SpecialCells(xlConstants)

oConRange.Value = oConRange.Value End Sub

该宏定义了一个范围,该范围由所有包含常量的单元格组成。然后,它将每个单元格的值设置在与其自身相等的范围内。在执行此过程中,Excel将重新评估每个单元格的内容,并将其转换为适当的数值。换句话说,包含小数点的数字将转换为包含小数点逗号的数字。

还有其他方法可以使用宏处理单元格,但是上述过程似乎是最好,最快的。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12630)适用于Microsoft Excel 2007、2010和2013。您可以在以下版本的Excel的较旧菜单界面中找到本技巧的版本: