首页 > 解决方案 > 如果它们等于某物,则删除最后 3 个字符

问题描述

(不影响单元格中的字符级格式)

我已经发布了一个类似的问题,但不幸的是我意识到我无法使用任何解决方案,因为它们都删除了单元格中的所有格式:(

我有一个替换各种文本字符串的代码。它看起来像这样(+ 更多的 IF):

Sub Fix()
  Dim X As Long, Cell As Range
  For Each Cell In Selection
    For X = Len(Cell.Text) To 1 Step -1
      If Cell.Characters(X, 3).Text = ", ," Then Cell.Characters(X, 3).Text = ","
      If Cell.Characters(X, 3).Text = ", (" Then Cell.Characters(X, 3).Text = " ("
      If Cell.Characters(X, 3).Text = ", [" Then Cell.Characters(X, 3).Text = " ["
      If Cell.Characters(X, 3).Text = ", -" Then Cell.Characters(X, 3).Text = " -"
      If Cell.Characters(1, 3).Text = "abc" Then Cell.Characters(1, 3).Text = ""
    Next
  Next
End Sub

abc如果这包含在所选单元格的开头,我的代码的最后一行将被删除。

我正在寻找abc当它包含在所选单元格的末尾时如何删除。

但保留单元格中的所有原始格式(文本大小、颜色、粗体/斜体/下划线字母等)对我来说非常重要。

请记住,我是一个完整的初学者,我对编程一无所知。我从互联网上复制了上面的代码,只是更改了值。

预先感谢您的帮助。

标签: excelvba

解决方案


如果要删除单元格的最后三个字符(如果它们是abc),则:

前:

在此处输入图像描述

编码:

Sub EasyAsABC()
    Dim s As String, L As Long
    With ActiveCell
        s = .Text
        L = Len(s)
        If Right(s, 3) = "abc" Then
            .Characters(L, 1).Text = ""
            .Characters(L - 1, 1).Text = ""
            .Characters(L - 2, 1).Text = ""
        End If
    End With
End Sub

之后:

在此处输入图像描述


推荐阅读