Excel宏:突出显示和删除文本

时间:2016-07-13 19:42:01

标签: excel excel-vba macros keystroke vba

我试图将Excel宏放在一起以消除一系列重复的击键。 我在表单中填写文字: " XXXXXXXX XXXXXXXX(XXXX XXXXX XXXXXXX)" 并删除最后的位,使其成为: " XXXXXXXX XXXXXXXX"

我正在使用击键:F2,Shift + Ctrl + RtArrow,Shift + Ctrl + RtArrow,Shift + Ctrl + RtArrow,Shift + RtArrow,Backspake,Enter

我尝试使用Excel的录制宏功能录制这一系列的击键,但它无法正常工作。如果我在下一个单元格上运行录制的宏,包含" YYYYYYYYYYYYYYYY(YYYYYYYYYYYYYYYYYYY)",它不会执行我录制的击键,它只是用得到的单元格内容我将宏记录在" XXXXXXXX XXXXXXXX"中。 Excel生成的代码是这样的,它似乎忽略了我执行的命令,只复制结果:

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

有没有办法像我想的那样通过宏发出我的按键序列?

谢谢, 马特

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我建议您选择一个新列并添加如下公式:

=Left('cell',10)

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

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

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