VBAで定数の配列モドキを作る

VBAの言語仕様上、定数の配列を作る方法が用意されていないらしい*1
そこで、定数の配列の代替となるものを作ってみた。

*1 : 誰か作り方を知ってたら教えて下さい

環境

  • Access 2003 (SP3)

定数の配列モドキ

以下は配列の添え字が増分するごとにアルファベットを1進めるもの

Public Function alphaArray(Byval num As Long) As String
  Select Case num
    Case 0:
      alphaArray = "A"
    Case 1:
      alphaArray = "B"
    Case 2:
      alphaArray = "C"
    (中略)
    Case 25:
      alphaArray = "Z"
    Case Else
      alphaArray = null
  End Select
End Function

[Access] フォーム関連操作

フォームをモーダルに設定

エンドユーザーの興味から発生する余計な操作をさせないために、現在開いているフォーム以外の操作を行えないようにするためにするモーダルプロパティが設定できます。

下記の例は、自分自身以外の操作を受け付けなくする場合の例。

'フォームを開く時の処理
Private Sub Form_Open( Cancel As Integer )
	'モーダルウィンドウ設定
	Me.Modal = True
End Sub

フォームを開いた後に、呼び出し元フォームを閉じる

登録フォームから表示専用のフォームを開くときなど、呼び出し元フォームを閉じたいときの処理。

'フォームを開くプロシージャ
Private Sub barOpen()
	'barForm: 開きたいフォーム
	DoCmd.OpenForm "barForm"
	'fooForm: 呼び出し元フォーム
	DoCmd.Close acForm, "fooForm",  acSaveNo
End Sub

環境

以下の環境で確認しました。

  • Access 2002
  • Windows XP Pro

[Access] 指定文字列を利用した検索結果からコンボボックスのRowSourceを設定

フォーム上に設定したテキストボックスのフォーカス喪失後に、コンボボックスのデータソースを入れ替え、レコードの1番目の値をコンボボックスに設定する

Private Sub fooTb_LostFocus()
	'piyoテーブルのfuga列にテキストボックス「foo」コントロールに
	'入力された文字列と前方一致するレコードを持つhoge列を抽出
	'fooTb: 検索文字列入力用テキストボックス
	Dim getCbListSql As String
	getCbListSql = "SELECT DISTINCT hoge " & _
		"FROM piyo " & _
		"WHERE fuga LIKE '" & Me.fooTb.Value & "*';"
	'コンボボックスに抽出したリストをセット
	'barCb: コンボボックス
	Me.barCb.RowSource = getCbListSQL
	'コンボボックスの初期値をリストの1番目に設定
	If Me.barCb.ListCount >= 1 Then
		Me.barCb.Value = Me.barCb.ItemData(0)
	End If
End Sub

環境

以下の環境で確認しました。

  • Access 2002
  • Windows XP Pro SP2

VBA

お察しください。

ネタ元となったアプリケーション等の環境は各記事を参照してください。