这应该很简单。我想使用公式或宏来自动将同一单元格中的字母替换为文本字符串。例如:如果我在单元格 A1 中输入字母“r”,我希望它自动将其替换为单元格 A1 中的“C123R”。我希望这仅适用于 A 列。
答案1
你可以尝试一下这个代码。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Cells.Count = 1 And Target.Value = "r" Then
Application.EnableEvents = False
Target.Value = "C123R"
Application.EnableEvents = True
End If
End Sub
注意: 在上面的代码中,列数和单元格数量是可调整的。
答案2
如果您希望在编辑时立即看到替换效果,可以通过定义适当的AutoCorrect
选项来实现。替换适用于用r
小写或大写字母书写的单词。Word
意味着r
必须用空格或标点符号将单词与文本的其他部分分开。
代码包括放置在不同模块中的几个程序:在标准模块中:
Public Auto As Boolean
Sub Adjust(Auto As Boolean)
Dim item As String: item = "r"
Dim repl As String: repl = "C123R"
If Auto Then
Application.AutoCorrect.AddReplacement item, repl
Else
On Error Resume Next
Dim ACR: ACR = Application.AutoCorrect.ReplacementList
repl = WorksheetFunction.VLookup(item, ACR, 2, False)
If Err Then Exit Sub ' not defined
On Error GoTo 0
Application.AutoCorrect.DeleteReplacement item
End If
End Sub
在工作表模块中:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Set Target = Intersect(Target, Columns(1))
On Error GoTo 0
Adjust Not Target Is Nothing
End Sub
在 Thisworkbook 模块中:
Private Sub Workbook_Activate()
Adjust True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Adjust False
End Sub
Private Sub Workbook_Deactivate()
Adjust False
End Sub
Private Sub Workbook_Open()
Adjust True
End Sub
如果您想r
在提交后在单元格中替换,您可以使用另一个响应中显示的宏,或者您可以使用Find/Replace
可能也保存为宏的函数。