我想在Excel中编写一个宏,所以每当我点击空格键时(当我在第一列时),我想自动发送"空格和空格"。
我按下键盘上的空格键,结果我得到了空格斜杠空间。
我希望这只发生在第I栏的单元格中。
由于
答案 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
万一
万一
结束如果
结束子
上面的代码只会在按下回车键后转换你所描述的空格。当您处于编辑模式时,它不会替换空间。