コピーした情報を貼り付けたらイベントを発生する方法はあるか?

このQ&Aのポイント
  • ワークシートのイベント一覧を確認したが、Pasteイベントは存在しない。
  • すでにコピーした情報を貼り付けた際にイベントが発火する方法はない。
  • Pasteイベントがないため、指定したセル番地に関係なく情報を貼り付けるという動作はできない。
回答を見る
  • ベストアンサー

すでにコピーした情報を貼り付けたらイベントを発生

セル番地は指定せず、どのセルでも、 すでにコピーした情報を貼り付けたらイベントを発生する ってことはできないでしょうか? ワークシートのイベントの一覧を見てみましたが ないようです。 イベントの一覧はこちらです。 Activate BeforeDoubleClick BeforeRightClick Calculate Change Deactivate FollowHyperlink PivotTableAfterValueChange PivotTableBeforeAllocateChanges PivotTableBeforeCommitChanges PivotTableBeforeDiscardChanges PivotTableChangeSync PivotTableUpdate SelectionChange この中に、Pasteと言うイベントがないことから、 そのような動作は無理なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

#1、cjです。 すみません、編集ミスしました。 コードまるごと 差し換えでお願いします。 ' ' ============================== Private Sub Worksheet_Change(ByVal Target As Range) ' Re8101870_AfterPaste ' ' 条件分岐   With Application     If .CutCopyMode = xlCopy Then       .EnableEvents = False ' 処理内容によっては必要■ ' '-----------「_AfterPaste イベント」 ?での処理―――---------       MsgBox "_AfterPaste" ' '-------------------------------------------------------       .EnableEvents = True ' ■     End If   End With End Sub ' ' //////////↓Toggle↑//////// Private Sub Worksheet_Change(ByVal Target As Range) ' Re8101870_BeforePaste ' ' 条件分岐   With Application     If .CutCopyMode = xlCopy Then       .EnableEvents = False ' 必須       .Undo ' 一旦、貼付けをキャンセル([元に戻す]) ' '-----------「_BeforePaste イベント」?での処理------------       MsgBox "_BeforePaste" ' '-------------------------------------------------------       Target.PasteSpecial ' あらためて貼付け       .EnableEvents = True     End If   End With End Sub ' ' ==============================

SXFBYFWZBKP
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 Paste イベントが無いことはご承知の通りです。 疑似的な対応例を2例挙げておきます。 使えるかどうかは、用途次第ですね。 ただ、コピーモードには対応していますが。 カットモードには対応できません。 # 何か↑方法あった気がしますがテーマと関係ないですし思い出せません。 ///  「シート上でセルの値に関する設定に変更が加えられた時∧コピーモード」 つまり(≒)  「ペーストされた時」 という考え方です。 ' ' ============================== Private Sub Worksheet_Change(ByVal Target As Range) ' Re8101870_AfterPaste ' ' If Target.... Then Exit Sub ' その他の条件分岐   With Application     If .CutCopyMode = xlCopy Then       .EnableEvents = False ' 処理内容によっては必要■ ' '――「_AfterPaste イベント」 ?での処理―――       MsgBox "_AfterPaste" ' '――――――――――――――――――――――       Target.PasteSpecial       .EnableEvents = True ' ■     End If   End With End Sub ' ' //////////↓Toggle↑//////// Private Sub Worksheet_Change(ByVal Target As Range) ' Re8101870_BeforePaste ' ' If Target.... Then Exit Sub ' その他の条件分岐   With Application     If .CutCopyMode = xlCopy Then       .EnableEvents = False ' 必須       .Undo ' 一旦、貼付けをキャンセル([元に戻す]) ' '――――「_BeforePaste イベント」?での処理――――       MsgBox "_BeforePaste" ' '―――――――――――――――――――――――――       Target.PasteSpecial ' あらためて貼付け       .EnableEvents = True     End If   End With End Sub ' ' ==============================

SXFBYFWZBKP
質問者

お礼

ありがとうございました。

