2013-04-16 42 views
6

這是我需要做的:當我寫了一些東西到工作表中的一個單元格中時,我的Worksheet_Change代碼應該檢查單元格是否包含某些字符,然後替換這些字符。代碼的那部分工作正常。複製粘貼不會觸發工作表change_change

但是,有一個有點奇怪的行爲。這裏是到目前爲止的代碼:

Private Sub Worksheet_Change(ByVal Target As Range) 
     Target.Value = Replace(Target.Value, "ß", "ß") 

     MsgBox "This is the value: " & Target.Value 
    End Sub 

發生了什麼事是,當我有需要我的剪貼板要更改的字符(使用按Ctrl +Ç)。當我雙擊單元格時,使用Ctrl + V將字符粘貼到單元格中,然後按Enter鍵,代碼工作正常,字符被更改。 (注意:沒有雙擊,就看不到光標。)

但是,如果我只是用我的箭頭鍵移動到單元格並粘貼到單元格中的任何其他位置,則什麼也不會發生。我懷疑Worksheet_Change甚至沒有觸發,否則它至少會顯示我的MsgBox

(我不知道這是否是有關這一點,但我在Mac上使用Excel 2010)

+2

如果您複製和粘貼*的Excel內的值,做了'_Change'事件火? [This thread](http://answers.microsoft.com/zh-cn/mac/forum/macoffice2011-macexcel/worksheetchange-not-firing-on-paste/a1cd9b4a-1541-4988-83ef-1c9903f7cb33?msgId=9a4dac82 -69dc-4655-9106-eb5f8d4e388e)表明在Mac的Excel中存在一個錯誤,如果從另一個應用程序粘貼,_Change'事件不會觸發。 –

+3

是@DavidZemens。你是對的。這是一個Excel2011的錯誤。雖然我無法在Mac上爲Excel2010測試它。 –

+0

否_Change事件不會觸發。所以這似乎是一個錯誤? – flamingo

回答

0

與Worksheet_Change事件時,務必使用EnableEvents屬性。有關詳細信息link

Private Sub Worksheet_Change(ByVal Target As Range) 

On Error GoTo err_rout 


    Application.EnableEvents = False 

    If Target.Count > 1 Then Exit Sub 

    Target.Value = Replace(Target.Value, "ß", "ß") 

    MsgBox "This is the value: " & Target.Value 

err_rout: 
    Application.EnableEvents = True 
End Sub 

enter image description here

+0

非常感謝你,但不幸的是,這也不起作用。仍然是同樣的行爲。 – flamingo

+0

@flamingo我希望你已經將代碼粘貼到工作表代碼部分。 – Santosh

+0

我假設你是指帶有下拉框的窗口,我選擇左側的工作表,然後右側的更改功能? Visual Basic編輯器? (對不起,我的excel是用德語寫的:)是的,我把代碼放到了窗口下方的代碼部分,並有兩個下拉菜單。 – flamingo

1

您可以在觸發片使用Worksheet_Calculate。

  • 創建一個新的工作表只包含一個鏈接到的範圍內,你要 觀看(即=工作表Sheet1!A1:B3)
  • 添加一個名爲Worksheet_Calculate宏觀到觸發板現在
  • ,只要任何日期在鏈接範圍改變你的觸發片的重新計算被觸發繼而把你的宏

當用戶在相應的細胞進入一個公式和前輩中的一個改變這也適用。

使用手動計算時,觸發板和宏的重新計算僅在用戶按F9時纔會發生。

0
If Target.Column = 3 Then 
    Dim startRow As Integer 
    Dim endRow As Integer 
    startRow = Target.Row 
    endRow = Target.Row + Target.Count - 1 

    For i = startRow To endRow 
     ' blah blah blah 

也許它可以幫助

+0

@DigitalTrauma,格式化代碼時請注意。你遺留了'
'標籤。 – gunr2171

+0

@ gunr2171 - 抱歉抱歉。我想從手機編輯不是最好的主意。 : - / –