Access VBA VBE画面でスニペットっぽくコーディングしてみる。
サイトが引っ越しました。→https://scombu.com
約1秒後に自動的にリダイレクトします。切り替わらない場合はリンクをクリックしてください。
標準モジュールにSnipetModuleって名前でモジュール追加して
下のプロシージャを記述しておく。
VBEのイミディエイト画面で「sni」と入力してCtrl+Spaceで
選択できるので、まぁスニペットっぽく使えるかな?
先人の知恵をお借りしました。へへへ
まぁ、複数人開発での標準化の参考資料にはなりそうですな。
basファイルで受け渡ししてもよいですね。
Attribute VB_Name = "SnipetModule" Option Compare Database Option Explicit Public Function sni_コメントヘッダ() Debug.Print "'--------------------------------------------------------------" Debug.Print "'コメント記述欄 " Debug.Print "'機能をここに記述 " Debug.Print "'--------------------------------------------------------------" End Function Public Function sni_Case() Debug.Print "Dim i As Integer " Debug.Print " i = 2 " Debug.Print " Select Case i " Debug.Print " Case 1 " Debug.Print " MsgBox ""; iの値は1です。; "" " Debug.Print " Case 2 " Debug.Print " MsgBox ""; iの値は2です。; "" " Debug.Print " Case 3 " Debug.Print " MsgBox ""; iの値は3です。; "" " Debug.Print " Case Else " Debug.Print " MsgBox ""; iの値は1, 2, 3; 以外の値です。; """ Debug.Print " End Select " End Function Public Function sni_For() Debug.Print " Dim i As Integer " Debug.Print " For i = 1 To 10 Step 2 " Debug.Print " MsgBox i " Debug.Print " Next i " End Function Public Function sni_DoWhile() Debug.Print "Dim i As Integer " Debug.Print "i=1 " Debug.Print "Do While i < 100 " Debug.Print "i = i + 1 " Debug.Print "Loop " Debug.Print "Msgbox " End Function Public Function sni_DoUntil() Debug.Print " Dim i As Integer " Debug.Print " i=1 " Debug.Print "'100を超えるまでループ 101で抜ける" Debug.Print " Do Until i > 100 " Debug.Print " i = i + 1 " Debug.Print " Loop " Debug.Print " Msgbox i " End Function Public Function sni_SQL_UPDATE() Debug.Print "Dim ct As New ADODB.Connection " Debug.Print "Dim stSQL As String " Debug.Print " " Debug.Print "Set ct = CurrentProject.Connection " Debug.Print "stSQL = ""UPDATE テーブル1 set 中分類=""1"" WHERE 小分類=""3"""; "" Debug.Print "ct.Execute stSQL " Debug.Print " " Debug.Print "Set ct = Nothing " End Function Public Function sni_SQL_DELETE() Debug.Print "Dim cn As ADODB.Connection " Debug.Print "Dim MYSQL As String " Debug.Print "'接続 " Debug.Print "Set cn = CurrentProject.Connection " Debug.Print "'削除 " Debug.Print "MYSQL = ""Delete * FROM テーブル1;"" " Debug.Print "cn.Execute MYSQL " Debug.Print "'終了 " Debug.Print "cn.Close: Set cn = Nothing " End Function Public Function sni_SQL_SELECT典型的() Debug.Print "Dim Cn As ADODB.Connection 'ADOコネクションオブジェクト " Debug.Print "Dim Rs As ADODB.Recordset 'ADOレコードセットオブジェクト " Debug.Print "Dim MySQL As String 'SQL文 " Debug.Print " " Debug.Print "Set Cn = CurrentProject.Connection '現在のデータベースへ接続 " Debug.Print "Set Rs = New ADODB.Recordset 'ADOレコードセットのインスタンス作成 " Debug.Print "MySQL = ""SELECT * FROM テーブル名 WHERE 条件;"" 'SQL文作成 " Debug.Print "Rs.Open MySQL, Cn 'レコード抽出 " Debug.Print " " Debug.Print "If Rs.BOF = True And Rs.EOF = True Then '存在チェック " Debug.Print " MsgBox (""レコードが存在しません"")'メッセージ " Debug.Print "Else " Debug.Print " Do Until Rs.EOF '抽出したレコードが終了するまで処理を繰り返す " Debug.Print " Debug.Print Rs!フィールド名 'フィールドを取り出す " Debug.Print " Rs.MoveNext '次のレコードに移動する " Debug.Print " Loop " Debug.Print "End If " Debug.Print " " Debug.Print "'閉じる " Debug.Print "Rs.Close " Debug.Print "Cn.Close " Debug.Print "'オブジェクトの破棄 " Debug.Print "Set Rs = Nothing " Debug.Print "Set Cn = Nothing " End Function Public Function sni_SQL_レコード処理エラー無し() Debug.Print "Dim ct As New ADODB.Connection " Debug.Print "Dim rs As New ADODB.Recordset " Debug.Print "Dim stSQL As String " Debug.Print " " Debug.Print "'select文の作成 " Debug.Print "stSQL = ""SELECT * FROM テーブル1 WHERE 小分類=""""9"""";""" Debug.Print "stSQL = stSQL & """" " Debug.Print " " Debug.Print "Set ct = CurrentProject.Connection " Debug.Print "rs.CursorLocation = adUseClient " Debug.Print "rs.Open stSQL, ct, adOpenDynamic, adLockOptimistic " Debug.Print " " Debug.Print "If rs.EOF Or rs.BOF Then " Debug.Print " '条件に合うレコードがない場合 " Debug.Print "Else " Debug.Print " '条件に合うレコードがある場合 " Debug.Print " '先頭レコードに移動 " Debug.Print " rs.MoveFirst " Debug.Print " While Not rs.EOF " Debug.Print " MsgBox (rs.Fields(""本文"")) " Debug.Print " '次のレコードに移動 " Debug.Print " rs.MoveNext " Debug.Print " Wend " Debug.Print "End If " Debug.Print " " Debug.Print "'レコードセットを変更する場合はコレ " Debug.Print "'Set Me.Recordset = rs " Debug.Print " " Debug.Print "Set rs = Nothing " Debug.Print "Set ct = Nothing " Debug.Print " " Debug.Print "Me.Requery " End Function Public Function sni_SQL_レコード処理エラー処理付き() Debug.Print "Dim myCn As ADODB.Connection 'ADOコネクションオブジェクト " Debug.Print "Dim myRs As ADODB.Recordset 'ADOレコードセットオブジェクト " Debug.Print "Dim strSQL As String 'SQL文用文字列 " Debug.Print " " Debug.Print "'エラートラップ " Debug.Print "On Error GoTo Err_Exit " Debug.Print " " Debug.Print "'現在のデータベースへ接続 " Debug.Print "Set myCn = CurrentProject.Connection " Debug.Print " " Debug.Print "'ADOレコードセットのインスタンス作成 " Debug.Print "Set myRs = New ADODB.Recordset " Debug.Print " " Debug.Print "'SQL文作成(誕生月指定) " Debug.Print "strSQL = ""SELECT * FROM 顧客テーブル WHERE 誕生月 = 3"" " Debug.Print " " Debug.Print "'レコードセット取得・・・(※1) " Debug.Print "myRs.Open strSQL, myCn, , adLockOptimistic " Debug.Print " " Debug.Print "With myRs " Debug.Print " '対象データがなければ終了 " Debug.Print " If .EOF Or .BOF Then " Debug.Print " MsgBox ""該当データがありません。処理を終了します。"", vbOKOnly + vbInformation " Debug.Print " GoTo End_Proc " Debug.Print " Else " Debug.Print " '先頭レコードに移動 " Debug.Print " .MoveFirst " Debug.Print " While Not .EOF " Debug.Print " 'プレゼント発送日にシステム日付を代入 " Debug.Print " .Fields(""プレゼント発送日"") = Date " Debug.Print " '更新実行 " Debug.Print " .Update " Debug.Print " '次のレコードに移動 " Debug.Print " .MoveNext " Debug.Print " Wend " Debug.Print " End If " Debug.Print "End With " Debug.Print "MsgBox ""処理を終了しました。"", vbOKOnly + vbInformation " Debug.Print "'******** " Debug.Print "End_Proc: " Debug.Print " 'オブジェクトの開放 " Debug.Print " Set myRs = Nothing: Close " Debug.Print " Set myCn = Nothing: Close " Debug.Print " " Debug.Print " Exit Function " Debug.Print " " Debug.Print "Err_Exit: " Debug.Print " 'エラーNOとエラーの詳細を表示 " Debug.Print " MsgBox Err.Number & "":"" & Err.Description, vbOKOnly + vbCritical, ""ADO接続()"" " Debug.Print " 'オブジェクトの開放 " Debug.Print " Set myRs = Nothing: Close " Debug.Print " Set myCn = Nothing: Close " End Function