使用宏或公式将单个字母替换为文本字符串

使用宏或公式将单个字母替换为文本字符串

这应该很简单。我想使用公式或宏来自动将同一单元格中的字母替换为文本字符串。例如:如果我在单元格 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可能也保存为宏的函数。

相关内容