• ベストアンサー

特定の列全体を選択or検索パネル立ち上げ時をイベントで拾いたい、EXCEL

A列全体を選択させて(Ctrlとスペースキーにて)、a列のみを対象として検索をかける、という動作をよくします。その際、検索パネルをだすショートカットキーはCtrl+Fなのですが、間違えてCtrl+Vしてしまう間違いをよくしてしまいます。その間違った操作をしてしまうと、a列の全てのセルがクリップボードにある情報に書き換えられてしまうのです。これを防ぐVBAを作成しようと思っています。 “列全体を選択した時にペーストしたら、その動作は無効”というようなVBAをイメージしています。 列全体の選択時のイベントがあれば、すぐにできるな、と思いまして。シートがアクティブになったときのイベントはありますが、特定の列がアクティブになった時のイベントでも同じ目的が実現できるので、そんな情報でも結構です。検索パネルを開いたときのイベントでも同様です。 なお当サイトのエクセル系ジャンル内で“列全体 選択 イベント 検索 マクロ”といったキーワードを組み合わせて検索しても該当するQAがなかったのでお聞きします。 環境はWindowsXP Pro,使用しているEXCELはExcel 2000 です。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

補足しておきます。 >“列全体を選択した時にペーストしたら、その動作は無効”というようなVBAを > イメージしています。   If Target.Rows.Count = Rows.Count Then     Application.OnKey "^v", ""   Else     Application.OnKey "^v"   End If 特定シートならシートモジュール、全てのシートなら ThisWorkbook の Selection Change イベントにこんな感じのコードを書けばよいかな? まあ、マクロを無効で開かれると全然効果なしですけどね(;^^

uniaa
質問者

お礼

う、ほぼ当方の望み通りです。。。 ありがとうございます!

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

CTRL+ZでCTRL+Vの効果の取り消しができるので、そこまで考えなくても良いのでは。 やる(組み込む)のが簡単ならば、質問のようなことを組み込むのも良いと思うが。 ーー 私も良くわからないが、イベントというけれど、エクセルのVBAで捉えられるのはマウス関係が多いし、メニューの選択パターンやツールバーのツールの選択や、行・列の挿入・削除・巾や高さ拡大・縮小、ショートカットキー利用など、捉えたいことは考えれば無数に沢山あるが、素人には、させてくれる仕組みがないのと思う。 素人にはエクセルで「XXしたとき」のXXは頭に描くことは簡単だし、もっともなことだと思うが。 何かの処理(例 行削除)の中核処理の(システムの)モジュールに入る前や処理後にユーザーに処理コントロール権を返し、捉えるようにしてくれれば良いが、そういう統一的思想を採用してないようです。 ActiveCell.EntireColumn.Selectは簡単にさせてくれるが、それを 操作したとき、しらせてもらう仕組みはない。エクセルは操作が主流 で、やっている本人にはわかるじゃないか、ということだと思う。 その前提がエラーチェックなどのときには崩れるので困っちゃう。 だから既回答のように個別に工夫して考えるほかないと思う。

uniaa
質問者

お礼

なるほど。おっしゃることも少しですが、分かります。 ご回答ありがとうございます。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

いろいろな方法がありますけど... > 列全体の選択時のイベント Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Rows.Count = Rows.Count Then     MsgBox "列全体が選択されました"   End If End Sub

uniaa
質問者

お礼

遅くなりましてすいません。 セレクションチェンジの定義を調べていたら"ワークシート上で何かが起こったら何かをするような目的に使われます。"とありました。  そういう汎用的なものがあったのですね。ありがとうございます!