Excelのセル変化イベントとデータチェックマクロについて

このQ&Aのポイント
  • Excel2000とExcel2010で動作するVBAマクロについて説明します。シート上に配置されたコマンドボタンを押下することで、マクロが実行され、セルの内容をチェックし、不正があれば赤くなります。また、セルに新しい値が入力された場合にはセルが白くなります。しかし、Excel2000とExcel2010では、特定の操作において動作が異なります。詳細な手順とそれぞれの動作について説明します。
  • 手順は以下の通りです。まず、任意のセルでF2キーを押下し、編集モードにします。次に、編集モードのままデータチェックのコマンドボタンを押下します。Excel2000ではコマンドボタンが押せないという問題が発生しますが、Excel2010ではコマンドボタンが押せ、データチェックマクロが実行されます。しかし、直後にWorkbook_SheetSelectionChangeイベントが発生し、セルがすぐに白くなってしまいます。
  • Excel2000とExcel2010で動作内容を合わせるためには、編集中のセルが存在すればマクロを実行しないようにする方法を考える必要があります。しかし、編集中のセルかどうかを判断する方法は何か考えなければなりません。
回答を見る
  • ベストアンサー

Excelのセル変化イベント

Excel2000及びExcel2010で動作させるVBAマクロを作成しております。 シート上にコマンドボタン配置し、データチェックを行うマクロを登録してあります。 任意のセルにデータを入力し、コマンドボタンを押下することで マクロが実行され、セルの内容をチェックし、不正があればセルを赤くします。 また新たにセルに値が入力されたときにはセルを白くしています。 ※セルに値が入ったことを認識するためにWorkbook_SheetSelectionChangeのイベントを利用しています。 基本的には問題なく動作するのですが、 下記の場合、Excel2000と2010で動作が異なって困っています。 ★手順 (1)任意のセルで”F2"キーを押下し、編集状態とする。 (2)そのままの状態でデータチェックのコマンドボタンを押下する。 【Excel2000の場合】 コマンドボタンが押せない。 【Excel2010の場合】 コマンドボタンが押せる。 このとき、データチェックのマクロがまず実行され、 セルの内容に不正がある場合は赤くなるが、 直後にWorkbook_SheetSelectionChangeイベントが発生し、 「新しい入力」と判断してセルがすぐに白くなってしまう。 =>一瞬セルが赤くなるがすぐに白くなる。 なんとかExcel2000と2010とで動作内容を合わせたいのです。 そこで、コマンドボタンが押下されたとき、 編集中のセルが存在すればマクロは実行しない・・・という方法を考えましたが、 「セルが編集中」であるかはどのようにして判断すればよいでしょうか?

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

  • ベストアンサー
  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

2010を持ってないので、試せないんですが。アイディア程度に… ツールバーの使用可否チェックしたら出来ないかなと@下記参照(お仲間ですか?) http://questionbox.jp.msn.com/qa6649067.html あと、先にイベント処理しちゃう手もあるんじゃ?挙動は同じにならないですが…  Selection.Offset(1,0).select 'もしかしたらココでChangeイベント発生  DoEvents 'Selectで発生しないなら、コチラで呼び出し