関連するQ&A

  • BeforeDoubleClickとBeforeRightClickを同じシートで

    excelのイベントマクロについてですが、 BeforeRightClickとBeforeDoubleClickを同じワークシートで 使うことはできますか? 今のところ、BeforeDoubleClickをシートで、BeforeRightClickを ワークブックで使う方法しか思いつきません。 両方同じシートで使えると便利だと考えています。 検索しても見つけられないので質問することにしました。 ご教授お願いいたします。 excelのバージョンは2002です。

  • SelectionChangeとChangeの違い

    エクセルのシートイベントには、 ・Worksheet_Change ・Worksheet_SelectionChange がありますが、違いはなんでしょうか? ・Worksheet_Changeはセルの値が変わったら発動 ・Worksheet_SelectionChangeは、 セルの選択が変わったら発動なおかつセルの値が変わったら発動 と言うことでしょうか? ・セルの値が変わったら、Changeイベントの方が先に発動する。 であってますか?ご回答よろしくお願いします。

  • シングルクリックとダブルクリックのイベントについて

    皆さん、こんばんは。 ちょっと疑問に感じたものがありましたので質問させてください。 今日のある質問、 内容はセルをシングルクリックした場合と ダブルクリックした場合のイベントの違い。 その質問に対する次の回答について。 (1)両方のイベントを機能させるとSelectionChangeが先になり  その後、同セルWクリックでDoubleClickイベントが機能します (2)SelectionChange のシングル・クリックとBeforeDoubleClickの  ダブル・クリックとはダブル・クリックの過程にシングル・クリック  があるので、論理的に、そのイベントは重なってシングル・クリックに  取られるはずです」 (1)はたぶん回答者の勘違いだろうと思うのでそれはいいのですが、 疑問に感じたのは(2)の方です。 (2)の意味は、ダブルクリックすると必ずシングルクリック 即ちSelectionChangeイベントのみが発生し、 BeforeDoubleClickは発生しないということでしょうか いままでBeforDoubleClickも発生する場合があると思っていましたので質問しました。 回答者がVBA熟知の方なので当方が何か勘違いしているのかも知れませんが・・・。 以上宜しくお願いいたします。

  • excel 図形を貼り付けた時のイベント

    Excelでインターネットから図をインポートし、自動で周囲ぼかしを付けたいのですが、図をシートに貼り付けた時に「Worksheet_SelectionChange」「Worksheet_Change」などのイベントが発生せず自動化ができません。貼り付けで発生するイベントはないのでしょうか?

  • シートのクリックイベントは拾えないのか?

    ExcelのVBAに関する質問です。 さきほど「セルをクリック、またはダブルクリックしたときに○○したい」という質問に回答したのですが、「セルをクリックした」というイベントを拾う方法がわからず、ダブルクリックのパターンで回答しました。 Worksheetのイベントには BeforeDobuleClick や BeforeRightClick はあるのに Click や onClick というイベントがありません。オートシェイプなどのオブジェクトやフォーム上のオブジェクトには Click イベントがあるのですが、Worksheet になぜかありません。 これまでも同様のケースがあり、ネットで検索したりしたのですが、どれも SelectionChange で代用するものでした。それだと確かにマウスで別セルを選択したときにイベントが発生しますが、 ・キーボード操作でセルを移動してもイベントが発生する ・現在選択しているセルをクリックしてもイベントが発生しない と、厳密はマウスでクリックしたときと同じ動作になりません。 確か以前の質問で「あるセルをクリックするたびに、他のセルの値をカウントアップしたい」というようなものもありました。このような場合には、やはり Click に相当するようなイベントで処理したいです。 どうにかしてWorksheetでクリックイベントを拾うことはできないのでしょうか?

  • エクセルVBA/シートのチェンジイベントを発生させない方法?

    Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "イベント発生" End Sub このワークシートがアクティヴになってるときに手入力された場合以外、チェンジイベントを発生させなくするにはどのような方法があるでしょうか? 標準モジュール記載の他のマクロでセルが変更された場合を無視したいのです。 よろしくお願いします。

  • EXCELのイベントの保存について

    EXCEL2000で新規にBOOKを作り、microsoft excel objectsのsheet1に、次のイベントを書きました。 Private Sub Worksheet_Calculate() If Sheet1.Cells(1, 2).Value = 1 Then Sheet1.Cells(1, 3).Value = "当たり” End If End Sub B1のセルは、A1のセルの値をコピーするようにしています。 A1のセルに1を入力されると、C1のセルに”当たり"が表示されるのですが、 BOOKを登録した後、BOOKを閉じ、そのBOOKを開けた後に、A1のセルに1を入力しても、C1のセルに”当たり"が表示されません。 イベントを登録する際に、足りない操作があるのでしょうか? よろしくお願いします。

  • ハイパーリンクでのクリックイベントの取得

    任意のセルに対して HYPERLINK 関数でリンクをはったものについては、 マウスからのクリックイベントを Worksheet_FollowHyperlink で 取得できることはわかったのですが図形描画バーのテキストボックスに対して メニューからのハイパーリンクで実施したリンクに対して Worksheet_FollowHyperlink で取得できない状態です。 テキストボックスに対しての HYPERLINK 関数の使用法について 使えるのかすらわからず、メニューからの方法しか わからなかったのですがこの場合のリンクでは取得できない状態のようです。 メニューはツールバー -> 挿入からものかテキストボックスを 選択して右クリックで表示されるメニューからで同じシート内で 任意のセルを指定する形です。 テキストボックスにリンクをはりクリックイベントを取得するには どうしたらいいのでしょうか?

  • Excel VBA 標準モジュール内でイベント

    ワークブックのイベントWorkbook_Openを標準モジュールのAuto_Openで代用できるように ワークシートのイベントWorksheet_Changeを標準モジュールで実行できるようにすることは できなものでしょうか。 その他のイベントに関しても情報があれば教えてください。

  • エクセル デバッグできるのとできないのがある

    シートイベントについて教えてください。 シートモジュールに --------------------------------------------------------- Option Explicit Private Sub Worksheet_Activate() MsgBox "" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "" End Sub Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "" End Sub --------------------------------------------------------- と記載した時に、 F8で動かせるのは、Worksheet_Activateだけなのですがなぜでしょうか? ほかのイベントは、F8で実行させても、OSの音が鳴るだけで、マクロの実行はされません。 ご回答よろしくお願いします。

専門家に質問してみよう