2006年11月10日

VBA:クラスにイベントを作る

クラス
イベントを宣言する。
RaiseEventステートメントでイベントを発行する。

フォーム
クラスをモジュール変数でWithEventsを指定して宣言する。
イベント関数は名前を"クラス変数名_イベント名"にする。
例)ボタンを押すと、リストビューに抽出されたデータが表示される

●クラス:ExtractData

Public Event OnData(ByVal Name As String, ByVal Score As Long, List As Control)

Public Sub ExtractData(ByVal ScoreMin As Integer, ByVal ScoreMax As Integer, List As Control)
Dim SQL As String
    SQL = "select * from スコアテーブル where スコア between " & CStr(ScoreMin) & " and " & CStr(ScoreMax)
    With CurrentDb.OpenRecordset(SQL, dbOpenForwardOnly)
        Do Until .EOF
            RaiseEvent OnData(!名前, !スコア, List)
            .MoveNext
        Loop
        .Close
    End With
End Sub

●フォーム

Private WithEvents ed As ExtractData

Private Sub Exec_Click()
    ScoreList.ListItems.Clear
    Set ed = New ExtractData
    ed.ExtractData 80, 95, ScoreList
End Sub

Private Sub ed_OnData(ByVal Name As String, ByVal Score As Long, List As Control)
    With List.ListItems.Add(, , Name)
        .SubItems(1) = CStr(Score)
    End With
End Sub
posted by 忘却の達人 at 08:16| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック