自动字符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 = False
和Application.EnableEvents = True
。 如果我们改变Worksheet_Change内的工作表单元格,我们必须禁用事件以防止无限循环。 此外,我们必须稍后激活事件,因为如果不是,则此时不会运行任何事件过程。
这有一个问题。 如果你input001.234
,那么前导零将会丢失。 这是因为更改事件在input后开始,然后数字已经是1.234
。 在我看来,这是没有办法的。 001.234.567
将起作用,因为这不是数字而是string。
如果可能的话,可以用Text
数字格式设置整列。 这将解决问题。 但是在这一栏里input数字是不可能的。