• ベストアンサー

EXCEL VBAのイベント発生方法について

EXCEL VBA でセルの値を変更したら、計算をするプログラムを作りたいのですが、入力を入力規則でリストから選択する方法をとると、選択項目を変更してもWorksheet_Changeのイベントが発生しません。発生させる方法は有りますか?

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

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

#1です。 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=8095;id=excel という記事を見つけました。 バージョンによる、特殊な例かも。

ken-nosuke
質問者

お礼

再度のご連絡ありがとうございます。 EXCEL97を使用していますので、それに当てはまるのだろうと思います。 今回の場合は、コマンドボタンを1個追加して、必要に応じボタンを押せばよいので、これで対応しようと思います。

その他の回答 (2)

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

Sheet1のタブ部で右クリックして「コードの表示」クリックで出したVBE画面で Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "aaa" End Sub を入れて Sheet1のシートで 範囲指定 データー入力規則ーリストー選択する値の在るセル範囲指定ーOK 設定したセルでドロップダウンで値を選ぶとMsgBox "aaa" がでたが。 ーー データを選択して入れているシート名と、イベントを入れているシート名は食い違ってないかな。 ーーー VBAで値セルに設定すると反応しない例の経験の記憶があるが、どんな場合か直ぐ思いつかない。

ken-nosuke
質問者

お礼

ご指導ありがとうございます。 1)入力セルと、リストの元データシートは同一です。 2)貴ご提案のMsgBox表示で試してみましたが同じ結果でした。  ただし、入力したセルをDeleteで削除すると、Changeイベントが発生し、"aaa"が表示されました。 私は、Excel97をWinXPで使用しています。バージョンの違いによる動作の違いがあるのでしょうか?

  • red0176
  • ベストアンサー率22% (22/97)
回答No.1

入力規則はリストを使ってるって事ですか? それもVBAで書けばよいのではないでしょうか?

ken-nosuke
質問者

お礼

ご指導ありがとうございました。 EXCEL97にはバグがあるようなので、イベントを自動で発生させる代わりに、コマンドボタンを押すようにしました。

関連するQ&A

  • Excel VBA Worksheet_Change イベントについて

    Excel VBA Worksheet_Change イベントについて質問です。 セルH8とI8を結合し、入力規則よりリストボックスを配置しました。 本シートにWorksheet_ChangeをVBAで作成しましたが、 セルH8:I8をDeleteすると実行時エラー13が発生します。 If Target = "" then exit sub end if や If Target.value = "" then exit sub end if や If Target <> "" then 処理 end if としても対処できませんでした。 よい対処方法のアドバイスよろしくお願いします。

  • VBAのイベントについて・・・

    エクセルのVBAで、エクセルのツールバーのデータの中の入力規則で、リストとゆうのに設定しました。 そして、私はエクセル2000の開発環境で、リストから入力されたらマクロのチェンジイベントが発生するようなものを作りました。しっかり動きました。 しかし、それをエクセル97の環境で動かしてみると全くイベントとして認識されないのです。 エクセル97だからリストから入力するとゆうイベントが発生しないのか、他に違う理由があるのか誰か教えてくださ~い。 あと、エクセル97と2000以外で入力規則のリストからの入力をイベントとして認識できるかどうかを試せる方がいれば教えていただきたいです。 よろしくお願いします。

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

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

  • エクセルのvba

    こんにちは いつもお世話になります 早速ですがエクセルのVBAでわからないことがあります ある特定のセルを書き換えてENTERを押したときに イベントを発生させるにはどうすればよいのでしょうか Worksheet_Changeではどのセルを書き換えてもイベントが 発生してしまいます 素人ですみません 教えてください お願いします

  • エクセルのVBAでリストに値をセット

    Office2003 エクセルのVBAのプログラムで入力規則のリストを 生成できるような関数、方法はありませんか? このセルで選択された値に紐づいたデータ郡を次の(横の)セルで プルダウンリスト(入力規則のリスト)を自動生成するというものです。 今回フォームの機能(コンボボックスなど)は使用しません。 よろしくお願いいたします。

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

    エクセルでスピンボタンを使って数値を上下させたときに イベントマクロを発生させたいです セル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だと無理なので、どうしたらいいでしょう わかりにくい説明で申し訳ありません

  • ExcelにおけるDDEデータのイベントプロシージャについて

    DEEをつかって、Excelのセルにデータを出力しています。 そのセルのデータが変更された時に、自動でそのデータをコピーし別のシートにペーストしたいのですが、よろしければ助言をお願い致します。 イベントプロシージャの(worksheet_change)で試してみたのですが、任意でセルの値を変えないとプロシージャが動かず行き詰りました。 VBAも超初心者なのですが、よろしくお願い致します。

  • Visual Basic 6.0 コンボボックスのChangeイベントが発生しません

    VB6.0を使用しておりますが、 コンボボックスのリストから選択して値を変更しても Changeイベントが発生しないです。 コンボボックスの入力欄に直接入力した場合はChangeイベントは 発生します。 リストから選択して、Changeイベントを発生されるには どうしたら良いでしょうか?

  • エクセルVBAのコンボボックスについて

    エクセルVBAでActiveXコントロールのコンボボックスを配置して以下の プログラムを記述しているのですが、 コンボボックスでAを選択した後に、もう一度Aを選択したときに イベントが発生しません。 Private Sub ComboBox1_Change()ならイベントが発生しないのは 分かるのですが、Clickの場合は、選択された値が変わらなくても イベントが発生すると思ってたのですが。 VB6では問題なく発生しています。 ちなみにセルの入力規則ではなくてコンボボックスで実現したいです。 Private Sub ComboBox1_Click() 'ここに処理を記述 End Sub

  • VBAで入力規則のリスト参照元の値取得

    エクセル2007を使っています。 VBAツールを作っており、その処理で使われる一機能として 「任意のセルに設定されている入力規則のリストの元の値をVBAで取得する」処理を コード中に書きたいと思っております。 ■質問概要  「入力規則のリスト」が設定されている任意のセルを選択したときに、そのセルに設定されている  「入力規則のリスト」の「元の値」をVBAで取得する方法について教えてください。  ※取得した値は配列型の変数に代入するものとします ■想定イメージ  たとえば、次のようなブックで使うことを想定しております(画像参照)  ※実際はもっとデータ量が多いブックで使う予定です  ・「リスト元の値」というシートで「選択言語」という名前でリストを定義化  ・「通常操作するシート」では値を入力したいセルに対し、「入力規則のリスト」の「元の値」を   「=選択言語」で設定  VBAではこの「通常操作するシート」の入力欄のセルを選択している時に「選択言語」で定義されている  データをすべて取得し配列型変数に代入するという動作をさせたいと思っています。     この方法について教えてくださいますようお願いします。

専門家に質問してみよう