List 7-32 修正したFormCustomerフォームのForm_Loadプロシージャ(変更部分は赤色で示した)
  1: Private Sub Form_Load()
  2:     ' フォームがロードされたときの処理
  3:     Dim objUtility As Business.Utility
  4:     Dim enableFlag As Boolean
  5:     
  6:     ' ユーザーの権限によって,一部のボタンを不可視にする
  7:     On Error GoTo ErrHandle
  8:     
  9:     Set objUtility = CreateObject("Business.Utility")
 10:     
 11:     ' ユーザーのロールを取得する
 12:     g_uRole = objUtility.GetUserInRole()
 13:     
 14:     If g_uRole And (ROLE_ALLADMIN Or ROLE_SALES Or _
                         ROLE_SALESADMIN Or ROLE_SALESMANAGER Or _
                         ROLE_ACCOUNTING Or ROLE_ACCOUNTINGADMIN) Then
 15:         ' 編集権限を持っている
 16:         enableFlag = True
 17:     Else
 18:         ' 編集権限がない
 19:         enableFlag = False
 20:     End If
 21:     
 22:     BTN_NEW.Visible = enableFlag
 23:     BTN_DELETE.Visible = enableFlag
 24:     
 25:     ' 編集ボタンを詳細というラベルに変更するかどうか
 26:     BTN_EDIT.Visible = True
 27:     If enableFlag Then
 28:         BTN_EDIT.Caption = "編集"
 29:     Else
 30         BTN_EDIT.Caption = "詳細"
 31:     End If
 32:     
 33:     If g_uRole And (ROLE_ALLADMIN Or ROLE_SALESADMIN) Then
 34:         ' 復活権限を持っている
 35:         enableFlag = True
 36:     Else
 37:         ' 復活権限を持っていない
 38:         enableFlag = False
 39:     End If
 40:     
 41:     BTN_UNDELETE.Visible = enableFlag
 42:         
 43:     Set objUtility = Nothing
 44:     
 45:     ' データグリッドの中身を最新の情報に更新する
 46:     g_Order = "ID"
 47:     RefreshData
 48:     ' ComboBoxにデータグリッドコントロール内の列名を移す
 49:     SetFieldList
 50:     Exit Sub
 51:     
 52: ErrHandle:
 53:     ' エラーが発生した
 54:     MsgBox Err.Description, vbOKOnly, "顧客情報の環境設定エラー"
 55:     Set objUtility = Nothing
 56: End Sub