自动字符replaceexcel

我已经检查了各种网站上的各种示例,并且我无法find在Excel 2013中的单元格中input字符(。)时自动replace字符(。)的方法。

我想要的是能够取代“。” 没有任何东西或者更确切的说去掉点 这将是数字的一部分,如33.33.2320,应该编辑为33332320.保留尾随零或任何前导零。

如果可能的话,我希望在整个列上做Excel。 点可以是手动input或复制/粘贴,需要自动删除这样做。

我已经尝试了macros,替代等,但是这似乎是一个行动之后采取,而不是在“运行时”,如果你知道我的意思。

数据validation实际上是停止input值,这不是我想要的。 如果有人手动input点或复制/粘贴它,应该被删除。

谢谢

如果发生Worksheet.Change事件 ,可以使用运行的macros。

在Excel中,右键单击要收听事件的工作表的“工作表名称”选项卡,然后select“ View Code 。 现在,您不在通用模块中,而是在工作表类模块中。

其中把这个代码:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 Then 'only column 3 = C For Each oCell In Target If InStr(oCell.Text, ".") <> 0 Then Application.EnableEvents = False 'We change workshheet cells within Worksheet_Change. 'So we must disable events to prevent endless loop. oCell.NumberFormat = "@" oCell.Value = Replace(oCell.Value, ".", "") Application.EnableEvents = True End If Next End If End Sub 

现在,每当这个工作表中的内容发生变化时,代码就会运行。 如果更改在列C ,并且单元格包含“。”,则replace完成。

要保留前导零,单元格设置为Text数字格式。

请注意Application.EnableEvents = FalseApplication.EnableEvents = True 。 如果我们改变Worksheet_Change内的工作表单元格,我们必须禁用事件以防止无限循环。 此外,我们必须稍后激活事件,因为如果不是,则此时不会运行任何事件过程。


这有一个问题。 如果你input001.234 ,那么前导零将会丢失。 这是因为更改事件input开始,然后数字已经是1.234 。 在我看来,这是没有办法的。 001.234.567将起作用,因为这不是数字而是string。


如果可能的话,可以用Text数字格式设置整列。 这将解决问题。 但是在这一栏里input数字是不可能的。