【问题标题】:Highlighting and Replacing Text突出显示和替换文本
【发布时间】:2016-07-13 19:42:01
【问题描述】:

我正在尝试消除一长串重复的击键。

我正在接受以下形式的文本:

“XXXXXXXX XXXXXXXXX(XXXX XXXXX XXXXXXX)”

并在最后删除位,使其成为:

“XXXXXXXX XXXXXXXXX”

我正在使用按键:F2、Shift+Ctrl+RtArrow、Shift+Ctrl+RtArrow、Shift+Ctrl+RtArrow、Shift+RtArrow、Backspake、Enter

我尝试使用 Excel 的“记录宏”功能记录这一系列击键。如果我在下一个单元格上运行录制的宏,包含“YYYYYYYY YYYYYYYYY(YYYY YYYYYY YYYYYYYY)”,它不会执行我录制的击键,它会用我录制宏的单元格的结果内容替换单元格的内容在,“XXXXXXXX XXXXXXXXX”。

Excel 生成的代码是这样的,它似乎忽略了我执行的击键,只是复制了结果:

Sub DelProcVintage()
'
' DelProcVintage Macro
'
' Keyboard Shortcut: Ctrl+j
'
    ActiveCell.FormulaR1C1 = "XXXXXXXX XXXXXXXX"
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

有没有办法通过宏发出我的击键序列?

【问题讨论】:

  • 另外,当你说你将XXXX XXX (XXX XX XXX) 转换为XXXX XXX 时,你基本上是在删除( 之后的所有内容吗?如果是这样,那么这对你来说可能是一个更好的资源Remove Text Before/After Character
  • ActiveCell.Value = Trim(Split(ActiveCell.Value,"(")(0))
  • 谢谢你,这两个建议都有帮助!

标签: excel vba keystroke


【解决方案1】:

我最终修改了我找到的一些代码。它让我达到了大约 80%,这节省了很多重复的击键。我修改了此代码以删除字符串的最后 25 个字符。有些位的字符多于或少于 25 个,但数量很少,很容易发现它们并进行修复。

Sub delEnd()
'
' delEnd Macro
'
' Keyboard Shortcut: Ctrl+j
'
Dim Rng As Range
Dim WorkRng As Range
Dim xChar As String
On Error Resume Next
xTitleId = "Macro Options"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address,     Type:=8)
'xChar = Application.InputBox("String", xTitleId, "", Type:=2)
For Each Rng In WorkRng
    xValue = Rng.Value
    Rng.Value = VBA.Left(xValue, VBA.Len(xValue) - 25)
'25 characters is the most common length of the text I am removing
Next
End Sub

【讨论】:

    【解决方案2】:

    我建议您新建一列并输入如下公式:

    =Left('cell',10)
    

    左边的公式在一些数字之后从右边删除所有内容,然后如果你想制作一个宏(示例第 1 行到第 500 行):

    Range("D1:D500").FormulaR1C1 = "(Formula)"
    

    然后复制粘贴值并删除原始列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-04
      • 2011-01-06
      • 2014-04-26
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多