Microsoft Access Club >SampleFile Q & A >インデックス >このページ >次頁 < 前項  サイト内検索


Q&A-005 レコード追加プロパティの切り替えの一例--レコード追加について



Access Club 超初心者 BBS
タイトル : レコード追加について
記事No : 6477
投稿日 : 2003/04/14(Mon) 16:20
投稿者 : なお

OS:WinMe
Access Version:97

ご質問です。
フォーム上に「レコード追加」というボタンがあります。
現状はマウスでクリックするか、Tabでレコードの追加まで移動させてEnterを押すと、レコードの追加が実行されます。
ある特定のキーを押すだけで(Ctrl+Altなど)レコードが追加できるようにするにはどうしたら良いのでしょうか?
 


>ある特定のキーを押すだけで(Ctrl+Altなど)レコードが追加できるようにするにはどうしたら良いのでしょうか?

Ctrl+Altキーが押されたかどうか、「キークリック時イベント」を利用します。問題は、Ctrl+Altキーの把握と動作付与です。

実現するために、「キーボード取得プロパティ」を利用して、キーボード上のCtrl+Altキーがクリックされたなら、特定のプロシージャを実行させます。サンプルでは、これらキー操作以外にも、コマンドボタンのクリックで切り替わるようにしています。

標準プロシージャAddChangeの作成

フォームのクラスモジュールに下記のプロシージャを記述します。

Option Compare Database
Option Explicit

'値を保持するために、外側に変数定義しています。
Dim ChoiceBottom As Boolean
Sub AddChange()

On Error GoTo err

    Dim strmsg As String
    
    ChoiceBottom = Not ChoiceBottom 'True、Falseを切り替えます。
    Me.AllowAdditions = ChoiceBottom '「データの追加」を許可します。
    
    If ChoiceBottom = True Then '標題を変更します。
        strmsg = "レコード追加:OK"
    Else
        strmsg = "レコード追加:No"
    End If
    
    Me.Cmd_ボタン.Caption = strmsg
    
    'コマンドボタン、ラベル限定なら下記プロシージャでも可。
    'Screen.ActiveControl.Caption = strmsg
    
Exit Sub

err:

    msgbox "予期せぬエラーが発生" & vbNewLine & _
            err.Number & vbNewLine & _
            err.Description, 16
    Resume Next

End Sub
解説
  1. Sub関数として、レコードの追加プロパティを切り替えるプロシージャを独立させました。

フォームの読み込み時イベントプロシージャの作成

Private Sub Form_Load()

    'キィーボード取得プロパティを可能にする。
    Me.KeyPreview = True
    
End Sub

コマンドボタンクリック時イベントプロシージャの作成

Private Sub Cmd_ボタン_Click()

    'Sub関数AddChangeプロシージャを実行する。
    Call AddChange

End Sub

フォームのキークリック時イベントプロシージャの作成

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
    'Ctrl + Alt キィーが押された場合、Sub関数AddChangeプロシージャを実行する。
  'ビット マスクを利用しています。
    If (Shift And acCtrlMask) > 0 Then
        If (Shift And acAltMask) > 0 Then
            Call AddChange
        End If
    End If
    
    'Ctrlキィーだけが押された場合に動作させるなら、下記プロシージャでも可。
    'If KeyCode = vbKeyControl Then
        'Call AddChange
    'End If
    
End Sub
解説
  1. ビット マスクについては、ここをクリックして下さい。

2003/04/15

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

 


Q&A-005 レコード追加プロパティの切り替えの一例--レコード追加について


 

-Microsoft Access Club-