• 締切済み

CutCopyMode範囲の取得方法について。

Application.CutCopyMode=True時の対象セル範囲を取得したく思っています。 対象セルが記憶されているオブジェクト、または、 CutCopyMode=True時のイベントがわかればよいのですが見つかりません。 只今、SelectionChangeにて一時保管して使用していますが、Mode対象セル範囲を次から次へと変更していくと、この方法では上手く取得できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode <> xlCopy And _ Application.CutCopyMode <> xlCut Then Set 一時保管 = Selection End If End Sub イベントまたはオブジェクトご存知の方宜しくお願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1 のWendy02です。補足です。 今自分の書いたものを読んでいて、ミスを発見したのですが、CutCopyMode の点線枠とSelection とは、一致しませんね。ClipBoard に入っているか入っていないかですね。ClipBoard には、Excel用のものと、Windows用のものと、ActiveX コントロールのDataObject の三つがあって、ユーザーが一番使いやすいのは、DataObjectですが、これは、テキストオンリーです。

i_september
質問者

お礼

ご回答ありがとう御座います。 参考にさせて頂きます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。Wendy02です。 最初に、 Application.CutCopyMode <> xlCopy And _ Application.CutCopyMode <> xlCut Then ロジックとしては、And じゃなくて、Or じゃないのかなって思いますが、イベント自体が、SelectionChange で、Set 一時保管 = Selection としても、 Dim 一時保管 As Range として、モジュールレベルの変数か、Public としてグローバル変数にしなければ、End Sub でお終いになってしまいますね。 その溜めたものを吐き出す時に、どういうことになるのかっていうことで、入れる方には、イベントは、あまり手順はいらないと思います。あえて必要になるのは、吐き出し時に、Selection 自体をどのように加工するか、ということが重要鍵になるのか、と思います。つまり、同じシート内なら、再び SelectionChange イベントが働いてしまうので、それを回避することも考えなくてはなりません。