関連するQ&A

  • EXCEL2010でセルが編集中かを判定する方法

    EXCEL2010でセルが編集中(ダブルクリックやF2が押下された状態)が わかる方法ってあるのでしょうか? VBAでマクロを作成しているのですが、 セルが編集中の場合はボタンを押下できないようにしたいのです。 EXCEL2000だと勝手にボタンが押下できない状態になっていますが、 EXCEL2010だとボタンが押せてしまい困っております。 ちなみにいろいろ調べたのですが、EXCEL2000ではセルが編集中かは わからないみたいです(私の調べ方が悪いかも知れませんが、、、) どなたがご教授願います。 よろしくお願いします。

  • EXCEL あるセルに数字が入力されれば既存マクロ実行させたい

    ボタン等のグラフィックオブジェクトのマクロ実行は簡単なのですが、 ある位置のセルにデーターが入力されれば、 既存のマクロを自動実行させることできますか?

  • EXCELでセル入力後の移動について

    教えて下さい。 WinXPproでEXCEL2003を使用していますが、任意のセルに入力後Enter押下すると今までと相違する移動となり、矢印キーで下を押下するとシート毎移動します。ツールのオプションの編集で確認すると、「入力後にセルを移動」するのは「下」となっています。特段変更はしていないはずですが。教えて下さい。

  • EXCELのマクロ。セルが選択されているかどうか。

    Excel2000のVBAでセルが選択されているかどうかチェックしてセル以外の画像などが選択されていればエラーメッセージ、そうでなければマクロを実行させるにはどう書けばいいのでしょうか?

  • ExcelVBA セルの範囲を選択

    現在、ユーザーフォーム上のコマンドボタン押下にてインプットボックス(Type:=8)を表示し、シート上のセル範囲を選択するマクロを使用しています インプットボックスを介さず、コマンドボタン押下からセルの範囲選択が出来る、ということはできるでしょうか?

  • excelで セルの移動時にマクロ実行を設定したい。

    エクセルでボタンオブジェクトを作りクリックすると実行するようなマクロのを登録方法はわかるのですが、特定のセルB2に数値を入力してEnterKeyを押した際に実行するようにマクロを登録するにはどうするのでしょう。マクロの編集画面で 最初の行が Sub となっていますが、あそこに何かをいれたらいいのでしょうか?教えてください。よろしくお願いします。

  • Excelのセルの内容をコマンドプロンプトで実行

    Excel VBA初心者です。 Excelのセルに記入されている文字列をコマンドプロンプトで実行する方法を教えて下さい。 具体的には、 A1 → d: A2 → cd hogehoge A3 → dir とセルにそれぞれ記入されていたとして、フォームから作成したボタンを押下すると A1~A3が順番にコマンドプロンプトで実行(貼り付け)されるマクロの作り方が知りたいです。 ロジックは以下のようにしたいと考えています。 セルA1に値 →ない→ 「値がありません」というエラーのポップアップか何かを表示。 ↓ある セルA1に記入された文字列をコマンドプロンプトで実行 ↓ セルA2に値 →ない→exit ↓ある セルA2に記入された文字列をコマンドプロンプトで実行 ↓ セルA3に値 →ない→exit ↓ある 以下ループ わかりにくいかもしれませんが、よろしくお願い致します。

  • Excelで同一セル内に入力されているデータを他のセルに分割したい

    こんにちは。 宜しくお願い致します。 エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。 A1セル~A100セル…という風に、縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されているイメージです。 それぞれのセル内のデータを… 例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたいと思っています。 以下のセルも同様に、挿入→分割といった感じで全データを分割させたいのです。 OKWave内でもチェックして、 http://okwave.jp/qa1927817.html?ans_count_asc=2 や http://okwave.jp/qa4216384.html など、近いものはいくつか見つけたのですが、ピッタリのものが見つからず、マクロの編集もよくわからなかったのでこちらで質問させてもらいました。 どなたか申し訳ありませんが、教えていただけますか? 宜しくお願い致します。

  • 【エクセル】マクロでのセル移動についてお尋ねしたいのですが。

    エクセルで、行数の異なる複数の列に大量のデータを入力しています。 「マクロ実行用のボタン」を1つ作って、そこをクリックする度に、 例えば、セルを「B2」→「C2」→「D2」→「B2」→繰り返し のように順番に選択するといった、マクロを作りたいのですが、詳しい方、アドバイスお願いします!

  • セルをコマンドモードに変えるShortcut

    Excel2010を当方、使っています。作業する際に、セルをコマンドモードに変えるためのショートカットが見つからないので、困っています。ご存知の方がいらっしゃれば、助かります。 コマンドモードは、選択しているセル全体の書式を変えるのに使うため、レイアウトを作成して、見た目を良くするために、頻繁に使います。 でも、選択セルをこのモードに変えるためのショートカットが、検索してもなぜか見つからないので不思議に感じています。 ちなみに、現在がどのモードであるかは、Excelの左下に表示されています。 セルが選択されている状態で、F2を押すと、 ・コマンドモード→入力モード ・編集モード→入力モード ・入力モード→編集モード に変わります。ですが、コマンドモードに変えるのは、マウスをクリックしないといけないため、ショートカットがあればいいと思って探しているのですが、ネットで検索しても見つからなくて、不思議に思っています。 私自身、今は[Alt]+[F2]で、「名前を変えて保存」を選択  ↓ [Esc]でキャンセル という手順を取ることで、コマンドモードに変更していますが、保存の画面が現れるまでに、時間がかかることがあるので、あまりショートカットにはなってないです。 マクロを使わないとダメということなのでしょうか。 私はExcelの場合、マクロは記録マクロしかできないし、記録マクロを作ってもうまくいきませんでした。 コマンドモードにするのを、ショートカットを一発でできる方法か、マクロで設定するためのプログラムを提供してくださる方がいらっしゃれば、助かります。よろしくお願いします。

専門家に質問してみよう