在excel 2003中按空格键时自动添加空格和/

时间:2016-02-28 08:43:16

标签: excel macros space

我想在Excel中编写一个宏,所以每当我点击空格键时(当我在第一列时),我想自动发送"空格和空格"。

我按下键盘上的空格键,结果我得到了空格斜杠空间。

我希望这只发生在第I栏的单元格中。

由于

2 个答案:

答案 0 :(得分:0)

当已更改的值位于第I列中时,使用Worksheet_Change事件宏将空格替换为空格 - 斜杠空格。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns(9)) Is Nothing Then
        On Error GoTo bm_Safe_Exit
        Application.EnableEvents = False
        Dim rng As Range
        For Each rng In Intersect(Target, Columns(9))
            'make safe anything that already has been changed
            rng = Replace(rng.Value2, " / ", ChrW(8203))
            'change new spaces
            rng = Chr(39) & Replace(rng.Value2, Chr(32), " / ")
            'try to repait Excel's auto-date-conversion
            If IsDate(rng) Then Application.Undo
            'restore the safeties
            rng = Replace(rng.Value2, ChrW(8203), " / ")
        Next rng
    End If

bm_Safe_Exit:
    Application.EnableEvents = True
End Sub

提供一些样本数据总是一个好主意。我在Excel中将转换后的值自动转换为日期时遇到了一些麻烦,不得不求助于一个小小的“绑定”。通过在自动更正上应用Application.Undo。尝试暂时关闭自动更正可能更好,或者可能根本不需要。

或者,Workbook_SheetChange事件宏可以使整个工作簿中的进程更加全局,并且可以过滤工作表名称以接受不是的进程。

答案 1 :(得分:0)

Private Sub Worksheet_Change(ByVal Target As Range)     如果Target.Columns.Count = 1那么         如果Target.Cells.Count = 1那么             如果Target.Column = Range(“I:I”)。Column Then                 Application.EnableEvents = False                     Target.Value = Replace(Target.Value,“”,“/”)                 Application.EnableEvents = True             万一         万一     结束如果
结束子

上面的代码只会在按下回车键后转换你所描述的空格。当您处于编辑模式时,它不会替换空间。