• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AccessのVBAで「イベント」を捉える方法について)

Access VBAでイベントを捉える方法とは?

maruru01の回答

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 おそらくかなり面倒だと思いますが、レパートリーを広げたいということなので、紹介します。 ただし、本に載っていた(しかもVB)だけで、実際に私は試してないので本当に出来るかどうかわからないですが。 やり方ですが、フレキシブルグリッドを使用する方法です。 フレキシブルグリッドは、ツールボックスのその他のコントロールの中の 「Microsoft FlexGrid Control, version 6.0」 を選択して配置します。 このフレキシブルグリッドは、エクセルの表のようなデザインをしています。ただし、ユーザーが直接入力出来ません。 そこで、テキストボックスをグリッドのセルと同じ大きさで用意します。 そして、グリッドのEnterかGotFocusイベントで、 1.どのセルが選択されたかを取得 2.そのセルの上にかぶせるようにテキストボックスを移動 3.テキストボックスにフォーカスを移動 4.テキストボックスにセルの内容を代入 ここでユーザーがテキストボックスに入力し、テキストボックスからフォーカスが移動したらそのExitかLostFocusイベントに 5.テキストボックスの真下のセルにテキストボックスの値を入力 6.グリッドのセルの値(変更後)を元に再計算 仮にテキストボックスからEnterや矢印キーで移動したら、別のセルへ移動して、また1.から繰り返す。 こんな感じです。 要は、いくつ入力欄があっても、実際に入力するのは1箇所だけなので、そこにテキストボックスを持ってきて入力するということです。 細かいところはいろいろ調整しないといけないと思います。 おそらく、全部のテキストボックスのイベントを書く方が、簡単で早く出来ると思いますが、まあ、時間に余裕があったら試してみて下さい。 では。

