• ベストアンサー

エクセルシート上でのイベントの発生について

エクセルシート上で、マクロを起動させたいのですが、フォームや、ボタン等で、マクロを起動させるのでは無く、セルの変更やダブルクリックでイベントを発生させたり、マクロを起動させる事は、できるでしょうか?

  • ku_s
  • お礼率0% (0/2)

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

ワークシートに対応のイベント セルの値の変更 Worksheet_Changeイベント ダブルクリック Worksheet_BeforeDoubleClickイベント 右クリック Worksheet_BeforeRightClick 異なるセルの選択 Worksheet_SelectionChangeイベント ワークブックに対応のイベント 開いたとき Workbook_Openイベント 閉じる前 Workbook_BeforeCloseイベント 印刷前 Workbook_BeforePrintイベント

ku_s
質問者

補足

早速のご回答ありがとうございます。 追加の質問ですが、Workbook内の特定のシートのみでイベントを発生する事はできるでしょうか? コードの表示で、上記のイベント表示は確認いたしました。 よろしくお願いいたします。

その他の回答 (1)

noname#187541
noname#187541
回答No.2

こんばんは。 マクロを起動させたいシートのシートモジュールのイベントにマクロを書けばいいでしょう。 まとめたいのであれば、ThisWorkbookモジュールに Workbook_SheetChange等どのシートで発生しても捕まえられるイベントがあります。 このイベントでシート名をチェックすればシートを限定できます。

関連するQ&A

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

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

  • Excel shape イベント

    お世話になります。 Excelマクロについて質問です。 バージョンは2010です。 Excelのあるシートにshapeオブジェクトがいくつも配置されており、そのある一つのshapeをダブルクリックしたときに、ある関数を動かす、といったイベントを設定したいのですが、やり方がわかりません。 BeforeDoubleClick等はありますが、それらはすべてアクティブシートのセルに対するイベントなため、私のやりたいことが満たされません。 私のやりたいこと… shapeをダブルクリックし、ユーザーが任意で名前を変えたり削除できるようにしたい。 また、右クリックによるコンテキストメニューの項目追加という方法でも問題ないのですが、excel2010での独自メニュー追加が不可能になったという記事を見ましたので、方法に困っています。 上記2つの方法で、わかる方、または他に良い方法がわかる方、ご返信お願いいたします…(;_;)

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

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

  • エクセル イベントマクロについて

    エクセル2002です。 同じ形式で行数のみ可変とする表形式のシートがあります。 その表に入力した行数に応じて印刷する用紙を ユーザー設定(最小) →A5 横 →A4 縦 (最大) と手作業で変更させるのが面倒になったので、行数を数えて用紙を変更するマクロを標準モジュールに記載し、ボタンからそのマクロを起動して使用しています。 これを何らかのイベントマクロにして、ボタンからの起動をなくしたいのですが、どのようなイベントが良いでしょうか? ・行の複写挿入/削除で行数を増減させています。 ・目的の動作をしたいシートはひとつのブックに20余りあります。 シートモジュールの場合全てのシートにコードを記載することになるのでしょうね・・・ モジュール/イベント名をご指導いただきたく、お願いします。

  • イベントが発生しません・・・

    Excel VBAでの質問です。 フォーム上にコントロールはTextBox1つしかありません。 商品コードを入力させ、入力値より商品データを検索、編集させようと思います。 コードを入力しエンターキーを押しても、フォーカスの移動場所が無いためかExitイベントが発生しません。 閉じるボタン[×]でフォームを閉じると、Exitイベントは発生するようです。 入力後はフォームは閉じてもかまいませんが、イベントを発生させることはできるでしょうか。 どなたか教えてください。

  • Accessのフォームのイベントについて

    Accessのフォームをデータシートビューで開き、表示されたレコードを選択後、 セレクタのダブルクリックで、その詳細を別フォームで表示させます。 セレクタのダブルクリックで、フォームのダブルクリックイベントが発生するので、別フォームを開くことは問題ないのですが、 データシートビューのせいなのか、ラベルの部分(標題?)のダブルクリックでも、イベントが動作してしまいます。 セレクタのダブルクリックのみで処理をさせたいのですが、 フォームのダブルクリックイベント内で、セレクタがダブルクリックされたかどうかを判定する方法がありますでしょうか? よろしくお願いいたします。

  • EXCELマクロ 保護されているシートのダイアログを表示させない方法

    いつもお世話になります。 EXCEL2000のマクロについて質問です。 ボタンでシート保護や保護の解除をしています。 (データ確定後に変更させないため) 保護されているときにシートをダブルクリックとすると EXCELより「変更しようとしているセルまたはグラフは保護されているため読み取り専用となっています。・・・変更するには・・・」 のメッセージが表示されます。 このメッセージを表示したくない場合はどうすればよいでしょうか。 Application.DisplayAlerts = False ではできませんでした。 EXCEL2002以降ではロックされたセルの選択の許可のチェックを外すことでできそうなのですが、2000にはそのような選択肢がありません。 どうぞ宜しくお願い致します。

  • エクセルVBAのイベント起動について

    エクセルVBAのマクロのイベント起動について質問があります. セルのある特定の範囲(例えばA1:B6)のセルだけの値変更時に反応して,マクロ(例えば sub calcu)を起動させたいのですが,方法がわかりません. どなたか教えてください.

  • 「セルをダブルクリックしたら」イベント VBA

    エクセルのシートのイベントで、「セルをダブルクリックしたら」 というのはないですか? ここになければないのでしょうか?

  • エクセル2003VBAで、スプレッドシートのシート変更イベントを教えてください。

    エクセル2003VBAで、スプレッドシートのシート名「Sheet1」のところをマウスで「Sheet2」「Sheet3」と変更したときに、セルA1の値を取得するイベントを発生させたいのですが、 Private Sub Spreadsheet2_sheetchange() の()の中身をどう書いたらよろしいでしょうか? ご存知の方、教えてください。 よろしくおねがいします!

専門家に質問してみよう