次の方法で共有

Excel VBA でブック間でカット & ペーストをした際にアンドゥすると不可解な動作をする

Anonymous
2018-06-20T14:24:51+00:00

Excel 2010 および Excel 2016 で Worksheet_Change イベントで以下のように処理しているときに

別のブックからカット & ペーストするとアンドゥした後の Target がおかしくなってしまいます。

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False

    MsgBox "アクティブブック: " & ActiveWorkbook.Name & vbCrLf & _

        "Target のブック: " & Target.Parent.Parent.Name & vbCrLf & _

        "Target のシート: " & Target.Parent.Name & vbCrLf & _

        "Target のアドレス: " & Target.Address & vbCrLf & _

        "Target の内容: " & Target.Value & vbCrLf & _

        "Selection のアドレス: " & Selection.Address & vbCrLf & _

        "Selection の内容: " & Selection.Value

    Application.Undo

    MsgBox "アクティブブック: " & ActiveWorkbook.Name & vbCrLf & _

        "Target のブック: " & Target.Parent.Parent.Name & vbCrLf & _

        "Target のシート: " & Target.Parent.Name & vbCrLf & _

        "Target のアドレス: " & Target.Address & vbCrLf & _

        "Target の内容: " & Target.Value & vbCrLf & _

        "Selection のアドレス: " & Selection.Address & vbCrLf & _

        "Selection の内容: " & Selection.Value

    Application.EnableEvents = True

End Sub

例えば

  • Book1 の Sheet1
    • 上記の Worksheet_Change イベント が書かれている
    • セル A1 に A1 と書かれている
  • Book2 の Sheet2
    • セル B2 に B2 と書かれている

という状態で Book2 の Sheet2 のセル B2 を切り取りして Book1 の Sheet1 のセル A1 に貼り付けると

最初のメッセージは正常なのですがアンドゥした後のメッセージの Target.Address および Target.Value が

(ブックとシート自体は変わらないけど) 切り取り元のアドレスであるセル B2 を指しています。

(本来は [Book1]Sheet1!A1 を指しているはずなのに [Book1]Sheet1!B2 に変わってしまってる)

これは仕様でしょうか、それとも不具合でしょうか。

返信の確認が遅れる場合があります。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

2 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-06-22T12:27:42+00:00

    返信ありがとうございます。

    投稿先を間違えていたようなので再投稿しました。

    申し訳ありません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2018-06-21T08:17:57+00:00

    ​infade さん、こんにちは。

    マイクロソフト コミュニティをご利用いただき、ありがとうございます。

    VBA が関連するような場合、一般向けのこのマイクロソフト コミュニティでは該当するカテゴリがないため情報が集まりにくいと思います。

    今回の内容であれば、開発者の方々が多く情報交換されている MSDN フォーラムに投稿してみると、通常の動作なのかどうかの情報やアドバイスが寄せられやすくなるかもしれません。

    VBA のカテゴリもありますので利用してみてはいかがでしょうか。

    MSDN フォーラム - Visual Basic for Application (VBA)

    よければそちらを活用してみてくださいね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません