Microsoft Access Club >初心者講座 >CDアルバム管理ソフト >このページ >次頁 - 前項


フォーム全般の手直しの解説 : CDアルバム管理ソフト06



今回で丁度半分の道のりを歩いてきたことになります。長いか短いか皆さん方それぞれにいろんな思いがあるでしょうね。今日は、作成したフォームを更に使い易くするために、いろいろと手直ししてみましょうか。

作成されたフォームを見ていただくと、形だけは「入力フォーム」になったでしょう。入力するフォームは玄関と同じで一番多く通るところですからね。力を注ぎましょう。それではメインフォームからです。

メインフォーム全般の手直し

「アーティスト名」を入力するコンボボックスがありますね。コンボボックスにする理由は、CD収集は気に入ったアーティストを集めることが目的ですので、過去のデータを利用するためです。

これをもう一歩進めてコンボボックスが"フォーカスを取得した時、コンボが空欄であれば自動的にリストが表示される"システムがあれば、メッチャ便利でしょ。Akiraは、コンボにはこの機能が必需品だと思います。

但し、「既定値」を設定されている場合は、「フォーカス取得後」にマクロを配置してください。でないと、リストが立ち上がりません。マクロで作成しますと下記のようになります。

マクロ名: Main

個別マクロ名: アーティスト名

条件: IsNull([アーティスト名]) 'コンボ名を IsNull([コンボ名])に記述して下さい。

アクション: キー送信

キィー操作: {f4} 'ファイクションキィーの F4 を押したときと同じアクションを指示します。

待機: いいえ

これを作成して、コンボの フォーカス取得時 にセットすれば出来上がりです。このようなマクロをコンボボックスごとに作成して、全てのコンボボックスにセットしてください。

IsNull([アーティスト名])は、"アーティスト名という名のコンボボックスに何も入力されていなければ"と云う意味です。

注意点
  • 新規マクロを作成すると、マクロ記述欄に「マクロ名」と「条件」が表示されないこともあります。この場合は「表示」メニューから「マクロ名」と「条件」をクリックして表示させて下さい。

  • 次にマクロかVBAかどちらを使うべきなのかという問いに対しては、断然入って行き易い「マクロ」でしょうねとお答えします。
    今の段階では全く気にしなくていいですが、勉強の方法としては、作成したマクロの動作確認を行って後、マクロをVBAに変換してVBAの勉強を行うのが、短時間でAccessを取得する近道です。

VBAに変換

本題から話が外れますが、上記のマクロをVBAに変換すると下記のようになります。

Private Sub アーティスト名_Enter()

    With CodeContextObject
    
        If (IsNull(.アーティスト名)) Then
        
            'Me![アーティスト名].Dropdownでも結果は同じになります。
            SendKeys "{f4}", False
            
        End If
        
    End With
    
End Sub
 
または、下記のプロシージャでも同じ結果になります。
Private Sub アーティスト名_Enter()

    Me.アーティスト名.Dropdown
    
End Sub

 

良く分からない時(全然分からないと思いますが…)は、調べたい語句をマウスで範囲指定を行い、{f1}を押してください。ペルプが起動します。

マクロからVBAへの変換方法

更にお話しますと、マクロをVBAに変換すると云うことの意味が 2種類あるんです。このようなことは余り解説書に書いていないんです。よく覚えておいて下さい。

データベースウインドにある名前の付いたマクロを個別に変換する方法
  1. 「コメント」と「エラー処理」の有無を尋ねて来ますので、できるだけ 有 にして下さい。

  2. "Functionプロシージャ"つまり"関数"が作成されます。

  3. 作成される場所は、データベースウィンドにある「モジュール」欄です。

  4. 関数とは、つまり"値を返すプロシージャ"でデータベースのどこからでも、この関数を呼び出すことができると覚えて下さい。

  5. 変換したプロシージャは以下のようになります。

  6. 変換したままですと、ファームのイベントに設定しているマクロに対しては何も影響を及ぼしませんので注意して下さい。

  7. よって利用する時は、下記のサンプル画像のように指定します。

 

Function Main_アーティスト名()

    With CodeContextObject
        If (IsNull(.アーティスト名)) Then
            SendKeys "{f4}", False
        End If
    End With

End Function

 

フォームの各種イベントに設定してある「マクロ」を変換する方法
  1. これが解説書でいうところの"マクロの変換"の場合が多いです。

  2. フォームまたはレポート単位での変換になります。

  3. まず、フォームまたはレポートをデザインビューで開いてください。

  4. 次に、「ツール」にある「マクロ」の「マクロをVisual Basicに変換」をクリックして下さい。

  5. 「コメント」と「エラー処理」の有無を尋ねて来ますので、できるだけ 有 にして下さい。

  6. 作成される場所はこの場合フォームで、自動的に「イベントプロシージャ」になります。

  7. この変換方法ですと、"Subプロシージャ"つまりこのオブジェクト内でのみ使用できるプロシージャです。

  8. 関数ではありません。

  9. 出来上がったモジュールは、このページの最初の方に記述したとおりです。

これら違いをしっかり掴んでくださいね。将来きっと役に立ちますよ。それでは話を元に戻します。紙面も少ないんで早足で進みます。

 

新規レコードに移動するアクションマクロの作成

メインフォームを開いたとき常に「新規レコードに移動する」マクロを作ります。「最後のレコード」がよければそのように指定を変えてくださいね。

個別マクロ名: オープン時

   アクション: レコードの移動

      オプジェクトの種類: フォーム

      オプジェクト名: frm_main

      レコード: 新しいレコード 

 

レコード移動時アクションマクロの作成

レコード移動時に実施するマクロを作ります。
これは、移動ボタンをクリックすれば、次ページのフォーカスが常に「入力日」にあるように、また、「アーティスト名」の新規入力があり、次ページで再度同一のアーティスト名をコンボから選ぶために「アーティスト名の再クエリ」を行います。

留意点

この再クエリを行わないと、次ページで表示されません。要注意ですよ。よく皆さん方が間違うところです。

個別マクロ名: レコード移動時

   アクション: コントロールの移動

      コントロール名: 入力日

   アクション: 再クエリ

      コントロール名: アーティスト名

 

その他のマクロアクションの作成

次に、サブフォームに目を転じます。「ランク」と「区分」にも、コンボボックスが "フォーカスを取得した時、コンボが空欄であれば自動的にリストが表示される" マクロを設定します。

 
演奏時間の表示

次に、"フォームフッター"に演奏時間の合計を表示させましょうか。

テキストボックスを作成してください。1個でいいですよ。名前は「総演奏時間」とでもして、「使用可能」を"いいえ"「編集ロック」を"はい"にして下さい。その「コントロールソース」に =Sum([演奏時間]) と記入するとOKです。

これで、入力フォーム自体は体裁良くなったと思いますよ。あとはその都度修正していきましょう。バグはアプリの作成に付きものですからね。気長に…。

 

マクロ条件欄の...(ドットを3個)の使い方

マクロに関してのことですが、条件式での"..."(ドットを3個)の使い方です。

この説明も解説書に記載されていることが少ないんですが、"..."を入れると上段の条件式が引き続いて実行されます。これは大事なことですから、覚えましょう。

 

下記のマクロアクション事例で解説しますと、

アーティスト名が空欄でなければ、メッセージを表示し警告音も鳴らす。そして、コントロールを移動させる。しかし、空欄であればマクロを中止する。

となります。

しかし、下記のように"..."を条件から外すと、実行されるマクロアクションが変わります。

アーティスト名が空欄でなければ、メッセージを表示する。しかし、空欄であれば警告音を鳴らし、コントロールを移動させ、マクロを中止する。

となります。ほぼ正反対のアクションになるでしょう。

この"..."の使い方は、チョット複雑なマクロ作成時に必要となります。要注意です。

 

次回からは入力フォームを離れて、データをいろんな角度から眺めてみようと思いますので、データをどんどん入力して置いて下さい。

では、今日はこのへんで…、またお会いしましょう。お楽しみに………

 

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

 


フォーム全般の手直しの解説 : CDアルバム管理ソフト06


 

-Microsoft Access Club-