プロが教えるわが家の防犯対策術!

もうフォームモジュールにイベントは出来上がってるのですが
コントロールの名前を変更したため
デザインビューのプロパティの[イベント プロシージャ]と言う文字が消えてしまいました。

フォーム上の全てのコマンドボタンのクリック時に
[イベント プロシージャ]と言う文字を入れたいのですが
そのような作業は可能でしょうか?

[イベント プロシージャ]と言う文字が入れば、該当のイベントは既にモジュールにある為
イベントとして機能します。

「アクセスvba [イベント プロシージャ」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (2件)

もしかして、[埋込みマクロ]だったのではありませんか


添付されたものの[その他タグ]で名前を確認して
その他タグに戻って、
クリック時の右端の[…]で
名前が[コマンド1]なら

Private Sub コマンド1_Click()

End Sub

この[Private Sub]から[Private Sub]の間にコーディングします

これがVBAの基本です。

ボックスには、標題と名前があります。
コマンドボタンもボックスの仲間です。
テンプの書式タグに標題が、その他タグに
名前があります。
標題はそのボックス内に表示されます
名前はそのボックス名です
何れも変更は可能ですが
一つのフォーム内で
標題は重複が許されますが、
名前は重複は許されません

尚、イベントはコマンドボタンだけでなく
他のボックスでも可能です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/11/14 22:23

[イベントプロシージャ]と書くことで動作するのではありません。


呼び出すプロシージャが存在し、関連付けされることを示すものです。

オブジェクト名の変更前後の関連が把握できているから
プロパティウィンドウを掲載してるからフォームを開いて
オブジェクトを選択した状態にありますね?

そのまま、F7キーを押下して[コードビルダー]を選択。
VBEが開かれ、(新)オブジェクト名のClickイベントが作られます。
(旧)オブジェクト名のイベントの”中身だけ”を(新)オブジェクトのイベントに
コピペかカット&ペーストしてすればOK。
[イベントプロシージャ]が復活します。

(旧)オブジェクトのイベントはほっといても削除してもどちらでもお好きに。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/11/14 22:23

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスのイベントプロシージャが実行できない

他の人から作ったアクセスを実行する時、ログインフォームが立ち上げられたけど、ログインフォームにある「ログイン」ボタンを押しても、何の反応もなかったです。デバッグしてみようと思うが、VBAの「ログイン」ボタンをクリックする時の関数にブレークポイントを入れて、「ログイン」ボタンを押しても、この関数はまったく実行されないです。原因は思い当たらないです。
アクセスの初心者ですが、どの方がぜひ助けてください。

Aベストアンサー

フォームのデザイン画面でログインボタンのプロパティを調べて、クリック時が[イベント プロシージャ]になっているかを調べる。
右側の[...]ボタンを押して、その関数の位置に飛ぶか調べる。
後はそもそもマクロが無効になっていないか?
などを調べてみては?

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QAccess 別フォームへの再クエリ(更新)がしたい。

宜しくお願いします。

仕様環境:WinVISTA Access2007

別フォームから別フォームへの再クエリの仕方を教えてください。

画像を貼らせて頂きます。
まず、後ろのメインフォームから新規作成ボタンを押して、
別のフォーム(作成画面)を開きます。
そこに新しいデータを入力して、閉じますと、
そのままではメインフォームには反映しません。
(テーブルには反映していますが)

別フォーム(新規の作成画面)に再クエリをかけても
そのフォームが更新させるだけで、メインフォームに変化はありません。

ちなみにメインフォームに作った更新ボタン(中身は再クエリ)を押すと反映されます。

どうしたら別フォームから後ろのメインフォームを再クエリ(更新)できるのでしょうか?


やりたいことは別フォームのOKボタン(画像参照)を押すと
別フォームが閉じると同時にメインフォームが再クエリ(更新)されるとベストです。
(今のところOKボタンの中身は”閉じる”のマクロだけです)

構造は簡単で恐縮ですが、
テーブル:Tメイン
フォーム:メインフォーム
     作成画面フォームetc..

です。
クエリはメインフォーム自体にクエリビルダを使っていますが、
特別な施しなどはしていません、うまく動作しないところがあって、
いろいろ調べていてそうすると改善すると書いてあったので。。

ちなみにテーブルには「日付」の後順で並び替えをかけています。

当方、VBAに弱いのでマクロで操作できるのでしたらお願いします。
マクロで出来ないものでしたらVBAを教えて頂ければ、
イベントプロシージャに書き込みます。

大変恐縮ですがお知恵をお貸しください、宜しくお願いします。

宜しくお願いします。

仕様環境:WinVISTA Access2007

別フォームから別フォームへの再クエリの仕方を教えてください。

画像を貼らせて頂きます。
まず、後ろのメインフォームから新規作成ボタンを押して、
別のフォーム(作成画面)を開きます。
そこに新しいデータを入力して、閉じますと、
そのままではメインフォームには反映しません。
(テーブルには反映していますが)

別フォーム(新規の作成画面)に再クエリをかけても
そのフォームが更新させるだけで、メインフォームに変化はあり...続きを読む

Aベストアンサー

連投すみません。
・・というか、私も「削除されました」というのを見て一旦中止してました。
(中止した場合も含めて、回答はメモ帳で保存しているので無事でしたが)

> どうしたら別フォームから後ろのメインフォームを再クエリ(更新)できるのでしょうか?

マクロの場合は、「オブジェクトの選択」アクションで対象フォームを選択した後、
「再クエリ」アクションを行えばOkです。
なお、「作成画面」フォームも連結フォーム(レコードソースが指定されたフォーム)と
いう前提で作成しました。

【1行目】
アクション: 閉じる
  オブジェクトの種類: フォーム
  オブジェクト名: 作成画面
  オブジェクトの保存: 確認
  ※今回の内容・順序では、オブジェクトの種類と名前は空白でも可。
   (指定なしの場合、現在のフォームが閉じられるので)
【2行目】
アクション: オブジェクトの選択
  オブジェクトの種類: フォーム
  オブジェクト名: メインフォーム
  データベース ウィンドウ内: いいえ
【3行目】
アクション: 再クエリ
  コントロール名: (空白のままにします)

<解説>
メインフォームを再クエリする前に、作成画面側のデータを保存してやる必要が
あります。
ここでは、「閉じる」アクションによって、実質的なレコード保存を行っています。
順序を逆(オブジェクトの選択→再クエリ→閉じる)では、メインフォームには
反映されないのでご注意下さい。

連投すみません。
・・というか、私も「削除されました」というのを見て一旦中止してました。
(中止した場合も含めて、回答はメモ帳で保存しているので無事でしたが)

> どうしたら別フォームから後ろのメインフォームを再クエリ(更新)できるのでしょうか?

マクロの場合は、「オブジェクトの選択」アクションで対象フォームを選択した後、
「再クエリ」アクションを行えばOkです。
なお、「作成画面」フォームも連結フォーム(レコードソースが指定されたフォーム)と
いう前提で作成しました。

【1...続きを読む

QMS Accessでフォームの「開く時」と「読込み時」のイベントの違い

Accessでフォームのイベントに「開く時」と「読込み時」のイベントがありますが、どのような違いがあるのでしょうか?
例えば、フォームのドロップダウンリストのリストのソースを変更するプログラムを「開く時」に設定していますが、「読込み時」だとまずいんでしょうか?
今は、問題なく動いているので結果オーライなんですが、ちょっと気になります。
特にフォームのテキストボックスにプログラムの条件で初期値を入れるときなどはどっちのイベントでやるのが正しいのでしょうか?
今はどっちでやってもうまく動いているのですが。
よろしくお願いいたします。

Aベストアンサー

イベントの発生順は
Open → Load
です。
また、Open はキャンセルできますが、Load はできません。
ドロップダウンリストのリストを変更しようとしてエラーが発生した場合にはフォームを開かずにおくようにするのであれば Open イベントに記述しなければなりません。
キャンセルする必要がなければ、どちらでもよいと思いますよ。どちらが正しいということでもないように思います。

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

Qカレントレコードが無い事を判定させる方法

SQLを使ってmdb内のレコードセットを取得し、
無かったらエラーを返す、という処理を作成
する場合、カレントレコードが無い事を
判定するにはどうすれば良いでしょうか?
イメージは下記のような感じです。

レコードセット as DAO.Recordset

'レコードセット取得
 Set レコードセット = db.OpenRecordset(作成したSQL文)

'判定
If カレントレコード無 Then
MsgBox "エラーメッセージ"
Exit Sub
End If

Aベストアンサー

カレントレコード無は"レコードセット.RecordCount = 0"
で行けませんか?

QAccessからExcelファイルのデータ取得

Access2000かExcelファイルのデータを取得したいのですが、
Excelファイルを一度 CSVファイルに変換し、その後Accessのテーブルへデータ取り込み といった手順をとりたいのです。
この方法って、どうコーディングすればいいのですか?
(Accessのインポート処理は使用しない方法です)

Aベストアンサー

VBAの基本的なことはご存知ですか?
でしたら、
1.Accessで対象のExcelファイルを選択
2.AccessからExcelを制御してCSVにコンバート
3.出来たCSVファイルをAccessに取り込む(テキスト取り込み インポート定義を使うと簡単)
この順序で行えばOKです。
ExcelでVBAを書くことで制御する方法もありますが、
Access側からExcelを制御する方がやりやすいと思います。

Qアクセスからエクセルのシートを追加して、名前をつける方法

アクセス2000で、ある所定の条件を満たした時に、規定の場所にあるエクセルファイルの先頭から2番目に空のワークシートを追加し、そのシート名を変数に格納されている値でリネームしようとしております。結構急務なんですが、excel.application~等使っても出来ませんでした・・・。プロフェッショナルな方、誰か方法を教えていただけないでしょうか?よろしくお願いします。

Aベストアンサー

こんにちは。

急ぎということで、取り急ぎで作ったコードです。目的の処理以外は一切おこなっていませんので、カスタマイズしてください。

また、処理速度の点で実行時バインドではなく、参照設定を予め行って下さい。


Option Compare Database

'要参照設定:Microsft Excel x.x Object Library
Sub AddXLWorksheet()

  Dim xlApp As Excel.Application
  Dim WB As Excel.Workbook
  Dim SH As Excel.Worksheet
  Dim strXLfile as stirng

  strXLfile = "C:\TEST.xls" 'Excelブックフルパス

  Set xlApp = Excel.Application
  With xlApp
    .Visible = True
    Set WB = .Workbooks.Open(strXLfile)
    'シートを3番目に追加
    Set SH = .Worksheets.Add(After:=WB.Worksheets(2))
    'シート命名
    SH.Name = "aaaaa" 'ここを変数で渡せば良い
  End With

  Set SH = Nothing
  Set WB = Nothing
  Set xlApp = Nothing

End Sub

こんにちは。

急ぎということで、取り急ぎで作ったコードです。目的の処理以外は一切おこなっていませんので、カスタマイズしてください。

また、処理速度の点で実行時バインドではなく、参照設定を予め行って下さい。


Option Compare Database

'要参照設定:Microsft Excel x.x Object Library
Sub AddXLWorksheet()

  Dim xlApp As Excel.Application
  Dim WB As Excel.Workbook
  Dim SH As Excel.Worksheet
  Dim strXLfile as stirng

  strXLfile = "C:\TEST.xls" 'Excel...続きを読む


人気Q&Aランキング