2013-04-16 5 views
6

をトリガしません、私は何をする必要があるかである:私はシート内のセルに何かを書かれている場合は、私のWorksheet_Changeコードは、細胞が特定の文字が含まれているかどうかをチェックして、それらの文字を置き換える必要があります。コードのその部分は正常に動作しています。コピー&ペーストは、ここでworksheet_change

ただし、少し奇妙な動作があります。ここでのコードは、これまでのところです:何が起こっている

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

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

が、私は私のクリップボードに変更する必要が文字を持っている場合(はCtrl +Cを使用して)ということです。私は、セルの上をダブルクリックすると、はCtrl +Vを使用して、セルに文字を貼り付け、Enterキーを押します、コードがうまく動作しますが、文字が変更されます。 (注:ダブルクリックしなければ、あなたはカーソルを見ることはできません)

をしかし、私はちょうど私の矢印キーでセルに移動して、セル内にある任意の他の上に貼り付ける場合は、何も起こりません。私はWorksheet_Changeがトリガーされていないと思われます。そうでなければ少なくともMsgBoxと表示されます。 Worksheet_Changeイベントでの作業時

(それがこれに該当するかどうかはわからないが、私は、MacでExcel 2010を使用しています)

+2

を助け '_Change'イベント火災のでしょうか? 【このスレッド(http://answers.microsoft.com/en-us/mac/forum/macoffice2011-macexcel/worksheetchange-not-firing-on-paste/a1cd9b4a-1541-4988-83ef-1c9903f7cb33?msgId=9a4dac82 -69dc-4655-9106-eb5f8d4e388e)は、Excel for Macにバグがあり、別のアプリケーションからペーストした場合、 '_Change'イベントが発生しないことを示しています。 –

+3

Yup @DavidZemens。あなたは正しいです。これはExcel2011バグです。私はMacでExcel2010のためにそれをテストすることができませんでした。 –

+0

いいえ、_Changeイベントはどちらも起動しません。それはバグのようですか? – flamingo

答えて

0

必ず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

どうもありがとう、それunfortunatleyどちらか動作しません。それでも同じ振る舞い。 – flamingo

+0

@flamingoコードをワークシートのコードセクションに貼り付けてください。 – Santosh

+0

私はあなたが左のワークシートを選択し、右の変更機能を次にドロップダウンボックスでウィンドウを意味すると仮定しますか? Visual Basic Editor? (申し訳ありませんが、私のExcelはドイツ語です:)はい、私は2つのドロップダウンメニューで、そのウィンドウの下のコードセクションにコードを入れました。 – flamingo

1

のためにあなたは、トリガーシートにWorksheet_Calculateを使用することができます。

  • だけ見て、あなたがしたい範囲へのリンク を含む新しいシートを作成します(すなわち=シート1!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 

は、多分それはあなたがコピー&* Excelで*から値を貼り付ける場合は、

+0

@ DigitalTrauma、コードを書式設定するときは注意してください。あなたは '
'タグを残しました。 – gunr2171

+0

@ gunr2171 - すごく残念です。私は携帯電話からの編集がベストアイデアではないと思う。 : - / –

関連する問題