Microsoft Access Club >関数を使いこなす >このページ >次頁 < 前項


どこで実行するの-オブジェクト・マクロ編 : 関数を使いこなす



クエリ、プロシージャと進んできまして、ほぼ最後の牙城、オブジェクトに配置する方法をご紹介します。サンプルとする関数はクエリで使用したものと同じです。下記のように、引数 cur商品 を持つプロシージャです。

Function Zeikin(cur商品 As Currency) As Currency

  '消費税を求めましょう。
    Zeikin = cur商品 * 0.05

End Function

オブジェクトのコントロールソースに配置する

オブジェクトのコントロールソースに配置する方法をご紹介します。

  1. レコードソースに用いるテーブルは以下のようなデータです。
価格
1 \1,233,880
2 \43,390
3 \66,340
4 \112,300
5 \67,721
6 \88,900
7 \36,810
  1. フォームは表形式とします。

  1. 赤丸のtxt消費税テキストボックスのコントロールソース欄に、以下のプロシージャを記述します。
=Zeikin([txt価格])
  1. 引数はtxt価格テキストボックスの値を参照するようになっています。
    この方法は、クエリフィールドに関数を配置する場合と考え方は同じですね。

  1. フォームを表示させると下記のようになります。

このようにすることで、動的なテキストボックスを作成することができます。また、同じようにレポートに使用することも可能です。

オブジェクトのイベントプロパティに配置する

フォームやレポートのイベントプロパティに下記のようにプロシージャを配置させることができます。

標準プロシージャの作成
Function PassWordEnter()

    'パスワード相違の場合、データベースを閉じます。
    Dim strinput As String
    Dim varEnterValue As Variant
    Const PassWord = 1234 'パスワード
    
    strinput = "パスワードを入力して下さい"
    
    varEnterValue = InputBox(strinput)
    
    If PassWord <> varEnterValue Then DoCmd.Quit
    
End Function
記述方法

下図のように、FunctionプロシージャPassWordEnter をプロパティ欄に記述することで、プロシージャを呼び出します。サンプルでは、フォームの開く時イベントが実行される瞬間にPassWordEnterが実行されます。

留意点

この設定方法は、フォームの開く時イベントプロシージャ内に以下のように記述した場合とまったく同じ動作になります。

Private Sub Form_Open(Cancel As Integer)

    'パスワード相違の場合、データベースを閉じます。
    Dim strinput As String
    Dim varEnterValue As Variant
    Const PassWord = 1234 'パスワード
    
    strinput = "パスワードを入力して下さい"
    
    varEnterValue = InputBox(strinput)
    
    If PassWord <> varEnterValue Then DoCmd.Quit
    
End Sub

マクロアクション内でプロシージャを実行する

マクロ内でプロシージャを実行させることができます。以下のサンプルプロシージャ(関数)をご覧下さい。

Function PassWordEnter()

    'パスワード相違の場合、データベースを閉じます。
    Dim strinput As String
    Dim varEnterValue As Variant
    Const PassWord = 1234 'パスワード
    
    strinput = "パスワードを入力して下さい"
    
    varEnterValue = InputBox(strinput)
    
    If PassWord <> varEnterValue Then DoCmd.Quit
    
End Function
記述方法

この関数を、マクロを用いてデータベースが開く際に実行させます。AutExecマクロをご存知ですか?これは、データベースを開く際に必ず実行される特殊なマクロです。

  • Shiftキーを押したまま開くとAutExecマクロは無効になります。

以下、作成手順です。

  1. 新規マクロを作成します。
  2. マクロアクション欄に「プロシージャの実行」を選択します。
  3. 引数のプロシージャ名欄にプロシージャ名を指定します。

  1. マクロを保存します。
  2. マクロ名をAutExecとします。
プロシージャ名の指定方法

プロシージャ名を指定するには、「...」をクリックし式ビルダを用いて行う方法があります。「...」をクリックすると、下図のような 式ビルダのダイアログ画面 が開きますので、 お目当てのプロシージャ名をクリックするだけです。

この式ビルダは、これら以外でも頻繁に呼び出すことができます。そして、便利な機能なので積極的に利用するようにしましょう。

プロシージャを実行種類のまとめ

プロシージャを実行する方法はたくさんあります。ここでまとめておきましょう。

  1. クエリフィールドに組み込む場合
  2. プロシージャ内に組み込む場合(Callステートメントの利用)
  3. フォーム、レポートのコントロールソースに組み込む場合(=関数名)
  4. フォーム、レポートのクラスイベントプロパティに組み込む場合(=関数名)
  5. マクロのプロシージャの実行に組み込む場合

2003/06/13

ページの先頭へ 前ページへ戻る


どこで実行するの-オブジェクト・マクロ編 : 関数を使いこなす


 

-Microsoft Access Club-

年額2,400円でドメインネームサーバーをご用意します。自宅サーバ構築時にご利用下さい。自宅サーバーは応用範囲が広いです。
年額2,400円でドメインネームサーバー。
自社・自宅サーバ構築時にご利用下さい。
やはり、自前サーバーは応用範囲が広いです。