• ベストアンサー

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

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

  • uniaa
  • お礼率86% (33/38)

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

  • ベストアンサー
  • 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/17068)
回答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
質問者

お礼

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

関連するQ&A

  • Excel VBA 結合セルがある時に1列だけ選択

    A1からD1までの4つのセルが結合されている時に C列をクリックするとC列だけを選択できます。 これをVBAで記述するには どのように記述すればよいでしょうか。 マクロの記録では Columns("C:C").Select というコードが生成されるのですが マクロ記録時にC列だけが選択されていたのに 実行するとAからDの4列が選択されます。 読み込んだファイルを処理するので 結合セルの存在やセルは不定です。 よろしくお願いします。(Windows7,Excel2010)

  • エクセルVBAで特定の範囲を検索したい

    VBAを使って、A1セルに入力した数値をA列から検索して、そのセルをアクティブにしたいのですが、検索範囲のA列を特定するにはどのようなコードが必要でしょうか?現状ではシート全体を検索してしまいます。 超初心者です。よろしくお願いします。

  • エクセル・列の選択について

    エクセル2007を使用しています。 1つの列にデータが、とびとびで入力されている場合(空白が数か所ある)、 データが入力されている一番上のセルから、データが入力されている一番下のセルまで、 選択する方法はありますか? または、データが入力されている一番上のセルから、最下位セル「1048576」まで選択する方法はありますか?(A列の場合、A1は空白です) ショートカットキーなどで可能でしょうか? よろしくお願いします。

  • Excelで特定列の検索&書式変更をしたい

    ExcelにてA列に入力されている項目をB列から検索して一致するものがあれば、 セルの色を変えるということをしたいのですが、VBAではどのようなコードになりますでしょうか。 よろしくお願いします。

  • EXCEL 枠固定時の列選択について

    EXCEL2010を使用しています。 E5でウィンドウ枠の固定をした場合、A~D列が固定側になりますが 1行目を含むA1~A3でセルの結合がされている箇所を列選択をすると P列やN列まで範囲選択されてしまいます。 A1~B2,A2~A3,E1~E3で結合されている場合だとこのようなことはおこりません。 あくまで固定側1行目を含む縦結合の時のみ発生します。 これはEXCELのバグでしょうか?

  • エクセル2007で1列おきに列を選択する方法をお教えください。

    A   B   C   D   E   F 個数 金額 個数 金額 個数 金額  など項目を作成します。 1ページに表を抑える為に個数の列だけ幅を小さくしたり、金額の部分の列の幅を大きくしたりして調節したいのですが、毎回A、C、EなどCtrlキーを押しながら選択するのが大変です。 選択範囲を保存してしまえば良いのかも知れませんが、行列を削除したり編集すると大変です。  1列置きや2列置きに簡単に列や行を選択する方法がありましたらお教え下さい。 よろしくお願い致します。

  • ブック全体の文字列検索について

    Excelでセルに任意の文字列をペーストします。そのセルは別のブックにリンクしているのでペーストする度にリンク先のセルでは文字列が更新されます。リンク先のブックにはワークシートが10あっていづれかのシートのA列にその文字列がある事になっています。更新された文字列を検索する作業を繰り返すのでマクロで組み込もうと思ったのですがFIND関数にしても、VBでCell.Find(What:=....と書くにも参照する文字列を直接指定してやらないと動きません。参照する文字列が相対的に変化するので「特定のセルの中に入力された文字列」を参照してブック内を検索したいということなのですが、実現するにはどうしたらようでしょうか?と質問して moji = "B1" Set c = Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then c.Select というコードをしめしていただきました。このままだと検索対象がRangeオブジェクトになっているのでActivesheet上でしか検索がかからないのでCellsにすればブック内のすべてのシートに検索がかけられるかな?と思っていたのですがエラーがでます。ブック内を検索範囲に入れるためにはどうしたらよいでしょうか?

  • Excel VBAでCtrl+Aのようなこと。。

    Excelワークシート上で左上の列と行が交差するところをクリックすると、シート全体が選択されますよね。 もしくはCtrl+Aを押しても同じ動作ができます。 これをVBAで行うにはどうしたらいいのでしょうか?

  • ページ全体を検索して特定文字列を置換する

    まず初めに、ASPカテゴリでも同様の質問をしています。 もしかしたらJavaScriptの方が実現が容易かもしれない、と思いこちらでも質問させて頂くことにしました。 もしマナー違反であるのならば指摘して下さい。 本題ですが、ページ全体を検索して特定の文字列を置換したいのです。 例えば、Index.htmlというページの中から「管理」という文字列を検索し、「<a href=***.html>管理</a>」というように置換したいです。

  • VBA 検索列がエクセル側で選択されない状態で検索

    Columns("B:B").Select Const find_replace = 1849 Application.FindFormat.Clear Application.CommandBars.FindControl(ID:=find_replace).Execute B列を選択し検索ダイアログを表示させています。 このコードだと、Excel上でB列が選択され、パッと見、どこを選択しているかモロばれで、みっともないのですが、 エクセル上でそれが見えないよう、VBAを変更することはできるのでしょうか?