Access  VBA
Tips1
フォーム・レポート
サブフォームのコントロール(プロパティ)を取得
レコードの移動
画面・ウィンドウ操作
SQL抽出条件のコード記述(データ型)
コンボボックスのリストを表示
アクティブなコントロールを取得
リストボックスのデータ取得
 VBA
Nullのチェック
数値コードの書式
連番
件数カウント
四捨五入
レコードセットでフィールド名に変数を使用
姓名(スペース区切りの名前を分割)


  
Tips1
サブフォームのコントロール(プロパティ)を取得
Forms![フォーム名]![コントロール名].プロパティ名
Forms![フォーム名]![サブフォーム名]![コントロール名]
○コントロールソースでの値の参照
  =[サブフォーム名].[Form]![コントロール名]
  =[R_見積明細サブ].Report![TXT_合計]

○FormおよびReportプロパティを使用して、サブフォームおよびサブレポートのコントロールを参照。
  = Forms!受注!受注明細.Form!受注コード
  = Reports!売り上げ高!社員.Report!総売り上げ額
○サブフォームのサイズ変更
  [サブフォーム名].Height = 10: [サブフォーム名].Width = 10

レコード
○レコードの移動
  Docmd.GoToRecord,,acNewRec (acNext, acPrevious…)
○カレントレコードの番号を取得
  Me.CurrentRecord

画面・ウィンドウ操作
レポートを開く   DoCmd.OpenReport "R_見積書", acViewPreview
フォームを開く   DoCmd.OpenForm "F_請求"
フォームを閉じる   DoCmd.Close acForm, Me.Name

○サブ画面を開く場合
DoCmd.OpenForm "F_フォーム名SUB"
Do Until Screen.ActiveForm.Name <> "F_フォーム名SUB"
  DoEvents
Loop
(サブ画面のフォームのプロパティ、ポップアップ=はい。開く時のイベントでフォームの画面サイズを指定)

○フォームの画面サイズを指定
DoCmd.MoveSize [right][, down][, width][, height]

"文字列" の抽出条件の記述(データ型)
"SELECT … WHERE フィールド名 = " & Me!数値型CTL
"SELECT … WHERE フィールド名 = '" & [TXT_文字列] & "'"
"SELECT … WHERE フィールド名 Like '" & [TXT_文字列] & "*'"

=DLookUp("フィールド名","テーブル名","フィールド名='" & [TXT_文字列] & "'")

…Like "[a-g]*" (aからgまでを検索)

コンボボックスのリストを表示
[CMB_名前].Dropdown
SendKeys "{F4}"

アクティブなコントロールを取得
If Screen.ActiveControl.Section = acHeader Then...
If Screen.ActiveControl.Name = "CMD_終了" Then...

リストボックスのデータ取得
○リストボックスの選択されたデータの件数を取得
  Private Sub LIST_名前_AfterUpdate()
  Dim VAR_ID As Variant
  Dim i As Integer
    For Each VAR_ID In [LIST_名前].ItemsSelected
      i = i + 1
      [LBL_件数].Caption = i
    Next VAR_ID
  End Sub

○リストボックスの選択されたデータを取得
  Dim VAR_ID As Variant
  For Each VAR_ID In [LIST_一覧].ItemsSelected
    Debug.Print [LIST_一覧].ItemData(VAR_ID)
  Next VAR_ID

○リストボックス 「すべて選択」 「すべて解除」
  Private Sub すべて選択ボタン_Click()
  Dim VAR_ID As Integer
    For VAR_ID = 0 To [LIST_一覧].ListCount - 1
      [LIST_一覧].Selected(VAR_ID) = True
    Next VAR_ID
  End Sub
  −−−−−−−−−−−−−−−−−−−−−−−
  Private Sub すべて解除ボタン_Click()
  Dim iintLoop As Integer
    For VAR_ID = 0 To [LIST_一覧].ListCount - 1
      [LIST_一覧].Selected(VAR_ID) = False
    Next VAR_ID
  End Sub

リストボックス


Tips1
Nullのチェック
数値CDなど →Val(Nz([CTL_NAME])) = 0
文字列 など →Nz([CTL_NAME] & "") = ""
       →Len(Trim([CTL_NAME])) = 0

数値コードの書式
番号 = String(5 - Len(番号), "0") & 番号
番号 = Format(番号, "00000")

連番
bango = DMax("フィールド名","テーブル名") + 1

件数カウント
[TXT_件数] = DCount("*", "T_テーブル", "抽出フィールド=" & "[抽出コントロール]")
[TXT_件数] = Me.RecordsetClone.RecordCount   'Me.Requeryの後で

四捨五入
kazu = Int((kazu * 10000) + 0.5) / 10000
kazu = Val(Format(kazu,"0.000"))

レコードセットでフィールド名に変数を使用
SQL = "SELECT * FROM T_言葉 WHERE 言葉ID=" & Val(Nz(RS("言葉ID姓" & i)))
Set R_WRD = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
If R_WRD.EOF = False Then
  R_PRT("言葉ID姓" & i) = R_WRD!言葉ID
  R_PRT("言葉姓" & i) = R_WRD!言葉
End If

姓名(スペース区切り)
Dim Cnt姓 As Integer
Dim Cnt名 As Integer
'姓と名
  Cnt姓 = InStr([名前], " ") - 1
  Cnt名 = Len([名前]) - InStr([名前], " ")
  [TXT_姓] = Left([名前], Cnt姓)
  [TXT_名] = Right([名前], Cnt名)

モジュール