関連するQ&A

  • VBA ユーザーフォームのChangeイベントを停止したい

    ユーザーフォームのChangeイベントは Application.EnableEvents = Falseで停止できないのですか? シート上のChangeイベントの停止はできましたが、ユーザーフォーム上のテキストボックス等のChangeイベントは停止できませんでした。 ユーザーフォームのChangeイベントを停止する方法があれば教えてください。

  • access2000 vba の テキストイベント取得

    access2000 vbaで、プログラムを組んでいます。 画面にテキストボックス1と、表(あるテーブルの内容をあらわしているもの)があります。 [初心者でこの表のうまい言い方がよくわかりません・・] テキストボックス1は、プロパティの、データ/コントロールソースが、あるテーブルのコードになっています。 このテキストボックス1は表のレコードを選択することにより、内容が変わります。(選択したレコードの、コード値になります。) ここで、テキストボックス1の値が変化したときに、イベントを発生したいのですが、なかなかできません。 change,afterupdateではだめでした。 うまくつたわらないかもしれませんが、手入力以外による値の変化は、テキストボックスイベント検知はできないものでしょうか。

  • テキストボックスに値を入力し終わったらイベントを発

    エクセル2007を使用しています。 アクセスで言う「更新後処理」のAfterUpdateイベントは エクセルのActiveXコントロールのテキストボックスイベントにはないのでしょうか? 例えば、テキストボックスに「aiu」と入力し終わったらイベントを発生させたいのですが、 Private Sub TextBox1_Change() MsgBox "" End Sub にしすると 「a」を入力した時点で、MsgBox が表示されてしまいます。 テキストボックスに値を入力し終わったらイベントを発生させる方法はありますか? VBE画面でシートイベントを見ても AfterUpdateイベントは見当たりません。 ご回答よろしくお願いします。

  • アクセス2010 サブフォーム集計結果を表示させる

    テーブルに連結したメインフォーム取引台帳があります。 メインフォームに、入金台帳と仕入金額予定表のサブフォームが2つあります。 それぞれのサブフォームにテキストボックスで合計を表示しています。 入金台帳が取引合計 仕入金額予定表が支払合計 この2つのそれぞれの合計をメインフォームの詳細にテキストボックスを追加して表示させ さらに集計するためのテキストボックス作って、下記の式を入れたら エラーが出てしまいます。 レポートではうまくできたのですが、計算結果を表示させる方法を教えてください。 原価率を表示したいのです。 =Sum([取引台帳レポートのサブ出金予定入力表].[Form]![支払合計]/[入金台帳入力用].[Form]![取引合計])

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

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

  • JavaScript Eventのタイミング

    Eventの挙動を学ぶために、簡単なスクリプトを作成しました。 テキストボックスに文字列を入れて、Submitボタンを押すと、 テキストボックスの下に(innerHTMLで)入力文字が表示され、 ボタン自体も入力文字になるというものです。 しかし、テキストに文字を入力し、Submitを押してもボタン・innerHTMLともに文字は変化しません。このままリロードをすると変化します。 挙動からして、マウスクリック自体は反応していないが、リロードによりイベントハンドラが動作しているように見受けられます。 イベントハンドラはonclickに代入しているためなぜこのようになるのか わかりません。 できるだけ、JavascriptとHTMLを分離したく外だしのファイルで 実現したいと思っています。 考え方、(比較的平易な)参考資料などありましたら教えていただけないでしょうか? HTMLで<body onload="init()">として、JavaScriptでは以下のように記述しています。 function init(){ document.getElementById("button").click = change(); } function change(){ keyword = document.getElementById("keyword").value; document.getElementById("input").innerHTML = keyword; document.getElementById("button").value = keyword; }

  • ACCESS2007 VBAでのFilterOnについて

    はじめまして。 ACCESS2007 VBAでのFilterOnについて教えてください。 ACCESS2003で、フォーム上でレコードを抽出するのに、FilterOnを使用して行っていました。未連結テキストボックスに入力した文字列をキーにして「抽出」「解除」ボタンで実行してさせていました。連続して「抽出」「解除」を繰り返しても問題ありませんでした。 ところが、ACCESS2007においても実行できるのですが、連続して操作するとうまくいきません。2回目以降テキストボックスに何を入力しても、1回目にテキストボックスに入力した文字列で抽出しまうのです。解決策はあるのでしょうか?

  • エクセルVBA フレーム内のイベント

    フレーム内に、テキストボックスを配置し、 そのテキストボックスをExitした場合にFormatを変更したいのですが、 フレーム内にテキストボックスがあるためかイベントが発生しません。   1) Frame1 の中に Textbox1 を配置   2) Textbox1には数値を入力   3) 入力後、次のコントロールに移動した場合、    Textbox1.textをformat(Textbox1.text,"#,##0")にする   Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)     msgbox "Exit"   End Sub   としましたが、ユーザフォームを終了した時に、msgが出力されます。 フレーム内のイベントはどのようにすればよいか、教えていただきたいです。 よろしくお願いいたします。

  • VBA シートイベント

    シートイベントについて教えて下さい。 A3〜A100まで計算式が入っています。 そのため、A3〜A100のセルにカーソルが動いた時に注意メッセージを表示しています。シートイベントで設定しています。 ファイル保存時、入力漏れチェックのプログラムも入れています。 入力漏れチェック実行時、自動的にA列に設定したシートイベントも実行され、メッセージボックスが表示されてしまいます。 入力漏れチェック時は、A列のシートイベントを実行不可にしたいです。 良い方法はありませんでしょうか。

  • VBAについての質問です。初心者です。

     はじめまして。  VBA初心者です。  よろしければお願いします。  Changeイベントプロシージャを使い  テキストボックス1に  テキストボックス2と3から導き出せる答えを  コマンドボタンを押さずに  数字を入力しただけで表示されるようにしたいのですが。  コマンドボタンを作って、押したとき。  コマンドボタンを作らなくても、  テキストボックス1のところで何かタイピングしたとき。  は表示できるようになったのですが、  2と3に入れただけで  1が表示される  という状態にできません…。  質問内容の説明がわかりにくいと思いますが  補足などもちろん何でもしますので  よろしければご回答お願いします。  現時点で、スペースボタンなど  何かしら1のボックスでタイピングした場合に出る状態は Private Sub TextBox1_Change() TextBox1.Value = TextBox3.Value / TextBox2.Value End Sub  です。