• ベストアンサー
  • 暇なときにでも

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

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

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数866
  • ありがとう数2

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

  • ベストアンサー
  • 回答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 ' ' ==============================

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

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

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

  • SelectionChangeとChangeの違い

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

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

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

その他の回答 (1)

  • 回答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 ' ' ==============================

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

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

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

  • 受信メールのフィルター(ラベル)へエクセルから確実にリンクする方法をお教えいただけないでしょうか

    エクセルのセルをクリックすると ほかのセルに入力してあるメールアドレスへ 確実にリンクさせる方法をお教えいただけないでしょうか Yahoo!でなら、できましたが、 G-mailですと僅かな時間だけ アドレスウィンドウにリンクさせたいラベルまで表示されますが、 すぐその部分が消えてしまい、受信トレイが表示されます。 ちなみに エクセルのWorksheet_SelectionChangeイベントに ActiveWorkbook.FollowHyperlink Address:=Range("B2").Value というように記述しています Range("B2")にはG-mail側のフィルター(ラベル)に 相応するアドレスを入力してあります いろいろ私なりに調べてやってみたつもりですが、 解決しませんので、お教えいただけないでしょうか 質問内容が分かりにくいかもしれませんが、よろしくお願いします

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

    シートイベントについて教えてください。 シートモジュールに --------------------------------------------------------- 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の音が鳴るだけで、マクロの実行はされません。 ご回答よろしくお願いします。

  • 複数のセルを選択しているかを取得するプロパティは?

    SelectionChangeイベントで 複数のセルを選択しているかを取得するプロパティってないのでしょうか? 今は、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Len(Target.Address) > 5 Then MsgBox "複数のセルが選択されています" End If End Sub こうしていますが、行数が多くなると文字も多くなってしまうので、このコードでは対応できません。 Rangeオブジェクトに何個セルが入ってるかを知る方法はありますか? ウォッチのTargetのcellsを見ても、どう見ればいいのかわかりません

  • エクセル 条件付き書式 アクティブセルに色を付ける

    アクセスみたいにアクティブセルに色を付けるという事は、 エクセルではできないですか? アクセスの条件付き書式はアクティブなレコードに色を付けられますが エクセルの条件付き書式にはそのような機能はないのでしょうか? VBAのSelectionChangeイベント(だっけな?)でやるしかないですか?

  • エクセル・スピンボタンを使った時にイベントマクロを発生させたい

    エクセルでスピンボタンを使って数値を上下させたときに イベントマクロを発生させたいです セルC1の入力規則のリストから氏名を選択するとグラフが表示されるのですが いちいちリストから選択するのが面倒なので スピンボタンでリストの上から順番に見ていけるようにもしたいのです スピンボタン(セルA1にリンク)を操作 A1…スピンボタンにリンクして数字が変わる B1…INDEX関数でA1の数字とリストから氏名が選択される B1の値をC1に貼り付ける←ここをマクロにしたい イベントマクロで Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Range("B1").Copy Range("C1").Select ActiveSheet.Paste End Sub としてもうまくいきません スピンボタンにリンクしたセルの値が変わったと時は Worksheet_Changeだと無理なので、どうしたらいいでしょう わかりにくい説明で申し訳ありません

  • エクセルのハイパーリンクについて

    エクセルでsheet1の任意のセルをクリックすると、sheet2の任意のセルにハイパーリンクするようにしています。 その際に、ハイパーリンク先の該当箇所に色がつくようにVisual Basicでプログラムを組み込みました。ひとつのハイパーリンク元にひとつのハイパーリンク先を作っていましたが、ひとつのハイパーリンク元に複数のハイパーリンク先を作り、ハイパーリンク先の該当箇所に色をつけたいのですが、どのようにすればよいのでしょうか?(2つハイパーリンク先があるときは、2つの該当セルに色がつくようにしたいです) Visual Basicで作ったプログラムは以下のとおりです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlColorIndexNone End Sub Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) ActiveCell.Interior.ColorIndex = 3 End Sub このプログラムを修正する必要がある場合は、Visual Basic初心者なので具体的にどのようにすればよいか教えてください。 よろしくお願いします。

  • カーソルを動かしたときは発動させたくありません

    エクセルの Worksheet_SelectionChangeイベントで --------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then MsgBox "$A$1です" End If End Sub --------------------------------------------------------- のコードを標準モジュールに書いて、A1セルをクリックすると、MsgBoxが表示させますが、 B1セルから、キーボードの「→」キーを押してA1に移動してもMsgboxが表示されてしまいます。 クリックした時はマクロを発動させたいのですが、カーソルを動かしたときは発動させたくありません。 そんな事は可能でしょうか?

  • 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 イベントまたはオブジェクトご存知の方宜しくお願い致します。

  • 「Excelのセルへの入力内容の転記と元の内容への復帰」

    「Excelのセルへの入力内容の転記と元の内容への復帰」 何故それが必要かは別にして、次のようなことがしたい。 ・あるセル(例えばA1)にはある関数(式)が設定されている。 ・いま、セルA1にある値が入力されたとき、 ・その値を別のセル(例えばB1)へ転記(保存)し、 ・セルA1には元の関数に戻す。 これを、VBAで実現するにはどうすれば良いのでしょうか?。お教えください。 changeやselectionchangeイベントなどを使用すると出来そうですが、単純なコーディングではchangeの無限ネスト(無限再帰)となってしまいます。 例えば、次のようなコーディング:セルC1をA1セル選択時の関数保存場所として補助的に使用している。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "A1" Then Range("B1") = Range("A1") Range("A1").Formula = Range("C1").Formula End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "A1" Then Range("C1").Formula = Range("A1").Formula End If End Sub これでは何か発想の転換が必要に思えます。