0

3 つの Excel シートを含むワークブックがあります。2枚目の計算結果である3枚目のデータをユーザーがコピーできるようにしたい。しかし、私が使用しているコード

'The code for the Macro
Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim col As String
Dim msg As String
col = Split(Target.Address(1, 0), "AOS")(0)
'Permet d'éviter les modifications des modifications manuelles des cellules calculées automatiquement
If Intersect(Target, Sheets("AOS").Range("A3:AP100")) Is Nothing Then Exit Sub

'We're going to make a change, so turn this off
'so that macro doesn't get called infinitely
Sheets("AOS").Application.EnableEvents = False

Sheets("AOS").Application.Undo
MsgBox "Can't touch this!", vbCritical + vbOKOnly, "Error !!!!!"
Sheets("AOS").Application.EnableEvents = True

また、2 番目のシートで行った変更を元に戻します。Sheets("AOS").Application.Undo が正常に機能していないようです。

助言がありますか..?

4

2 に答える 2

0

MSDN から:

このメソッドは、マクロを実行する前にユーザーが行った最後のアクションのみを取り消します。これは、マクロの最初の行である必要があります。Visual Basic コマンドの取り消しには使用できません。

于 2013-06-26T13:51:40.333 に答える
0

あなたはSelectionChangeイベントを使用しています。イベントを使用する必要がありますChangeSelectionChange選択が変更されるたびに発生するため、元に戻すを使用すると、別のシートで発生した可能性のある最後の元に戻すことができるアクションが元に戻ります。

于 2013-06-26T13:45:10.877 に答える