2016-07-13 23 views
1

我試圖放在一起的Excel宏以消除一系列重複的擊鍵。 我正在文本形式: 「XXXXXXXX XXXXXXXX(XXXX XXXXX XXXXXXX)」 和結束時取出位,使其: 「XXXXXXXX XXXXXXXX」Excel宏:突出顯示和刪除文本

我使用的快捷鍵:F2, Shift + Ctrl + RtArrow,Shift + Ctrl + RtArrow,Shift + Ctrl + RtArrow,Shift + RtArrow,Backspake,Enter

我試着用Excel的記錄宏功能記錄這個按鍵序列,但它不工作。如果我在包含「YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY」的下一個單元格上運行錄製的宏,它不會執行我錄製的按鍵,它只是用記錄的單元格的結果內容替換單元格的內容宏,「XXXXXXXX XXXXXXXX」。 Excel中生成的代碼是這樣的,在它似乎已經忽略了我執行的命令,只是將結果複製:

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

有沒有辦法通過一個宏發出我的擊鍵順序,因爲我想做?

謝謝, 馬特

+0

使用'SendKeys' [EXCEL VBA - 的SendKeys方法](http://www.contextures.com/excelvbasendkeys.html) – Namkce

+0

此外,當你說你轉換'XXXX XXX(XXX XX XXX )'到'XXXX XXX',你是否基本上刪除了'('後面的所有內容??如果是這樣,那麼這可能是一個更好的資源給你[刪除前後字符](https://www.extendoffice.com/文件/ excel/1783-excel-remove-text-before-character.html) – Namkce

+2

'ActiveCell.Value = Trim(Split(ActiveCell.Value,「(」)(0))' –

回答

0

我建議你採取一個新的列,並把一個公式,如:

=Left('cell',10) 

左式接一些號碼後,切斷一切從正確的,那麼,如果你想使一個宏(實施例行1至500):

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

然後複製粘貼值和刪除原始列

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